commit:     bb2668b25a60043cebec65fdcfa9c1082495d7b7
Author:     Matthew Thode <prometheanfire <AT> gentoo <DOT> org>
AuthorDate: Sun Dec  3 23:16:30 2017 +0000
Commit:     Matt Thode <prometheanfire <AT> gentoo <DOT> org>
CommitDate: Sun Dec  3 23:16:58 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bb2668b2

net-misc/wget: fix build on openssl 1.1

Package-Manager: Portage-2.3.14, Repoman-2.3.6

 net-misc/wget/Manifest                             |   4 +-
 .../wget/files/wget-1.92.2-openssl-1.1.0-r1.patch  |  80 +++++++++++++++
 net-misc/wget/wget-1.19.2-r2.ebuild                | 114 +++++++++++++++++++++
 3 files changed, 196 insertions(+), 2 deletions(-)

diff --git a/net-misc/wget/Manifest b/net-misc/wget/Manifest
index b0bee83e879..0cd18ff7446 100644
--- a/net-misc/wget/Manifest
+++ b/net-misc/wget/Manifest
@@ -1,2 +1,2 @@
-DIST wget-1.19.1.tar.xz 2111756 SHA256 
0c950b9671881222a4d385b013c9604e98a8025d1988529dfca0e93617744cd2 SHA512 
00864d225439bcb7c5af01d7ef19efa615427812d3320ab3f4c8f62c38191e837b1392397843f935d7dc5860a4d0ce89ee31f2730c4a729402f1f2bf3e5f64e5
 WHIRLPOOL 
2a4bd80f1e7134637227609f532ee3385472a6895ff22efeface42d082072a09abaa5dd2d8653bfdab015de801d31426b01d73ab5dd1a6864b84c29dc8e72462
-DIST wget-1.19.2.tar.gz 4349267 SHA256 
4f4a673b6d466efa50fbfba796bd84a46ae24e370fa562ede5b21ab53c11a920 SHA512 
a0f8afcc0767a8fd1acd64b1b1b27d177bc938e70cc3709c1b3faa6c1426ec926642cd8e49d292cec0268ee507683539b5152072110106de5a728a03efd8cedd
 WHIRLPOOL 
64398a8fc132a21d81d6fd7c97335739525fb8b31eca4aa4aa7048f251691c05ad1f004c36d6e633abf02d174ffefcb2176213e68fefb76bce505d247940af3a
+DIST wget-1.19.1.tar.xz 2111756 BLAKE2B 
e5dcaa791f78bb2d7de19a6f689430cd692e1232b7392102936e5f3b4e3592861bcfc78e27df0c4b02a9002ce4c755e765a0a51749670464789fc9f07f8787f7
 SHA512 
00864d225439bcb7c5af01d7ef19efa615427812d3320ab3f4c8f62c38191e837b1392397843f935d7dc5860a4d0ce89ee31f2730c4a729402f1f2bf3e5f64e5
+DIST wget-1.19.2.tar.gz 4349267 BLAKE2B 
3622d39ea477d4137bd7f2a443d141d8832e2e1adf4dceb5c396aea782fee31bd69ad2b49771062f25c57e6a21701f844077000dfa175e89eae26cf4c3fdca09
 SHA512 
a0f8afcc0767a8fd1acd64b1b1b27d177bc938e70cc3709c1b3faa6c1426ec926642cd8e49d292cec0268ee507683539b5152072110106de5a728a03efd8cedd

