diff options
author | Marcin Juszkiewicz <marcin@juszkiewicz.com.pl> | 2010-03-05 14:44:03 +0100 |
---|---|---|
committer | Marcin Juszkiewicz <marcin@juszkiewicz.com.pl> | 2010-03-05 17:00:40 +0100 |
commit | c7bf984e0df86fb5c935edafdcd42b736c276f26 (patch) | |
tree | b457d8c35f0ef02993a9c5315a229de61c56dab7 | |
parent | 51e8173bf68e5914bc1c143f19914c19e7eb336a (diff) |
gnutls: added 2.8.5, adapted to new staging
Signed-off-by: Marcin Juszkiewicz <marcin@juszkiewicz.com.pl>
-rw-r--r-- | recipes/gnutls/gnutls-2.8.5/gnutls-openssl.patch | 149 | ||||
-rw-r--r-- | recipes/gnutls/gnutls-2.8.5/gnutls-replace-siginterrupt.patch | 51 | ||||
-rw-r--r-- | recipes/gnutls/gnutls.inc | 19 | ||||
-rw-r--r-- | recipes/gnutls/gnutls_1.4.5.bb | 9 | ||||
-rw-r--r-- | recipes/gnutls/gnutls_1.6.3.bb | 9 | ||||
-rw-r--r-- | recipes/gnutls/gnutls_2.4.2.bb | 9 | ||||
-rw-r--r-- | recipes/gnutls/gnutls_2.8.5.bb | 17 |
7 files changed, 249 insertions, 14 deletions
diff --git a/recipes/gnutls/gnutls-2.8.5/gnutls-openssl.patch b/recipes/gnutls/gnutls-2.8.5/gnutls-openssl.patch new file mode 100644 index 0000000000..596bd01ffe --- /dev/null +++ b/recipes/gnutls/gnutls-2.8.5/gnutls-openssl.patch @@ -0,0 +1,149 @@ +--- + libextra/gnutls_openssl.c | 58 +++++++++++++++++++++++++++++++++++++ + libextra/includes/gnutls/openssl.h | 5 +++ + 2 files changed, 63 insertions(+) + +--- gnutls-2.8.5.orig/libextra/gnutls_openssl.c ++++ gnutls-2.8.5/libextra/gnutls_openssl.c +@@ -256,16 +256,21 @@ SSL_new (SSL_CTX * ctx) + ssl->options = ctx->options; + + ssl->rfd = (gnutls_transport_ptr_t) - 1; + ssl->wfd = (gnutls_transport_ptr_t) - 1; + ++ ssl->ssl_peek_buffer = NULL; ++ ssl->ssl_peek_buffer_size = ssl->ssl_peek_avail = 0; ++ + return ssl; + } + + void + SSL_free (SSL * ssl) + { ++ if (ssl->ssl_peek_buffer) ++ free(ssl->ssl_peek_buffer); + gnutls_certificate_free_credentials (ssl->gnutls_cred); + gnutls_deinit (ssl->gnutls_state); + free (ssl); + } + +@@ -285,10 +290,11 @@ SSL_get_error (SSL * ssl, int ret) + + int + SSL_set_fd (SSL * ssl, int fd) + { + gnutls_transport_set_ptr (ssl->gnutls_state, GNUTLS_INT_TO_POINTER (fd)); ++ ssl->rfd = ssl->wfd = fd; + return 1; + } + + int + SSL_set_rfd (SSL * ssl, int fd) +@@ -310,10 +316,21 @@ SSL_set_wfd (SSL * ssl, int fd) + gnutls_transport_set_ptr2 (ssl->gnutls_state, ssl->rfd, ssl->wfd); + + return 1; + } + ++int SSL_get_rfd(SSL *ssl) ++{ ++ return ssl->rfd; ++} ++ ++int SSL_get_wfd(SSL *ssl) ++{ ++ return ssl->wfd; ++} ++ ++ + void + SSL_set_bio (SSL * ssl, BIO * rbio, BIO * wbio) + { + gnutls_transport_set_ptr2 (ssl->gnutls_state, rbio->fd, wbio->fd); + /* free(BIO); ? */ +@@ -325,10 +342,12 @@ SSL_set_connect_state (SSL * ssl) + } + + int + SSL_pending (SSL * ssl) + { ++ if (ssl->ssl_peek_avail) ++ return ssl->ssl_peek_avail; + return gnutls_record_check_pending (ssl->gnutls_state); + } + + void + SSL_set_verify (SSL * ssl, int verify_mode, +@@ -480,15 +499,54 @@ SSL_shutdown (SSL * ssl) + + /* FIXME */ + return 1; + } + ++int SSL_peek(SSL *ssl, void *buf, int len) ++{ ++ if (len > ssl->ssl_peek_buffer_size) { ++ ssl->ssl_peek_buffer = realloc (ssl->ssl_peek_buffer, len); ++ ssl->ssl_peek_buffer_size = len; ++ } ++ ++ if (ssl->ssl_peek_avail == 0) { ++ ++ int ret; ++ ++ ret = gnutls_record_recv(ssl->gnutls_state, ssl->ssl_peek_buffer, len); ++ ssl->last_error = ret; ++ ++ if (ret > 0) ++ ssl->ssl_peek_avail += ret; ++ } ++ ++ if (len > ssl->ssl_peek_avail) ++ len = ssl->ssl_peek_avail; ++ ++ memcpy (buf, ssl->ssl_peek_buffer, len); ++ ++ return len; ++} ++ + int + SSL_read (SSL * ssl, void *buf, int len) + { + int ret; + ++ if (ssl->ssl_peek_avail) { ++ int n = (ssl->ssl_peek_avail > len) ? len : ssl->ssl_peek_avail; ++ ++ memcpy (buf, ssl->ssl_peek_buffer, n); ++ ++ if (ssl->ssl_peek_avail > n) ++ memmove (ssl->ssl_peek_buffer, ssl->ssl_peek_buffer + n, ssl->ssl_peek_avail - n); ++ ++ ssl->ssl_peek_avail -= n; ++ ++ return n; ++ } ++ + ret = gnutls_record_recv (ssl->gnutls_state, buf, len); + ssl->last_error = ret; + + if (ret < 0) + { +--- gnutls-2.8.5.orig/libextra/includes/gnutls/openssl.h ++++ gnutls-2.8.5/libextra/includes/gnutls/openssl.h +@@ -162,10 +162,15 @@ extern "C" + int (*verify_callback) (int, X509_STORE_CTX *); + int verify_mode; + + gnutls_transport_ptr_t rfd; + gnutls_transport_ptr_t wfd; ++ ++ char *ssl_peek_buffer; ++ size_t ssl_peek_buffer_size; ++ size_t ssl_peek_avail; ++ + }; + + #define rbio gnutls_state + + typedef struct { diff --git a/recipes/gnutls/gnutls-2.8.5/gnutls-replace-siginterrupt.patch b/recipes/gnutls/gnutls-2.8.5/gnutls-replace-siginterrupt.patch new file mode 100644 index 0000000000..b34930f33e --- /dev/null +++ b/recipes/gnutls/gnutls-2.8.5/gnutls-replace-siginterrupt.patch @@ -0,0 +1,51 @@ +--- + src/tests.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +--- gnutls-2.8.5.orig/src/tests.c ++++ gnutls-2.8.5/src/tests.c +@@ -491,10 +491,11 @@ test_bye (gnutls_session_t session) + int ret; + char data[20]; + int old, secs = 6; + + #ifndef _WIN32 ++ struct sigaction act; + signal (SIGALRM, got_alarm); + #endif + + ADD_ALL_CIPHERS (session); + ADD_ALL_COMP (session); +@@ -511,11 +512,13 @@ test_bye (gnutls_session_t session) + ret = gnutls_bye (session, GNUTLS_SHUT_WR); + if (ret < 0) + return TEST_FAILED; + + #ifndef _WIN32 +- old = siginterrupt (SIGALRM, 1); ++ (void) sigaction(SIGALRM, NULL, &act); ++ act.sa_flags &= ~SA_RESTART; ++ old = sigaction(SIGALRM, &act, NULL); + alarm (secs); + #else + setsockopt ((int) gnutls_transport_get_ptr (session), SOL_SOCKET, + SO_RCVTIMEO, (char *) &secs, sizeof (int)); + #endif +@@ -525,11 +528,16 @@ test_bye (gnutls_session_t session) + ret = gnutls_record_recv (session, data, sizeof (data)); + } + while (ret > 0); + + #ifndef _WIN32 +- siginterrupt (SIGALRM, old); ++ (void) sigaction(SIGALRM, NULL, &act); ++ if (old) ++ act.sa_flags &= ~SA_RESTART; ++ else ++ act.sa_flags |= SA_RESTART; ++ sigaction(SIGALRM, &act, NULL); + #else + if (WSAGetLastError () == WSAETIMEDOUT || + WSAGetLastError () == WSAECONNABORTED) + alrm = 1; + #endif diff --git a/recipes/gnutls/gnutls.inc b/recipes/gnutls/gnutls.inc index 004161a9f6..071e9254d1 100644 --- a/recipes/gnutls/gnutls.inc +++ b/recipes/gnutls/gnutls.inc @@ -1,23 +1,20 @@ DESCRIPTION = "GNU Transport Layer Security Library" HOMEPAGE = "http://www.gnu.org/software/gnutls/" -DEPENDS = "zlib libgcrypt lzo guile-native" +DEPENDS = "zlib libgcrypt lzo guile-native gettext" LICENSE = "LGPL" -SRC_URI = "ftp://ftp.gnutls.org/pub/gnutls/gnutls-${PV}.tar.bz2" +SRC_URI = "ftp://ftp.gnutls.org/pub/gnutls/gnutls-${PV}.tar.bz2;name=gnutls" inherit autotools binconfig pkgconfig -EXTRA_OECONF = "--with-included-opencdk --with-included-libtasn1" +INC_PR = "r7" -do_stage() { - oe_libinstall -C lib/.libs -so -a libgnutls ${STAGING_LIBDIR} - oe_libinstall -C libextra/.libs -so -a libgnutls-extra ${STAGING_LIBDIR} - oe_libinstall -C libextra/.libs -so -a libgnutls-openssl ${STAGING_LIBDIR} - autotools_stage_includes +EXTRA_OECONF = "--with-included-opencdk --with-included-libtasn1" +do_install_append() { - install -d ${STAGING_DATADIR}/aclocal - cp ${S}/lib/libgnutls.m4 ${STAGING_DATADIR}/aclocal/ - cp ${S}/libextra/libgnutls-extra.m4 ${STAGING_DATADIR}/aclocal/ + install -d ${D}${datadir}/aclocal + install -m 0644 ${S}/lib/libgnutls.m4 ${D}${datadir}/aclocal/ + install -m 0644 ${S}/libextra/libgnutls-extra.m4 ${D}${datadir}/aclocal/ } PACKAGES =+ "${PN}-openssl ${PN}-extra ${PN}-bin ${PN}-xx" diff --git a/recipes/gnutls/gnutls_1.4.5.bb b/recipes/gnutls/gnutls_1.4.5.bb index a5e58735a0..bda7994e4d 100644 --- a/recipes/gnutls/gnutls_1.4.5.bb +++ b/recipes/gnutls/gnutls_1.4.5.bb @@ -5,4 +5,11 @@ do_configure_prepend() { sed -i s,gcrypt,libgcrypt, lib/gnutls.pc.in } -PR = "r3" +PR = "${INC_PR}.0" + +do_install_append() { + + install -d ${D}${datadir}/aclocal + install -m 0644 ${S}/lib/libgnutls.m4 ${D}${datadir}/aclocal/ + install -m 0644 ${S}/libextra/libgnutls-extra.m4 ${D}${datadir}/aclocal/ +} diff --git a/recipes/gnutls/gnutls_1.6.3.bb b/recipes/gnutls/gnutls_1.6.3.bb index 7a89835237..6b7c24a213 100644 --- a/recipes/gnutls/gnutls_1.6.3.bb +++ b/recipes/gnutls/gnutls_1.6.3.bb @@ -11,4 +11,11 @@ do_configure_prepend() { sed -i s,gcrypt,libgcrypt, lib/gnutls.pc.in } -PR = "r6" +PR = "${INC_PR}.0" + +do_install_append() { + + install -d ${D}${datadir}/aclocal + install -m 0644 ${S}/lib/libgnutls.m4 ${D}${datadir}/aclocal/ + install -m 0644 ${S}/libextra/libgnutls-extra.m4 ${D}${datadir}/aclocal/ +} diff --git a/recipes/gnutls/gnutls_2.4.2.bb b/recipes/gnutls/gnutls_2.4.2.bb index d8266c2c0f..0748887431 100644 --- a/recipes/gnutls/gnutls_2.4.2.bb +++ b/recipes/gnutls/gnutls_2.4.2.bb @@ -8,4 +8,11 @@ SRC_URI += "\ file://gnutls-replace-siginterrupt.patch;patch=1 \ " -PR = "r4" +PR = "${INC_PR}.0" + +do_install_append() { + + install -d ${D}${datadir}/aclocal + install -m 0644 ${S}/lib/libgnutls.m4 ${D}${datadir}/aclocal/ + install -m 0644 ${S}/libextra/libgnutls-extra.m4 ${D}${datadir}/aclocal/ +} diff --git a/recipes/gnutls/gnutls_2.8.5.bb b/recipes/gnutls/gnutls_2.8.5.bb new file mode 100644 index 0000000000..ec8a1188f3 --- /dev/null +++ b/recipes/gnutls/gnutls_2.8.5.bb @@ -0,0 +1,17 @@ +require gnutls.inc +LICENSE_${PN}-extra = "GPLv3" + +SRC_URI += "\ + file://gnutls-openssl.patch;patch=1 \ + file://gnutls-replace-siginterrupt.patch;patch=1 \ + " + +EXTRA_OECONF += " --without-libgcrypt-prefix " + +do_configure_prepend() { + + cd ${S} && rm -rf m4/ aclocal.m4 lib/m4/libtool.m4 lib/m4/lt*m4 +} + +SRC_URI[gnutls.md5sum] = "e3b2788b79bfc82acbe717e3c54d4e92" +SRC_URI[gnutls.sha256sum] = "9249c29df71551e302e0186f4e1876dd6cc4c6cf2974b432c22525dde815cae8" |