[oe] [oe-commits] Marcin Juszkiewicz : gnutls: added 2.8.5, adapted to new staging

Koen Kooi k.kooi at student.utwente.nl
Fri Mar 5 19:59:58 UTC 2010


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 05-03-10 17:59, James Lancaster wrote:
> I'm having this fail, it appears to be a problem with install-info
> (ask if you want the whole log):
> 
>  install-info --info-dir='/home/james/OE/angstrom-dev/work/armv5te-angstrom-linux-gnueabi/gnutls-2.8.5-r0/image/usr/share/info'
> '/home/james/OE/angstrom-dev/work/armv5te-angstrom-linux-gnueabi/gnutls-2.8.5-r0/image/usr/share/info/gnutls.info'
> This is not dpkg install-info anymore, but GNU install-info
> See the man page for ginstall-info for command line argument
> make[4]: Leaving directory
> `/home/james/OE/angstrom-dev/work/armv5te-angstrom-linux-gnueabi/gnutls-2.8.5-r0/gnutls-2.8.5/doc'

I haven't seen that problem, but there are more problems with 2.8.5:

* doesn't ship the .m4 the do_install_append looks for -> build breakage
* doesn't ship a binconfig file anymore -> build breakage for dependant
recipes

I don't have the time or motivation to update all gnutls dependants, so
for angstrom I locked down the version to 2.4.2.

regards,

Koen


> 
> James
> 
> 
> On Fri, Mar 5, 2010 at 10:01 AM, git version control
> <git at git.openembedded.org> wrote:
>> Module: openembedded.git
>> Branch: org.openembedded.dev
>> Commit: c7bf984e0df86fb5c935edafdcd42b736c276f26
>> URL:    http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=c7bf984e0df86fb5c935edafdcd42b736c276f26
>>
>> Author: Marcin Juszkiewicz <marcin at juszkiewicz.com.pl>
>> Date:   Fri Mar  5 14:44:03 2010 +0100
>>
>> gnutls: added 2.8.5, adapted to new staging
>>
>> Signed-off-by: Marcin Juszkiewicz <marcin at juszkiewicz.com.pl>
>>
>> ---
>>
>>  recipes/gnutls/gnutls-2.8.5/gnutls-openssl.patch   |  149 ++++++++++++++++++++
>>  .../gnutls-2.8.5/gnutls-replace-siginterrupt.patch |   51 +++++++
>>  recipes/gnutls/gnutls.inc                          |   19 +--
>>  recipes/gnutls/gnutls_1.4.5.bb                     |    9 +-
>>  recipes/gnutls/gnutls_1.6.3.bb                     |    9 +-
>>  recipes/gnutls/gnutls_2.4.2.bb                     |    9 +-
>>  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 0000000..596bd01
>> --- /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 0000000..b34930f
>> --- /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 004161a..071e925 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 a5e5873..bda7994 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 7a89835..6b7c24a 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 d8266c2..0748887 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 0000000..ec8a118
>> --- /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"
>>
>>
>> _______________________________________________
>> Openembedded-commits mailing list
>> Openembedded-commits at lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-commits
>>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)

iD8DBQFLkWK+MkyGM64RGpERAoAbAJ9yYwVnzJnm78dZ07mwkNr15wVcUwCgm3CV
CDYtPGl/k+JagH9mQEElN/w=
=mCSn
-----END PGP SIGNATURE-----





More information about the Openembedded-devel mailing list