diff --git a/net-misc/wget/files/wget-1.92.2-openssl-1.1.0-r1.patch 
b/net-misc/wget/files/wget-1.92.2-openssl-1.1.0-r1.patch
new file mode 100644
index 00000000000..79f33b15759
--- /dev/null
+++ b/net-misc/wget/files/wget-1.92.2-openssl-1.1.0-r1.patch
@@ -0,0 +1,80 @@
+--- a/src/openssl.c
++++ b/src/openssl.c
+@@ -174,11 +174,16 @@ ssl_init (void)
+ {
+   SSL_METHOD const *meth;
+   long ssl_options = 0;
++#if !defined(LIBRESSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER >= 
0x10100000L)
++  int ssl_proto_version = 0;
++#endif
+ 
+ #if OPENSSL_VERSION_NUMBER >= 0x00907000
+   if (ssl_true_initialized == 0)
+     {
++#if OPENSSL_API_COMPAT < 0x10100000L
+       OPENSSL_config (NULL);
++#endif
+       ssl_true_initialized = 1;
+     }
+ #endif
+@@ -202,8 +207,12 @@ ssl_init (void)
+   CONF_modules_load_file(NULL, NULL,
+       CONF_MFLAGS_DEFAULT_SECTION|CONF_MFLAGS_IGNORE_MISSING_FILE);
+ #endif
++#if OPENSSL_API_COMPAT >= 0x10100000L
++  OPENSSL_init_ssl(0, NULL);
++#else
+   SSL_library_init ();
+   SSL_load_error_strings ();
++#endif
+ #if OPENSSL_VERSION_NUMBER < 0x10100000L
+   SSLeay_add_all_algorithms ();
+   SSLeay_add_ssl_algorithms ();
+@@ -229,16 +238,31 @@ ssl_init (void)
+       ssl_options |= SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3;
+       break;
+     case secure_protocol_tlsv1:
++#if !defined(LIBRESSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER >= 
0x10100000L)
++      meth = TLS_client_method();
++      ssl_proto_version = TLS1_VERSION;
++#else
+       meth = TLSv1_client_method ();
++#endif
+       break;
+ 
+ #if OPENSSL_VERSION_NUMBER >= 0x10001000
+     case secure_protocol_tlsv1_1:
++#if !defined(LIBRESSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER >= 
0x10100000L)
++      meth = TLS_client_method();
++      ssl_proto_version = TLS1_1_VERSION;
++#else
+       meth = TLSv1_1_client_method ();
++#endif
+       break;
+ 
+     case secure_protocol_tlsv1_2:
++#if !defined(LIBRESSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER >= 
0x10100000L)
++      meth = TLS_client_method();
++      ssl_proto_version = TLS1_2_VERSION;
++#else
+       meth = TLSv1_2_client_method ();
++#endif
+       break;
+ #else
+     case secure_protocol_tlsv1_1:
+@@ -262,8 +286,15 @@ ssl_init (void)
+   if (!ssl_ctx)
+     goto error;
+ 
++#if !defined(LIBRESSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER >= 
0x10100000L)
+   if (ssl_options)
+     SSL_CTX_set_options (ssl_ctx, ssl_options);
++#endif
++
++#if !defined(LIBRESSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER 
>=0x10100000L)
++  if (ssl_proto_version)
++    SSL_CTX_set_min_proto_version(ssl_ctx, ssl_proto_version);
++#endif
+ 
+   /* OpenSSL ciphers: https://www.openssl.org/docs/apps/ciphers.html
+    * Since we want a good protection, we also use HIGH (that excludes MD4 
ciphers and some more)

diff --git a/net-misc/wget/wget-1.19.2-r2.ebuild 
b/net-misc/wget/wget-1.19.2-r2.ebuild
new file mode 100644
index 00000000000..b1bda330b2e
--- /dev/null
+++ b/net-misc/wget/wget-1.19.2-r2.ebuild
@@ -0,0 +1,114 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+PYTHON_COMPAT=( python3_{4,5,6} )
+
+inherit flag-o-matic python-any-r1 toolchain-funcs
+
+DESCRIPTION="Network utility to retrieve files from the WWW"
+HOMEPAGE="https://www.gnu.org/software/wget/";
+SRC_URI="mirror://gnu/wget/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 
~sh ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~sparc-fbsd ~x86-fbsd 
~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint 
~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="debug gnutls idn ipv6 libressl nls ntlm pcre +ssl static test uuid zlib"
+REQUIRED_USE=" ntlm? ( !gnutls ssl ) gnutls? ( ssl )"
+
+PATCHES=( 
"${FILESDIR}"/${PN}-1.19.2-fix-segfault-due-to-derefencing-null-ptr.patch
+       "${FILESDIR}"/${PN}-1.92.2-openssl-1.1.0-r1.patch )
+
+# Force a newer libidn2 to avoid libunistring deps. #612498
+LIB_DEPEND="idn? ( >=net-dns/libidn2-0.14[static-libs(+)] )
+       pcre? ( dev-libs/libpcre[static-libs(+)] )
+       ssl? (
+               gnutls? ( net-libs/gnutls:0=[static-libs(+)] )
+               !gnutls? (
+                       !libressl? ( dev-libs/openssl:0=[static-libs(+)] )
+                       libressl? ( dev-libs/libressl[static-libs(+)] )
+               )
+       )
+       uuid? ( sys-apps/util-linux[static-libs(+)] )
+       zlib? ( sys-libs/zlib[static-libs(+)] )"
+RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs(+)]} )"
+DEPEND="${RDEPEND}
+       app-arch/xz-utils
+       virtual/pkgconfig
+       static? ( ${LIB_DEPEND} )
+       test? (
+               ${PYTHON_DEPS}
+               dev-lang/perl
+               dev-perl/HTTP-Daemon
+               dev-perl/HTTP-Message
+               dev-perl/IO-Socket-SSL
+       )
+       nls? ( sys-devel/gettext )"
+
+DOCS=( AUTHORS MAILING-LIST NEWS README doc/sample.wgetrc )
+
+pkg_setup() {
+       use test && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+       default
+
+       # revert some hack that breaks linking, bug #585924
+       if [[ ${CHOST} == *-darwin* ]] \
+       || [[ ${CHOST} == *-solaris* ]] \
+       || [[ ${CHOST} == *-uclibc* ]] \
+       || [[ ${CHOST} == *-cygwin* ]] \
+       ; then
+               sed -i \
+                       -e 's/^  LIBICONV=$/:/' \
+                       configure || die
+       fi
+}
+
+src_configure() {
+       # fix compilation on Solaris, we need filio.h for FIONBIO as used in
+       # the included gnutls -- force ioctl.h to include this header
+       [[ ${CHOST} == *-solaris* ]] && append-cppflags -DBSD_COMP=1
+
+       if use static ; then
+               append-ldflags -static
+               tc-export PKG_CONFIG
+               PKG_CONFIG+=" --static"
+       fi
+
+       # There is no flag that controls this.  libunistring-prefix only
+       # controls the search path (which is why we turn it off below).
+       # Further, libunistring is only needed w/older libidn2 installs,
+       # and since we force the latest, we can force off libunistring. #612498
+       ac_cv_libunistring=no \
+       econf \
+               --disable-assert \
+               --disable-rpath \
+               --without-included-libunistring \
+               --without-libunistring-prefix \
+               $(use_enable debug) \
+               $(use_enable idn iri) \
+               $(use_enable ipv6) \
+               $(use_enable nls) \
+               $(use_enable ntlm) \
+               $(use_enable pcre) \
+               $(use_enable ssl digest) \
+               $(use_enable ssl opie) \
+               $(use_with idn libidn) \
+               $(use_with ssl ssl $(usex gnutls gnutls openssl)) \
+               $(use_with uuid libuuid) \
+               $(use_with zlib)
+}
+
+src_install() {
+       default
+
+       sed -i \
+               -e "s:/usr/local/etc:${EPREFIX}/etc:g" \
+               "${ED}"/etc/wgetrc \
+               "${ED}"/usr/share/man/man1/wget.1 \
+               "${ED}"/usr/share/info/wget.info \
+               || die
+}

Reply via email to