Gentoo Archives: gentoo-commits

From: Thomas Deutschmann <whissi@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-libs/openssl/files/, dev-libs/openssl/
Date: Wed, 11 Sep 2019 23:30:22
Message-Id: 1568244597.4019a4b1ce71d416d04cafcb76d6be4719e8ecbd.whissi@gentoo
1 commit: 4019a4b1ce71d416d04cafcb76d6be4719e8ecbd
2 Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
3 AuthorDate: Wed Sep 11 23:19:30 2019 +0000
4 Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
5 CommitDate: Wed Sep 11 23:29:57 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4019a4b1
7
8 dev-libs/openssl: bump to v1.1.0l
9
10 Package-Manager: Portage-2.3.75, Repoman-2.3.17
11 Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>
12
13 dev-libs/openssl/Manifest | 2 +
14 .../openssl-1.1.0l-fix-no-ec2m-in-ec_curve.c.patch | 30 ++
15 dev-libs/openssl/openssl-1.1.0l.ebuild | 305 +++++++++++++++++++++
16 3 files changed, 337 insertions(+)
17
18 diff --git a/dev-libs/openssl/Manifest b/dev-libs/openssl/Manifest
19 index c6474b63d35..fd03dd1eb9b 100644
20 --- a/dev-libs/openssl/Manifest
21 +++ b/dev-libs/openssl/Manifest
22 @@ -9,6 +9,8 @@ DIST openssl-1.0.2s_ectest.c 30735 BLAKE2B 95333a27f1cf0a4305a3cee7f6d46b9d46735
23 DIST openssl-1.0.2s_hobble-openssl 1302 BLAKE2B 647caa6a0f4c53a2e77baa3b8e5961eaef3bb0ff38e7d5475eab8deef3439f7fe49028ec9ed0406f3453870b62cac67c496b3a048ee4c9ff4c6866d520235960 SHA512 3d757a4708e74a03dd5cb9b8114dfe442ed9520739a6eca693be4c4265771696f1449ea06d1c9bcfc6e94fc9b0dd0c10e153f1c3b0334831c0550b36cd63326e
24 DIST openssl-1.1.0k-bindist-1.0.tar.xz 11716 BLAKE2B c491ba0899c44dbcc63f85b255548c439c965a20a04ac2a6324a4122c4691b7c95ec18e62be6d708a7ea62ea197d32e5091987cb5043969878f89e5bc26243d4 SHA512 1d5bc9d7b24cf55d32d996e2421d43a1218b605720293f00d07814afb481387856f0dc000ad3c3e4cba2361055668cfe79a945be44ab85a249555f37e683a909
25 DIST openssl-1.1.0k.tar.gz 5287321 BLAKE2B fce40a399f5a08d5fe183dfcaab11b211d982885fb9888b25fa41bdd9919ecd203fca6f573363cfb42c9a0776ae69ea50b0f144227a3f28ca0dbadf878d396bc SHA512 65f41a240a97d79504c0e1391fde8ac8692f0993437cdc35e4bc964ecc36e5ef75a62499c4c6cb4ce63f892135e06dba2d3594c8869d935554296fa3c6ccd822
26 +DIST openssl-1.1.0l-bindist-1.0.tar.xz 13168 BLAKE2B 1fbd1f7bdba08f14e21485175232283c2309687021a526b4a132b676d7f9429577f8f14e180fb4f59ef24bc9c06873a6936e64559a901803a3f1d21453177b50 SHA512 f664a6876a2a9c7467bbc6a436593eb21cc6be51e08408657f34b67fa69cd6bece3cc65f60220d7e41f36b359b5299adf49a59ede7f8f738d6a31e29d2a49714
27 +DIST openssl-1.1.0l.tar.gz 5294857 BLAKE2B 0e4f30f9e8a22414325bd780dc4e875e962487fbe72967f0392ace959955429192541881a98d097d7bb75ed7238b1817b0c3c2c4da04421512bd538f2b07cdd7 SHA512 81b74149f40ea7d9f7e235820a4f977844653ad1e2b302e65e712c12193f47542fe7e3385fd1e25e3dd074e4e6d04199836cbc492656f5a7692edab5e234f4ad
28 DIST openssl-1.1.1c-bindist-1.0.tar.xz 11964 BLAKE2B 8c5190846d13984589a150089d329bb3ecc613788b9462c6f6a1833a040e21cb9bf940140449f09fd797c0e396b0aea073237be374bd16097795b8974c3e7ce5 SHA512 249c6d8c455130b98e3be635f12f323e0cc349f1770648bad591e5de15483917185a473c162ed871a2fa05b47056931e6f12e5fdd9cecee7e6d1c246b862923b
29 DIST openssl-1.1.1c.tar.gz 8864262 BLAKE2B bd157b244bedcefb8e646a743732945119b267236789ac69c38856570318aca09299bdaaea3f20294863b633e6fd4dfe124820597185b3b7461cfdf094daadb0 SHA512 8e2c5cc11c120efbb7d7850980cb6eaa782d29b4996b3f3378d37613c1679f852d7cc08a90d62e78fcec3439f06bdbee70064579a8c2adaffd91532a97f646ff
30 DIST openssl-1.1.1d-bindist-1.0.tar.xz 13180 BLAKE2B 680bd7400d3dd3930067ee7efa9718b74b30afa9be2397ad80f88031920806b6603b6469beede02b6e7a742abf5f82ebdd7c9b8e69c1ffe223e4860dc9581128 SHA512 9e4296326852010d5cebc204d1a34a34198d8d65460bc91a2bd37c80be892a5ae519513e4b0109e6b51b6faab0e171ef6cdae868868c158711558d147083c06f
31
32 diff --git a/dev-libs/openssl/files/openssl-1.1.0l-fix-no-ec2m-in-ec_curve.c.patch b/dev-libs/openssl/files/openssl-1.1.0l-fix-no-ec2m-in-ec_curve.c.patch
33 new file mode 100644
34 index 00000000000..35a435df28b
35 --- /dev/null
36 +++ b/dev-libs/openssl/files/openssl-1.1.0l-fix-no-ec2m-in-ec_curve.c.patch
37 @@ -0,0 +1,30 @@
38 +From bcf6a94c4bc912ad313ea21abdf7e83bbae450e5 Mon Sep 17 00:00:00 2001
39 +From: Nicola Tuveri <nic.tuv@×××××.com>
40 +Date: Thu, 12 Sep 2019 01:57:47 +0300
41 +Subject: [PATCH] Fix no-ec2m in ec_curve.c (1.1.0)
42 +
43 +I made a mistake in d4a5dac9f9242c580fb9d0a4389440eccd3494a7 and
44 +inverted the GF2m and GFp calls in ec_point_get_affine_coordinates, this
45 +fixes it.
46 +---
47 + crypto/ec/ec_curve.c | 4 ++--
48 + 1 file changed, 2 insertions(+), 2 deletions(-)
49 +
50 +diff --git a/crypto/ec/ec_curve.c b/crypto/ec/ec_curve.c
51 +index 2d28d7f70bb..6a58b3a23e0 100644
52 +--- a/crypto/ec/ec_curve.c
53 ++++ b/crypto/ec/ec_curve.c
54 +@@ -3200,11 +3200,11 @@ int ec_point_get_affine_coordinates(const EC_GROUP *group,
55 +
56 + #ifndef OPENSSL_NO_EC2M
57 + if (field_nid == NID_X9_62_characteristic_two_field) {
58 +- return EC_POINT_get_affine_coordinates_GFp(group, point, x, y, ctx);
59 ++ return EC_POINT_get_affine_coordinates_GF2m(group, point, x, y, ctx);
60 + } else
61 + #endif /* !def(OPENSSL_NO_EC2M) */
62 + if (field_nid == NID_X9_62_prime_field) {
63 +- return EC_POINT_get_affine_coordinates_GF2m(group, point, x, y, ctx);
64 ++ return EC_POINT_get_affine_coordinates_GFp(group, point, x, y, ctx);
65 + } else {
66 + /* this should never happen */
67 + return 0;
68
69 diff --git a/dev-libs/openssl/openssl-1.1.0l.ebuild b/dev-libs/openssl/openssl-1.1.0l.ebuild
70 new file mode 100644
71 index 00000000000..09b9314d05c
72 --- /dev/null
73 +++ b/dev-libs/openssl/openssl-1.1.0l.ebuild
74 @@ -0,0 +1,305 @@
75 +# Copyright 1999-2019 Gentoo Authors
76 +# Distributed under the terms of the GNU General Public License v2
77 +
78 +EAPI="7"
79 +
80 +inherit flag-o-matic toolchain-funcs multilib multilib-minimal
81 +
82 +MY_P=${P/_/-}
83 +
84 +# This patch set is based on the following files from Fedora 28,
85 +# see https://src.fedoraproject.org/rpms/openssl/blob/f28/f/openssl.spec
86 +# for more details:
87 +# - hobble-openssl (SOURCE1)
88 +# - ec_curve.c (SOURCE12) -- MODIFIED
89 +# - ectest.c (SOURCE13)
90 +# - openssl-1.1.0-ec-curves.patch (PATCH37) -- MODIFIED
91 +BINDIST_PATCH_SET="openssl-1.1.0l-bindist-1.0.tar.xz"
92 +
93 +DESCRIPTION="full-strength general purpose cryptography library (including SSL and TLS)"
94 +HOMEPAGE="https://www.openssl.org/"
95 +SRC_URI="mirror://openssl/source/${MY_P}.tar.gz
96 + bindist? (
97 + mirror://gentoo/${BINDIST_PATCH_SET}
98 + https://dev.gentoo.org/~whissi/dist/openssl/${BINDIST_PATCH_SET}
99 + )"
100 +
101 +LICENSE="openssl"
102 +SLOT="0/1.1" # .so version of libssl/libcrypto
103 +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x86-linux"
104 +IUSE="+asm bindist elibc_musl rfc3779 sctp cpu_flags_x86_sse2 sslv3 static-libs test tls-heartbeat vanilla zlib"
105 +RESTRICT="!bindist? ( bindist )"
106 +
107 +RDEPEND=">=app-misc/c_rehash-1.7-r1
108 + zlib? ( >=sys-libs/zlib-1.2.8-r1[static-libs(+)?,${MULTILIB_USEDEP}] )"
109 +DEPEND="${RDEPEND}"
110 +BDEPEND="
111 + >=dev-lang/perl-5
112 + sctp? ( >=net-misc/lksctp-tools-1.0.12 )
113 + test? (
114 + sys-apps/diffutils
115 + sys-devel/bc
116 + )"
117 +PDEPEND="app-misc/ca-certificates"
118 +
119 +PATCHES=(
120 + "${FILESDIR}"/${PN}-1.0.2a-x32-asm.patch #542618
121 + "${FILESDIR}"/${PN}-1.1.0j-parallel_install_fix.patch #671602
122 + "${FILESDIR}"/${PN}-1.1.0k-fix-test_fuzz.patch
123 +)
124 +
125 +S="${WORKDIR}/${MY_P}"
126 +
127 +MULTILIB_WRAPPED_HEADERS=(
128 + usr/include/openssl/opensslconf.h
129 +)
130 +
131 +src_prepare() {
132 + if use bindist; then
133 + mv "${WORKDIR}"/bindist-patches/hobble-openssl "${WORKDIR}" || die
134 + bash "${WORKDIR}"/hobble-openssl || die
135 +
136 + cp -f "${WORKDIR}"/bindist-patches/ec_curve.c "${S}"/crypto/ec/ || die
137 + cp -f "${WORKDIR}"/bindist-patches/ectest.c "${S}"/test/ || die
138 +
139 + eapply "${WORKDIR}"/bindist-patches/ec-curves.patch
140 +
141 + local known_failing_test
142 + for known_failing_test in \
143 + 30-test_evp_extra.t \
144 + 80-test_ssl_new.t \
145 + ; do
146 + ebegin "Disabling test '${known_failing_test}' which is known to fail with USE=bindist"
147 + rm test/recipes/${known_failing_test} || die
148 + eend $?
149 + done
150 +
151 + # Also see the configure parts below:
152 + # enable-ec \
153 + # $(use_ssl !bindist ec2m) \
154 + fi
155 +
156 + # keep this in sync with app-misc/c_rehash
157 + SSL_CNF_DIR="/etc/ssl"
158 +
159 + # Make sure we only ever touch Makefile.org and avoid patching a file
160 + # that gets blown away anyways by the Configure script in src_configure
161 + rm -f Makefile
162 +
163 + if ! use vanilla ; then
164 + if [[ $(declare -p PATCHES 2>/dev/null) == "declare -a"* ]] ; then
165 + [[ ${#PATCHES[@]} -gt 0 ]] && eapply "${PATCHES[@]}"
166 + fi
167 +
168 + use bindist || eapply "${FILESDIR}"/${PN}-1.1.0l-fix-no-ec2m-in-ec_curve.c.patch
169 + fi
170 +
171 + eapply_user #332661
172 +
173 + # make sure the man pages are suffixed #302165
174 + # don't bother building man pages if they're disabled
175 + # Make DOCDIR Gentoo compliant
176 + sed -i \
177 + -e '/^MANSUFFIX/s:=.*:=ssl:' \
178 + -e '/^MAKEDEPPROG/s:=.*:=$(CC):' \
179 + -e $(has noman FEATURES \
180 + && echo '/^install:/s:install_docs::' \
181 + || echo '/^MANDIR=/s:=.*:='${EPREFIX}'/usr/share/man:') \
182 + -e "/^DOCDIR/s@\$(BASENAME)@&-${PVR}@" \
183 + Configurations/unix-Makefile.tmpl \
184 + || die
185 +
186 + # show the actual commands in the log
187 + sed -i '/^SET_X/s@=.*@=set -x@' Makefile.shared || die
188 +
189 + # quiet out unknown driver argument warnings since openssl
190 + # doesn't have well-split CFLAGS and we're making it even worse
191 + # and 'make depend' uses -Werror for added fun (#417795 again)
192 + [[ ${CC} == *clang* ]] && append-flags -Qunused-arguments
193 +
194 + # allow openssl to be cross-compiled
195 + cp "${FILESDIR}"/gentoo.config-1.0.2 gentoo.config || die
196 + chmod a+rx gentoo.config || die
197 +
198 + append-flags -fno-strict-aliasing
199 + append-flags $(test-flags-CC -Wa,--noexecstack)
200 + append-cppflags -DOPENSSL_NO_BUF_FREELISTS
201 +
202 + # Prefixify Configure shebang (#141906)
203 + sed \
204 + -e "1s,/usr/bin/env,${EPREFIX}&," \
205 + -i Configure || die
206 + # Remove test target when FEATURES=test isn't set
207 + if ! use test ; then
208 + sed \
209 + -e '/^$config{dirs}/s@ "test",@@' \
210 + -i Configure || die
211 + fi
212 + # The config script does stupid stuff to prompt the user. Kill it.
213 + sed -i '/stty -icanon min 0 time 50; read waste/d' config || die
214 + ./config --test-sanity || die "I AM NOT SANE"
215 +
216 + multilib_copy_sources
217 +}
218 +
219 +multilib_src_configure() {
220 + unset APPS #197996
221 + unset SCRIPTS #312551
222 + unset CROSS_COMPILE #311473
223 +
224 + tc-export CC AR RANLIB RC
225 +
226 + # Clean out patent-or-otherwise-encumbered code
227 + # Camellia: Royalty Free https://en.wikipedia.org/wiki/Camellia_(cipher)
228 + # IDEA: Expired https://en.wikipedia.org/wiki/International_Data_Encryption_Algorithm
229 + # EC: ????????? ??/??/2015 https://en.wikipedia.org/wiki/Elliptic_Curve_Cryptography
230 + # MDC2: Expired https://en.wikipedia.org/wiki/MDC-2
231 + # RC5: Expired https://en.wikipedia.org/wiki/RC5
232 +
233 + use_ssl() { usex $1 "enable-${2:-$1}" "no-${2:-$1}" " ${*:3}" ; }
234 + echoit() { echo "$@" ; "$@" ; }
235 +
236 + local krb5=$(has_version app-crypt/mit-krb5 && echo "MIT" || echo "Heimdal")
237 +
238 + # See if our toolchain supports __uint128_t. If so, it's 64bit
239 + # friendly and can use the nicely optimized code paths. #460790
240 + local ec_nistp_64_gcc_128
241 + # Disable it for now though #469976
242 + #if ! use bindist ; then
243 + # echo "__uint128_t i;" > "${T}"/128.c
244 + # if ${CC} ${CFLAGS} -c "${T}"/128.c -o /dev/null >&/dev/null ; then
245 + # ec_nistp_64_gcc_128="enable-ec_nistp_64_gcc_128"
246 + # fi
247 + #fi
248 +
249 + local sslout=$(./gentoo.config)
250 + einfo "Use configuration ${sslout:-(openssl knows best)}"
251 + local config="Configure"
252 + [[ -z ${sslout} ]] && config="config"
253 +
254 + # Fedora hobbled-EC needs 'no-ec2m'
255 + # 'srp' was restricted until early 2017 as well.
256 + # "disable-deprecated" option breaks too many consumers.
257 + # Don't set it without thorough revdeps testing.
258 + # Make sure user flags don't get added *yet* to avoid duplicated
259 + # flags.
260 + CFLAGS= LDFLAGS= echoit \
261 + ./${config} \
262 + ${sslout} \
263 + $(use cpu_flags_x86_sse2 || echo "no-sse2") \
264 + enable-camellia \
265 + enable-ec \
266 + $(use_ssl !bindist ec2m) \
267 + enable-srp \
268 + $(use elibc_musl && echo "no-async") \
269 + ${ec_nistp_64_gcc_128} \
270 + enable-idea \
271 + enable-mdc2 \
272 + enable-rc5 \
273 + $(use_ssl sslv3 ssl3) \
274 + $(use_ssl sslv3 ssl3-method) \
275 + $(use_ssl asm) \
276 + $(use_ssl rfc3779) \
277 + $(use_ssl sctp) \
278 + $(use_ssl tls-heartbeat heartbeats) \
279 + $(use_ssl zlib) \
280 + --prefix="${EPREFIX}"/usr \
281 + --openssldir="${EPREFIX}"${SSL_CNF_DIR} \
282 + --libdir=$(get_libdir) \
283 + shared threads \
284 + || die
285 +
286 + # Clean out hardcoded flags that openssl uses
287 + local DEFAULT_CFLAGS=$(grep ^CFLAGS= Makefile | LC_ALL=C sed \
288 + -e 's:^CFLAGS=::' \
289 + -e 's:\(^\| \)-fomit-frame-pointer::g' \
290 + -e 's:\(^\| \)-O[^ ]*::g' \
291 + -e 's:\(^\| \)-march=[^ ]*::g' \
292 + -e 's:\(^\| \)-mcpu=[^ ]*::g' \
293 + -e 's:\(^\| \)-m[^ ]*::g' \
294 + -e 's:^ *::' \
295 + -e 's: *$::' \
296 + -e 's: \+: :g' \
297 + -e 's:\\:\\\\:g'
298 + )
299 +
300 + # Now insert clean default flags with user flags
301 + sed -i \
302 + -e "/^CFLAGS=/s|=.*|=${DEFAULT_CFLAGS} ${CFLAGS}|" \
303 + -e "/^LDFLAGS=/s|=[[:space:]]*$|=${LDFLAGS}|" \
304 + Makefile || die
305 +}
306 +
307 +multilib_src_compile() {
308 + # depend is needed to use $confopts; it also doesn't matter
309 + # that it's -j1 as the code itself serializes subdirs
310 + emake -j1 depend
311 + emake all
312 +}
313 +
314 +multilib_src_test() {
315 + emake -j1 test
316 +}
317 +
318 +multilib_src_install() {
319 + # We need to create $ED/usr on our own to avoid a race condition #665130
320 + if [[ ! -d "${ED}/usr" ]]; then
321 + # We can only create this directory once
322 + mkdir "${ED}"/usr || die
323 + fi
324 +
325 + emake DESTDIR="${D}" install
326 +}
327 +
328 +multilib_src_install_all() {
329 + # openssl installs perl version of c_rehash by default, but
330 + # we provide a shell version via app-misc/c_rehash
331 + rm "${ED}"/usr/bin/c_rehash || die
332 +
333 + dodoc CHANGES* FAQ NEWS README doc/*.txt doc/${PN}-c-indent.el
334 +
335 + # This is crappy in that the static archives are still built even
336 + # when USE=static-libs. But this is due to a failing in the openssl
337 + # build system: the static archives are built as PIC all the time.
338 + # Only way around this would be to manually configure+compile openssl
339 + # twice; once with shared lib support enabled and once without.
340 + use static-libs || rm -f "${ED}"/usr/lib*/lib*.a
341 +
342 + # create the certs directory
343 + keepdir ${SSL_CNF_DIR}/certs
344 +
345 + # Namespace openssl programs to prevent conflicts with other man pages
346 + cd "${ED}"/usr/share/man || die
347 + local m d s
348 + for m in $(find . -type f | xargs grep -L '#include') ; do
349 + d=${m%/*} ; d=${d#./} ; m=${m##*/}
350 + [[ ${m} == openssl.1* ]] && continue
351 + [[ -n $(find -L ${d} -type l) ]] && die "erp, broken links already!"
352 + mv ${d}/{,ssl-}${m}
353 + # fix up references to renamed man pages
354 + sed -i '/^[.]SH "SEE ALSO"/,/^[.]/s:\([^(, ]*(1)\):ssl-\1:g' ${d}/ssl-${m}
355 + ln -s ssl-${m} ${d}/openssl-${m}
356 + # locate any symlinks that point to this man page ... we assume
357 + # that any broken links are due to the above renaming
358 + for s in $(find -L ${d} -type l) ; do
359 + s=${s##*/}
360 + rm -f ${d}/${s}
361 + # We don't want to "|| die" here
362 + ln -s ssl-${m} ${d}/ssl-${s}
363 + ln -s ssl-${s} ${d}/openssl-${s}
364 + done
365 + done
366 + [[ -n $(find -L ${d} -type l) ]] && die "broken manpage links found :("
367 +
368 + dodir /etc/sandbox.d #254521
369 + echo 'SANDBOX_PREDICT="/dev/crypto"' > "${ED}"/etc/sandbox.d/10openssl
370 +
371 + diropts -m0700
372 + keepdir ${SSL_CNF_DIR}/private
373 +}
374 +
375 +pkg_postinst() {
376 + ebegin "Running 'c_rehash ${EROOT}${SSL_CNF_DIR}/certs/' to rebuild hashes #333069"
377 + c_rehash "${EROOT}${SSL_CNF_DIR}/certs" >/dev/null
378 + eend $?
379 +}