From b87bd835aaa06a7d303fd513de972bf8660ca0f0 Mon Sep 17 00:00:00 2001 From: Andreas Sturmlechner Date: Sun, 2 Dec 2018 21:32:18 +0100 Subject: net-voip/telepathy-salut: Fix build with openssl-1.1 Closes: https://bugs.gentoo.org/663994 Package-Manager: Portage-2.3.52, Repoman-2.3.12 Signed-off-by: Andreas Sturmlechner --- .../files/telepathy-salut-0.8.1-openssl-1.1.patch | 188 +++++++++++++++++++++ .../telepathy-salut-0.8.1-r2.ebuild | 81 +++++++++ 2 files changed, 269 insertions(+) create mode 100644 net-voip/telepathy-salut/files/telepathy-salut-0.8.1-openssl-1.1.patch create mode 100644 net-voip/telepathy-salut/telepathy-salut-0.8.1-r2.ebuild (limited to 'net-voip/telepathy-salut') diff --git a/net-voip/telepathy-salut/files/telepathy-salut-0.8.1-openssl-1.1.patch b/net-voip/telepathy-salut/files/telepathy-salut-0.8.1-openssl-1.1.patch new file mode 100644 index 000000000000..2f4c74e24202 --- /dev/null +++ b/net-voip/telepathy-salut/files/telepathy-salut-0.8.1-openssl-1.1.patch @@ -0,0 +1,188 @@ +From 68e7fb2f17dd9348e586ef676d8138c4b849a1ce Mon Sep 17 00:00:00 2001 +From: Roel Aaij +Date: Fri, 26 Oct 2018 15:01:37 +0200 +Subject: [PATCH] openssl: fix build with openssl >= 1.1.0 + +--- + wocky/wocky-openssl-dh1024.c | 10 ++++++++++ + wocky/wocky-openssl-dh2048.c | 10 ++++++++++ + wocky/wocky-openssl-dh4096.c | 10 ++++++++++ + wocky/wocky-openssl-dh512.c | 10 ++++++++++ + wocky/wocky-openssl.c | 38 ++++++++++++++++++++++++++++++++---- + 5 files changed, 74 insertions(+), 4 deletions(-) + +diff --git a/lib/ext/wocky/wocky/wocky-openssl-dh1024.c b/lib/ext/wocky/wocky/wocky-openssl-dh1024.c +index b77fb4c..bb50523 100644 +--- a/lib/ext/wocky/wocky/wocky-openssl-dh1024.c ++++ b/lib/ext/wocky/wocky/wocky-openssl-dh1024.c +@@ -25,11 +25,21 @@ DH *get_dh1024(void) + 0x02, + }; + DH *dh; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++ int r = 0; ++#endif + + if ((dh=DH_new()) == NULL) return(NULL); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++ r = DH_set0_pqg(dh, BN_bin2bn(dh1024_p,sizeof(dh1024_p),NULL), ++ NULL, BN_bin2bn(dh1024_g,sizeof(dh1024_g),NULL)); ++ if (!r) ++ { DH_free(dh); return(NULL); } ++#else + dh->p=BN_bin2bn(dh1024_p,sizeof(dh1024_p),NULL); + dh->g=BN_bin2bn(dh1024_g,sizeof(dh1024_g),NULL); + if ((dh->p == NULL) || (dh->g == NULL)) + { DH_free(dh); return(NULL); } ++#endif + return(dh); + } +diff --git a/lib/ext/wocky/wocky/wocky-openssl-dh2048.c b/lib/ext/wocky/wocky/wocky-openssl-dh2048.c +index c16deb7..d53ceda 100644 +--- a/lib/ext/wocky/wocky/wocky-openssl-dh2048.c ++++ b/lib/ext/wocky/wocky/wocky-openssl-dh2048.c +@@ -36,11 +36,21 @@ DH *get_dh2048(void) + 0x02, + }; + DH *dh; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++ int r = 0; ++#endif + + if ((dh=DH_new()) == NULL) return(NULL); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++ r = DH_set0_pqg(dh, BN_bin2bn(dh2048_p,sizeof(dh2048_p),NULL), ++ NULL, BN_bin2bn(dh2048_g,sizeof(dh2048_g),NULL)); ++ if (!r) ++ { DH_free(dh); return(NULL); } ++#else + dh->p=BN_bin2bn(dh2048_p,sizeof(dh2048_p),NULL); + dh->g=BN_bin2bn(dh2048_g,sizeof(dh2048_g),NULL); + if ((dh->p == NULL) || (dh->g == NULL)) + { DH_free(dh); return(NULL); } ++#endif + return(dh); + } +diff --git a/lib/ext/wocky/wocky/wocky-openssl-dh4096.c b/lib/ext/wocky/wocky/wocky-openssl-dh4096.c +index 2854385..93fa7e5 100644 +--- a/lib/ext/wocky/wocky/wocky-openssl-dh4096.c ++++ b/lib/ext/wocky/wocky/wocky-openssl-dh4096.c +@@ -57,11 +57,21 @@ DH *get_dh4096(void) + 0x02, + }; + DH *dh; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++ int r = 0; ++#endif + + if ((dh=DH_new()) == NULL) return(NULL); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++ r = DH_set0_pqg(dh, BN_bin2bn(dh4096_p,sizeof(dh4096_p),NULL), ++ NULL, BN_bin2bn(dh4096_g,sizeof(dh4096_g),NULL)); ++ if (!r) ++ { DH_free(dh); return(NULL); } ++#else + dh->p=BN_bin2bn(dh4096_p,sizeof(dh4096_p),NULL); + dh->g=BN_bin2bn(dh4096_g,sizeof(dh4096_g),NULL); + if ((dh->p == NULL) || (dh->g == NULL)) + { DH_free(dh); return(NULL); } ++#endif + return(dh); + } +diff --git a/lib/ext/wocky/wocky/wocky-openssl-dh512.c b/lib/ext/wocky/wocky/wocky-openssl-dh512.c +index 8e7a278..c2891cd 100644 +--- a/lib/ext/wocky/wocky/wocky-openssl-dh512.c ++++ b/lib/ext/wocky/wocky/wocky-openssl-dh512.c +@@ -20,11 +20,21 @@ DH *get_dh512(void) + 0x02, + }; + DH *dh; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++ int r = 0; ++#endif + + if ((dh=DH_new()) == NULL) return(NULL); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++ r = DH_set0_pqg(dh, BN_bin2bn(dh512_p,sizeof(dh512_p),NULL), ++ NULL, BN_bin2bn(dh512_g,sizeof(dh512_g),NULL)); ++ if (!r) ++ { DH_free(dh); return(NULL); } ++#else + dh->p=BN_bin2bn(dh512_p,sizeof(dh512_p),NULL); + dh->g=BN_bin2bn(dh512_g,sizeof(dh512_g),NULL); + if ((dh->p == NULL) || (dh->g == NULL)) + { DH_free(dh); return(NULL); } ++#endif + return(dh); + } +diff --git a/lib/ext/wocky/wocky/wocky-openssl.c b/lib/ext/wocky/wocky/wocky-openssl.c +index 2201213..18f9981 100644 +--- a/lib/ext/wocky/wocky/wocky-openssl.c ++++ b/lib/ext/wocky/wocky/wocky-openssl.c +@@ -885,7 +885,11 @@ check_peer_name (const char *target, X509 *cert) + int i; + gboolean rval = FALSE; + X509_NAME *subject = X509_get_subject_name (cert); +- X509_CINF *ci = cert->cert_info; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++ const STACK_OF(X509_EXTENSION)* extensions = X509_get0_extensions(cert); ++#else ++ const STACK_OF(X509_EXTENSION)* extensions = cert->cert_info->extensions; ++#endif + static const long nid[] = { NID_commonName, NID_subject_alt_name, NID_undef }; + + /* first, see if the x509 name contains the info we want: */ +@@ -906,16 +910,21 @@ check_peer_name (const char *target, X509 *cert) + * and extract the subject_alt_name from the x509 v3 extensions: if that * + * extension is present, and a string, use that. If it is present, and * + * a multi-value stack, trawl it for the "DNS" entry and use that */ +- if (!rval && (ci->extensions != NULL)) +- for (i = 0; i < sk_X509_EXTENSION_num(ci->extensions) && !rval; i++) ++ if (!rval && (extensions != NULL)) ++ for (i = 0; i < sk_X509_EXTENSION_num(extensions) && !rval; i++) + { +- X509_EXTENSION *ext = sk_X509_EXTENSION_value (ci->extensions, i); ++ X509_EXTENSION *ext = sk_X509_EXTENSION_value (extensions, i); + ASN1_OBJECT *obj = X509_EXTENSION_get_object (ext); + X509V3_EXT_METHOD *convert = NULL; + long ni = OBJ_obj2nid (obj); + const guchar *p; + char *value = NULL; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++ const ASN1_OCTET_STRING* ext_value = X509_EXTENSION_get_data(ext); ++ int len = ASN1_STRING_length(ext_value); ++#else + int len = ext->value->length; ++#endif + void *ext_str = NULL; + + if (ni != NID_subject_alt_name) +@@ -927,7 +936,11 @@ check_peer_name (const char *target, X509 *cert) + if ((convert = (X509V3_EXT_METHOD *) X509V3_EXT_get (ext)) == NULL) + continue; + ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++ p = ASN1_STRING_get0_data(ext_value); ++#else + p = ext->value->data; ++#endif + ext_str = ((convert->it != NULL) ? + ASN1_item_d2i (NULL, &p, len, ASN1_ITEM_ptr(convert->it)) : + convert->d2i (NULL, &p, len) ); +@@ -1675,12 +1701,16 @@ wocky_tls_session_init (WockyTLSSession *session) + + if G_UNLIKELY (g_once_init_enter (&initialised)) + { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) ++ DEBUG ("initialising SSL library and error strings"); ++#else + gint malloc_init_succeeded; + + DEBUG ("initialising SSL library and error strings"); + + malloc_init_succeeded = CRYPTO_malloc_init (); + g_warn_if_fail (malloc_init_succeeded); ++#endif + + SSL_library_init (); + SSL_load_error_strings (); diff --git a/net-voip/telepathy-salut/telepathy-salut-0.8.1-r2.ebuild b/net-voip/telepathy-salut/telepathy-salut-0.8.1-r2.ebuild new file mode 100644 index 000000000000..21535ca1b82e --- /dev/null +++ b/net-voip/telepathy-salut/telepathy-salut-0.8.1-r2.ebuild @@ -0,0 +1,81 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +PYTHON_COMPAT=( python2_7 ) +inherit python-any-r1 + +DESCRIPTION="A link-local XMPP connection manager for Telepathy" +HOMEPAGE="https://telepathy.freedesktop.org/" +SRC_URI="https://telepathy.freedesktop.org/releases/${PN}/${P}.tar.gz" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-linux" +IUSE="gnutls test" + +RDEPEND=" + >=dev-libs/dbus-glib-0.61 + dev-libs/libxml2 + >=dev-libs/glib-2.28:2 + >=sys-apps/dbus-1.1.0 + >=net-libs/telepathy-glib-0.17.1 + >=net-dns/avahi-0.6.22[dbus] + net-libs/libsoup:2.4 + sys-apps/util-linux + dev-db/sqlite:3 + gnutls? ( >=net-libs/gnutls-2.10.2 ) + !gnutls? ( >=dev-libs/openssl-0.9.8g:0[-bindist] ) +" +DEPEND="${RDEPEND} + ${PYTHON_DEPS} + dev-libs/libxslt + virtual/pkgconfig + test? ( + >=dev-libs/check-0.9.4 + net-libs/libgsasl + || ( + $(python_gen_any_dep 'dev-python/twisted[${PYTHON_USEDEP}]') + $(python_gen_any_dep 'dev-python/twisted-words[${PYTHON_USEDEP}]') + ) + ) +" +# FIXME: needs xmppstream python module +# >=net-dns/avahi-0.6.22[python] + +PATCHES=( + "${FILESDIR}"/${PN}-0.5.0-uninitialized.patch # upstream bug #37701 + "${FILESDIR}"/${P}-openssl-1.1.patch # bug #663994 +) + +python_check_deps() { + if use test ; then + has_version "dev-python/twisted[${PYTHON_USEDEP}]" \ + || has_version "dev-python/twisted-words[${PYTHON_USEDEP}]" + fi +} + +pkg_setup() { + python-any-r1_pkg_setup +} + +src_configure() { + econf \ + --disable-coding-style-checks \ + --disable-plugins \ + --disable-Werror \ + --disable-static \ + --disable-avahi-tests \ + --docdir=/usr/share/doc/${PF} \ + --with-tls=$(usex gnutls gnutls openssl) + #$(use_enable test avahi-tests) + + # false positives according to bug #413581: + # unrecognized options: --disable-plugins, --disable-avahi-tests +} + +src_install() { + MAKEOPTS+=" -j1" default # bug 413581 + find "${D}" -name '*.la' -delete || die +} -- cgit v1.2.3-65-gdbad