Gentoo Archives: gentoo-commits

From: Lars Wendler <polynomial-c@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-libs/nss/
Date: Mon, 29 Jun 2020 10:02:58
Message-Id: 1593424969.4e10c55d94aa8ced633714413346f350fd437f56.polynomial-c@gentoo
1 commit: 4e10c55d94aa8ced633714413346f350fd437f56
2 Author: Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
3 AuthorDate: Mon Jun 29 10:02:41 2020 +0000
4 Commit: Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
5 CommitDate: Mon Jun 29 10:02:49 2020 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4e10c55d
7
8 dev-libs/nss: Removed old
9
10 Package-Manager: Portage-2.3.103, Repoman-2.3.23
11 Signed-off-by: Lars Wendler <polynomial-c <AT> gentoo.org>
12
13 dev-libs/nss/Manifest | 2 -
14 dev-libs/nss/nss-3.51.1-r1.ebuild | 358 --------------------------------------
15 dev-libs/nss/nss-3.52.ebuild | 358 --------------------------------------
16 3 files changed, 718 deletions(-)
17
18 diff --git a/dev-libs/nss/Manifest b/dev-libs/nss/Manifest
19 index 673342d8225..b1158e7ca13 100644
20 --- a/dev-libs/nss/Manifest
21 +++ b/dev-libs/nss/Manifest
22 @@ -1,7 +1,5 @@
23 -DIST nss-3.51.1.tar.gz 78310874 BLAKE2B c295b5fdf6e1d24cc79474f2c5a9e91fccf777212fbb072e8a64576ed1b060fea6ecbde1fa59bb07c998b9aa92bb7d450e722a8f34a72eaa35aef6cbd693420a SHA512 1878780886cc330489a14a60ee5cb67b174f3167d020db256eacdce079652ef8af65813914cd0fb5684457053fa27acc9bff72d0713fbea28795613ca45a6d46
24 DIST nss-3.51.tar.gz 78305125 BLAKE2B 2c7b90d4cc9fe283bf81e21d0dceefff503e5a31f0053828b140b2b927ddab8c8881b23c7d4c003f3e2d0dcd22efbe699baee63443cab6e72d33a552fd430e3c SHA512 9c894b1ea41449b000750a7b3a89fcb43dfc3d0d4d6dcc0dc288bc73996f76f1ee1ede927a8aecae6d4a07f9f3d3e3a042c6a60cf06e27e0cdc004fce2e510fd
25 DIST nss-3.52.1.tar.gz 81222116 BLAKE2B e7a1a24c0a4765fb13a4c13a93187a26df6df68b3e8d623514928cf505215e67f5f22387b6a6b0680117b1c2af13752cb981c173bb50424784d05b459704d528 SHA512 be8746984e3028e5ed49f2132ca08687f6ac75e50208d8cfd6ffbcfd5db1ab8dcaf1f2a0a6c6c1920573de80490301b21c022759c7e2309a22d29698bb169dd6
26 -DIST nss-3.52.tar.gz 81220587 BLAKE2B 0208c9047c61233ed36f02d57fdc64fa1734ef69d17fa499707f4a3b14a2e880b1dcf4b19b17a38e9b41d2e46b4a9488613d82989be747ad82aebc35b8e491af SHA512 a45baf38717bceda03c292b2c01def680a24a846327e17d36044a85e30ed40c68220c78c0a2c3025c11778ee58f5d5eb0fff1b4cd274b95c408fb59e394e62c6
27 DIST nss-3.53.1.tar.gz 81297900 BLAKE2B 7a053aa8322cb55b787730c87f1a6e8a799265574114d63257699348f4921007457d19e5fdc4684a512a91478d1912db45ce066daa8b9d9cde5130ff506aed9e SHA512 5d7572999a007c513df4cbdf74769c1a4eb53eb8680da27a89fea770763d88b6bea80cd9ab20426a905396745129276cffb6dd9e8e1e6377fa98c0a103b522d0
28 DIST nss-3.54.tar.gz 81190188 BLAKE2B bf91aa3e2081f0d123d3adfbfc2e3cadfeccf6b15ce03f429fede73bd57ebf96ba7317b890762b01820d75020bb99383c022e2e6558aa1a6d44e8c92cd533bd2 SHA512 9b9253469514c085730ae580f6544e882a8264e253687950627a4fa1eeb956287c9da46caf7d8988cd6363f6dee26cb8db755203375751fe53795697d7ae9b7b
29 DIST nss-cacert-class1-class3.patch 22950 BLAKE2B 9d5e60df5f161a3c27c41e5a9419440a54f888eda454e3cde5ebe626d4075b65cf9938b5144d0fb022377f4bd415bff5e5c67d104409860aa9391b3eb8872c68 SHA512 a5aa740bf110a3f0262e3f1ef2fc739ac2b44f042e220039d48aee8e97cd764d5c10718220364f4098aba955882bd02cadb5481512388971a8290312f88a7df0
30
31 diff --git a/dev-libs/nss/nss-3.51.1-r1.ebuild b/dev-libs/nss/nss-3.51.1-r1.ebuild
32 deleted file mode 100644
33 index 2c01890c4d3..00000000000
34 --- a/dev-libs/nss/nss-3.51.1-r1.ebuild
35 +++ /dev/null
36 @@ -1,358 +0,0 @@
37 -# Copyright 1999-2020 Gentoo Authors
38 -# Distributed under the terms of the GNU General Public License v2
39 -
40 -EAPI=7
41 -
42 -inherit eutils flag-o-matic multilib toolchain-funcs multilib-minimal
43 -
44 -NSPR_VER="4.25"
45 -RTM_NAME="NSS_${PV//./_}_RTM"
46 -
47 -DESCRIPTION="Mozilla's Network Security Services library that implements PKI support"
48 -HOMEPAGE="http://www.mozilla.org/projects/security/pki/nss/"
49 -SRC_URI="https://archive.mozilla.org/pub/security/nss/releases/${RTM_NAME}/src/${P}.tar.gz
50 - cacert? ( https://dev.gentoo.org/~axs/distfiles/${PN}-cacert-class1-class3.patch )"
51 -
52 -LICENSE="|| ( MPL-2.0 GPL-2 LGPL-2.1 )"
53 -SLOT="0"
54 -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
55 -IUSE="cacert utils"
56 -# pkg-config called by nss-config -> virtual/pkgconfig in RDEPEND
57 -RDEPEND="
58 - >=dev-libs/nspr-${NSPR_VER}[${MULTILIB_USEDEP}]
59 - >=dev-db/sqlite-3.8.2[${MULTILIB_USEDEP}]
60 - >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]
61 - virtual/pkgconfig
62 -"
63 -DEPEND="${RDEPEND}"
64 -
65 -RESTRICT="test"
66 -
67 -S="${WORKDIR}/${P}/${PN}"
68 -
69 -MULTILIB_CHOST_TOOLS=(
70 - /usr/bin/nss-config
71 -)
72 -
73 -PATCHES=(
74 - # Custom changes for gentoo
75 - "${FILESDIR}/${PN}-3.47-gentoo-fixups.patch"
76 - "${FILESDIR}/${PN}-3.21-gentoo-fixup-warnings.patch"
77 - "${FILESDIR}/${PN}-3.23-hppa-byte_order.patch"
78 -)
79 -
80 -src_prepare() {
81 - if use cacert ; then #521462
82 - PATCHES+=(
83 - "${DISTDIR}/${PN}-cacert-class1-class3.patch"
84 - )
85 - fi
86 -
87 - default
88 -
89 - pushd coreconf >/dev/null || die
90 - # hack nspr paths
91 - echo 'INCLUDES += -I$(DIST)/include/dbm' \
92 - >> headers.mk || die "failed to append include"
93 -
94 - # modify install path
95 - sed -e '/CORE_DEPTH/s:SOURCE_PREFIX.*$:SOURCE_PREFIX = $(CORE_DEPTH)/dist:' \
96 - -i source.mk || die
97 -
98 - # Respect LDFLAGS
99 - sed -i -e 's/\$(MKSHLIB) -o/\$(MKSHLIB) \$(LDFLAGS) -o/g' rules.mk
100 - popd >/dev/null || die
101 -
102 - # Fix pkgconfig file for Prefix
103 - sed -i -e "/^PREFIX =/s:= /usr:= ${EPREFIX}/usr:" \
104 - config/Makefile || die
105 -
106 - # use host shlibsign if need be #436216
107 - if tc-is-cross-compiler ; then
108 - sed -i \
109 - -e 's:"${2}"/shlibsign:shlibsign:' \
110 - cmd/shlibsign/sign.sh || die
111 - fi
112 -
113 - # dirty hack
114 - sed -i -e "/CRYPTOLIB/s:\$(SOFTOKEN_LIB_DIR):../freebl/\$(OBJDIR):" \
115 - lib/ssl/config.mk || die
116 - sed -i -e "/CRYPTOLIB/s:\$(SOFTOKEN_LIB_DIR):../../lib/freebl/\$(OBJDIR):" \
117 - cmd/platlibs.mk || die
118 -
119 - multilib_copy_sources
120 -
121 - strip-flags
122 -}
123 -
124 -multilib_src_configure() {
125 - # Ensure we stay multilib aware
126 - sed -i -e "/@libdir@/ s:lib64:$(get_libdir):" config/Makefile || die
127 -}
128 -
129 -nssarch() {
130 - # Most of the arches are the same as $ARCH
131 - local t=${1:-${CHOST}}
132 - case ${t} in
133 - aarch64*)echo "aarch64";;
134 - hppa*) echo "parisc";;
135 - i?86*) echo "i686";;
136 - x86_64*) echo "x86_64";;
137 - *) tc-arch ${t};;
138 - esac
139 -}
140 -
141 -nssbits() {
142 - local cc cppflags="${1}CPPFLAGS" cflags="${1}CFLAGS"
143 - if [[ ${1} == BUILD_ ]]; then
144 - cc=$(tc-getBUILD_CC)
145 - else
146 - cc=$(tc-getCC)
147 - fi
148 - echo > "${T}"/test.c || die
149 - ${cc} ${!cppflags} ${!cflags} -c "${T}"/test.c -o "${T}/${1}test.o" || die
150 - case $(file "${T}/${1}test.o") in
151 - *32-bit*x86-64*) echo USE_X32=1;;
152 - *64-bit*|*ppc64*|*x86_64*) echo USE_64=1;;
153 - *32-bit*|*ppc*|*i386*) ;;
154 - *) die "Failed to detect whether ${cc} builds 64bits or 32bits, disable distcc if you're using it, please";;
155 - esac
156 -}
157 -
158 -multilib_src_compile() {
159 - # use ABI to determine bit'ness, or fallback if unset
160 - local buildbits mybits
161 - case "${ABI}" in
162 - n32) mybits="USE_N32=1";;
163 - x32) mybits="USE_X32=1";;
164 - s390x|*64) mybits="USE_64=1";;
165 - ${DEFAULT_ABI})
166 - einfo "Running compilation test to determine bit'ness"
167 - mybits=$(nssbits)
168 - ;;
169 - esac
170 - # bitness of host may differ from target
171 - if tc-is-cross-compiler; then
172 - buildbits=$(nssbits BUILD_)
173 - fi
174 -
175 - local makeargs=(
176 - CC="$(tc-getCC)"
177 - CCC="$(tc-getCXX)"
178 - AR="$(tc-getAR) rc \$@"
179 - RANLIB="$(tc-getRANLIB)"
180 - OPTIMIZER=
181 - ${mybits}
182 - )
183 -
184 - # Take care of nspr settings #436216
185 - local myCPPFLAGS="${CPPFLAGS} $($(tc-getPKG_CONFIG) nspr --cflags)"
186 - unset NSPR_INCLUDE_DIR
187 -
188 - # Do not let `uname` be used.
189 - if use kernel_linux ; then
190 - makeargs+=(
191 - OS_TARGET=Linux
192 - OS_RELEASE=2.6
193 - OS_TEST="$(nssarch)"
194 - )
195 - fi
196 -
197 - export NSS_ALLOW_SSLKEYLOGFILE=1
198 - export NSS_ENABLE_WERROR=0 #567158
199 - export BUILD_OPT=1
200 - export NSS_USE_SYSTEM_SQLITE=1
201 - export NSDISTMODE=copy
202 - export NSS_ENABLE_ECC=1
203 - export FREEBL_NO_DEPEND=1
204 - export FREEBL_LOWHASH=1
205 - export NSS_SEED_ONLY_DEV_URANDOM=1
206 - export ASFLAGS=""
207 -
208 - local d
209 -
210 - # Build the host tools first.
211 - LDFLAGS="${BUILD_LDFLAGS}" \
212 - XCFLAGS="${BUILD_CFLAGS}" \
213 - NSPR_LIB_DIR="${T}/fakedir" \
214 - emake -j1 -C coreconf \
215 - CC="$(tc-getBUILD_CC)" \
216 - ${buildbits-${mybits}}
217 - makeargs+=( NSINSTALL="${PWD}/$(find -type f -name nsinstall)" )
218 -
219 - # Then build the target tools.
220 - for d in . lib/dbm ; do
221 - CPPFLAGS="${myCPPFLAGS}" \
222 - XCFLAGS="${CFLAGS} ${CPPFLAGS}" \
223 - NSPR_LIB_DIR="${T}/fakedir" \
224 - emake -j1 "${makeargs[@]}" -C ${d}
225 - done
226 -}
227 -
228 -# Altering these 3 libraries breaks the CHK verification.
229 -# All of the following cause it to break:
230 -# - stripping
231 -# - prelink
232 -# - ELF signing
233 -# http://www.mozilla.org/projects/security/pki/nss/tech-notes/tn6.html
234 -# Either we have to NOT strip them, or we have to forcibly resign after
235 -# stripping.
236 -#local_libdir="$(get_libdir)"
237 -#export STRIP_MASK="
238 -# */${local_libdir}/libfreebl3.so*
239 -# */${local_libdir}/libnssdbm3.so*
240 -# */${local_libdir}/libsoftokn3.so*"
241 -
242 -export NSS_CHK_SIGN_LIBS="freebl3 nssdbm3 softokn3"
243 -
244 -generate_chk() {
245 - local shlibsign="$1"
246 - local libdir="$2"
247 - einfo "Resigning core NSS libraries for FIPS validation"
248 - shift 2
249 - local i
250 - for i in ${NSS_CHK_SIGN_LIBS} ; do
251 - local libname=lib${i}.so
252 - local chkname=lib${i}.chk
253 - "${shlibsign}" \
254 - -i "${libdir}"/${libname} \
255 - -o "${libdir}"/${chkname}.tmp \
256 - && mv -f \
257 - "${libdir}"/${chkname}.tmp \
258 - "${libdir}"/${chkname} \
259 - || die "Failed to sign ${libname}"
260 - done
261 -}
262 -
263 -cleanup_chk() {
264 - local libdir="$1"
265 - shift 1
266 - local i
267 - for i in ${NSS_CHK_SIGN_LIBS} ; do
268 - local libfname="${libdir}/lib${i}.so"
269 - # If the major version has changed, then we have old chk files.
270 - [ ! -f "${libfname}" -a -f "${libfname}.chk" ] \
271 - && rm -f "${libfname}.chk"
272 - done
273 -}
274 -
275 -multilib_src_install() {
276 - pushd dist >/dev/null || die
277 -
278 - dodir /usr/$(get_libdir)
279 - cp -L */lib/*$(get_libname) "${ED}"/usr/$(get_libdir) || die "copying shared libs failed"
280 - local i
281 - for i in crmf freebl nssb nssckfw ; do
282 - cp -L */lib/lib${i}.a "${ED}"/usr/$(get_libdir) || die "copying libs failed"
283 - done
284 -
285 - # Install nss-config and pkgconfig file
286 - dodir /usr/bin
287 - cp -L */bin/nss-config "${ED}"/usr/bin || die
288 - dodir /usr/$(get_libdir)/pkgconfig
289 - cp -L */lib/pkgconfig/nss.pc "${ED}"/usr/$(get_libdir)/pkgconfig || die
290 -
291 - # create an nss-softokn.pc from nss.pc for libfreebl and some private headers
292 - # bug 517266
293 - sed -e 's#Libs:#Libs: -lfreebl#' \
294 - -e 's#Cflags:#Cflags: -I${includedir}/private#' \
295 - */lib/pkgconfig/nss.pc >"${ED}"/usr/$(get_libdir)/pkgconfig/nss-softokn.pc \
296 - || die "could not create nss-softokn.pc"
297 -
298 - # all the include files
299 - insinto /usr/include/nss
300 - doins public/nss/*.{h,api}
301 - insinto /usr/include/nss/private
302 - doins private/nss/{blapi,alghmac,cmac}.h
303 -
304 - popd >/dev/null || die
305 -
306 - local f nssutils
307 - # Always enabled because we need it for chk generation.
308 - nssutils=( shlibsign )
309 -
310 - if multilib_is_native_abi ; then
311 - if use utils; then
312 - # The tests we do not need to install.
313 - #nssutils_test="bltest crmftest dbtest dertimetest
314 - #fipstest remtest sdrtest"
315 - # checkcert utils has been removed in nss-3.22:
316 - # https://bugzilla.mozilla.org/show_bug.cgi?id=1187545
317 - # https://hg.mozilla.org/projects/nss/rev/df1729d37870
318 - # certcgi has been removed in nss-3.36:
319 - # https://bugzilla.mozilla.org/show_bug.cgi?id=1426602
320 - nssutils+=(
321 - addbuiltin
322 - atob
323 - baddbdir
324 - btoa
325 - certutil
326 - cmsutil
327 - conflict
328 - crlutil
329 - derdump
330 - digest
331 - makepqg
332 - mangle
333 - modutil
334 - multinit
335 - nonspr10
336 - ocspclnt
337 - oidcalc
338 - p7content
339 - p7env
340 - p7sign
341 - p7verify
342 - pk11mode
343 - pk12util
344 - pp
345 - rsaperf
346 - selfserv
347 - signtool
348 - signver
349 - ssltap
350 - strsclnt
351 - symkeyutil
352 - tstclnt
353 - vfychain
354 - vfyserv
355 - )
356 - # install man-pages for utils (bug #516810)
357 - doman doc/nroff/*.1
358 - fi
359 - pushd dist/*/bin >/dev/null || die
360 - for f in ${nssutils[@]}; do
361 - dobin ${f}
362 - done
363 - popd >/dev/null || die
364 - fi
365 -
366 - # Prelink breaks the CHK files. We don't have any reliable way to run
367 - # shlibsign after prelink.
368 - dodir /etc/prelink.conf.d
369 - printf -- "-b ${EPREFIX}/usr/$(get_libdir)/lib%s.so\n" ${NSS_CHK_SIGN_LIBS} \
370 - > "${ED}"/etc/prelink.conf.d/nss.conf
371 -}
372 -
373 -pkg_postinst() {
374 - multilib_pkg_postinst() {
375 - # We must re-sign the libraries AFTER they are stripped.
376 - local shlibsign="${EROOT}/usr/bin/shlibsign"
377 - # See if we can execute it (cross-compiling & such). #436216
378 - "${shlibsign}" -h >&/dev/null
379 - if [[ $? -gt 1 ]] ; then
380 - shlibsign="shlibsign"
381 - fi
382 - generate_chk "${shlibsign}" "${EROOT}"/usr/$(get_libdir)
383 - }
384 -
385 - multilib_foreach_abi multilib_pkg_postinst
386 -}
387 -
388 -pkg_postrm() {
389 - multilib_pkg_postrm() {
390 - cleanup_chk "${EROOT}"/usr/$(get_libdir)
391 - }
392 -
393 - multilib_foreach_abi multilib_pkg_postrm
394 -}
395
396 diff --git a/dev-libs/nss/nss-3.52.ebuild b/dev-libs/nss/nss-3.52.ebuild
397 deleted file mode 100644
398 index 2c01890c4d3..00000000000
399 --- a/dev-libs/nss/nss-3.52.ebuild
400 +++ /dev/null
401 @@ -1,358 +0,0 @@
402 -# Copyright 1999-2020 Gentoo Authors
403 -# Distributed under the terms of the GNU General Public License v2
404 -
405 -EAPI=7
406 -
407 -inherit eutils flag-o-matic multilib toolchain-funcs multilib-minimal
408 -
409 -NSPR_VER="4.25"
410 -RTM_NAME="NSS_${PV//./_}_RTM"
411 -
412 -DESCRIPTION="Mozilla's Network Security Services library that implements PKI support"
413 -HOMEPAGE="http://www.mozilla.org/projects/security/pki/nss/"
414 -SRC_URI="https://archive.mozilla.org/pub/security/nss/releases/${RTM_NAME}/src/${P}.tar.gz
415 - cacert? ( https://dev.gentoo.org/~axs/distfiles/${PN}-cacert-class1-class3.patch )"
416 -
417 -LICENSE="|| ( MPL-2.0 GPL-2 LGPL-2.1 )"
418 -SLOT="0"
419 -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
420 -IUSE="cacert utils"
421 -# pkg-config called by nss-config -> virtual/pkgconfig in RDEPEND
422 -RDEPEND="
423 - >=dev-libs/nspr-${NSPR_VER}[${MULTILIB_USEDEP}]
424 - >=dev-db/sqlite-3.8.2[${MULTILIB_USEDEP}]
425 - >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]
426 - virtual/pkgconfig
427 -"
428 -DEPEND="${RDEPEND}"
429 -
430 -RESTRICT="test"
431 -
432 -S="${WORKDIR}/${P}/${PN}"
433 -
434 -MULTILIB_CHOST_TOOLS=(
435 - /usr/bin/nss-config
436 -)
437 -
438 -PATCHES=(
439 - # Custom changes for gentoo
440 - "${FILESDIR}/${PN}-3.47-gentoo-fixups.patch"
441 - "${FILESDIR}/${PN}-3.21-gentoo-fixup-warnings.patch"
442 - "${FILESDIR}/${PN}-3.23-hppa-byte_order.patch"
443 -)
444 -
445 -src_prepare() {
446 - if use cacert ; then #521462
447 - PATCHES+=(
448 - "${DISTDIR}/${PN}-cacert-class1-class3.patch"
449 - )
450 - fi
451 -
452 - default
453 -
454 - pushd coreconf >/dev/null || die
455 - # hack nspr paths
456 - echo 'INCLUDES += -I$(DIST)/include/dbm' \
457 - >> headers.mk || die "failed to append include"
458 -
459 - # modify install path
460 - sed -e '/CORE_DEPTH/s:SOURCE_PREFIX.*$:SOURCE_PREFIX = $(CORE_DEPTH)/dist:' \
461 - -i source.mk || die
462 -
463 - # Respect LDFLAGS
464 - sed -i -e 's/\$(MKSHLIB) -o/\$(MKSHLIB) \$(LDFLAGS) -o/g' rules.mk
465 - popd >/dev/null || die
466 -
467 - # Fix pkgconfig file for Prefix
468 - sed -i -e "/^PREFIX =/s:= /usr:= ${EPREFIX}/usr:" \
469 - config/Makefile || die
470 -
471 - # use host shlibsign if need be #436216
472 - if tc-is-cross-compiler ; then
473 - sed -i \
474 - -e 's:"${2}"/shlibsign:shlibsign:' \
475 - cmd/shlibsign/sign.sh || die
476 - fi
477 -
478 - # dirty hack
479 - sed -i -e "/CRYPTOLIB/s:\$(SOFTOKEN_LIB_DIR):../freebl/\$(OBJDIR):" \
480 - lib/ssl/config.mk || die
481 - sed -i -e "/CRYPTOLIB/s:\$(SOFTOKEN_LIB_DIR):../../lib/freebl/\$(OBJDIR):" \
482 - cmd/platlibs.mk || die
483 -
484 - multilib_copy_sources
485 -
486 - strip-flags
487 -}
488 -
489 -multilib_src_configure() {
490 - # Ensure we stay multilib aware
491 - sed -i -e "/@libdir@/ s:lib64:$(get_libdir):" config/Makefile || die
492 -}
493 -
494 -nssarch() {
495 - # Most of the arches are the same as $ARCH
496 - local t=${1:-${CHOST}}
497 - case ${t} in
498 - aarch64*)echo "aarch64";;
499 - hppa*) echo "parisc";;
500 - i?86*) echo "i686";;
501 - x86_64*) echo "x86_64";;
502 - *) tc-arch ${t};;
503 - esac
504 -}
505 -
506 -nssbits() {
507 - local cc cppflags="${1}CPPFLAGS" cflags="${1}CFLAGS"
508 - if [[ ${1} == BUILD_ ]]; then
509 - cc=$(tc-getBUILD_CC)
510 - else
511 - cc=$(tc-getCC)
512 - fi
513 - echo > "${T}"/test.c || die
514 - ${cc} ${!cppflags} ${!cflags} -c "${T}"/test.c -o "${T}/${1}test.o" || die
515 - case $(file "${T}/${1}test.o") in
516 - *32-bit*x86-64*) echo USE_X32=1;;
517 - *64-bit*|*ppc64*|*x86_64*) echo USE_64=1;;
518 - *32-bit*|*ppc*|*i386*) ;;
519 - *) die "Failed to detect whether ${cc} builds 64bits or 32bits, disable distcc if you're using it, please";;
520 - esac
521 -}
522 -
523 -multilib_src_compile() {
524 - # use ABI to determine bit'ness, or fallback if unset
525 - local buildbits mybits
526 - case "${ABI}" in
527 - n32) mybits="USE_N32=1";;
528 - x32) mybits="USE_X32=1";;
529 - s390x|*64) mybits="USE_64=1";;
530 - ${DEFAULT_ABI})
531 - einfo "Running compilation test to determine bit'ness"
532 - mybits=$(nssbits)
533 - ;;
534 - esac
535 - # bitness of host may differ from target
536 - if tc-is-cross-compiler; then
537 - buildbits=$(nssbits BUILD_)
538 - fi
539 -
540 - local makeargs=(
541 - CC="$(tc-getCC)"
542 - CCC="$(tc-getCXX)"
543 - AR="$(tc-getAR) rc \$@"
544 - RANLIB="$(tc-getRANLIB)"
545 - OPTIMIZER=
546 - ${mybits}
547 - )
548 -
549 - # Take care of nspr settings #436216
550 - local myCPPFLAGS="${CPPFLAGS} $($(tc-getPKG_CONFIG) nspr --cflags)"
551 - unset NSPR_INCLUDE_DIR
552 -
553 - # Do not let `uname` be used.
554 - if use kernel_linux ; then
555 - makeargs+=(
556 - OS_TARGET=Linux
557 - OS_RELEASE=2.6
558 - OS_TEST="$(nssarch)"
559 - )
560 - fi
561 -
562 - export NSS_ALLOW_SSLKEYLOGFILE=1
563 - export NSS_ENABLE_WERROR=0 #567158
564 - export BUILD_OPT=1
565 - export NSS_USE_SYSTEM_SQLITE=1
566 - export NSDISTMODE=copy
567 - export NSS_ENABLE_ECC=1
568 - export FREEBL_NO_DEPEND=1
569 - export FREEBL_LOWHASH=1
570 - export NSS_SEED_ONLY_DEV_URANDOM=1
571 - export ASFLAGS=""
572 -
573 - local d
574 -
575 - # Build the host tools first.
576 - LDFLAGS="${BUILD_LDFLAGS}" \
577 - XCFLAGS="${BUILD_CFLAGS}" \
578 - NSPR_LIB_DIR="${T}/fakedir" \
579 - emake -j1 -C coreconf \
580 - CC="$(tc-getBUILD_CC)" \
581 - ${buildbits-${mybits}}
582 - makeargs+=( NSINSTALL="${PWD}/$(find -type f -name nsinstall)" )
583 -
584 - # Then build the target tools.
585 - for d in . lib/dbm ; do
586 - CPPFLAGS="${myCPPFLAGS}" \
587 - XCFLAGS="${CFLAGS} ${CPPFLAGS}" \
588 - NSPR_LIB_DIR="${T}/fakedir" \
589 - emake -j1 "${makeargs[@]}" -C ${d}
590 - done
591 -}
592 -
593 -# Altering these 3 libraries breaks the CHK verification.
594 -# All of the following cause it to break:
595 -# - stripping
596 -# - prelink
597 -# - ELF signing
598 -# http://www.mozilla.org/projects/security/pki/nss/tech-notes/tn6.html
599 -# Either we have to NOT strip them, or we have to forcibly resign after
600 -# stripping.
601 -#local_libdir="$(get_libdir)"
602 -#export STRIP_MASK="
603 -# */${local_libdir}/libfreebl3.so*
604 -# */${local_libdir}/libnssdbm3.so*
605 -# */${local_libdir}/libsoftokn3.so*"
606 -
607 -export NSS_CHK_SIGN_LIBS="freebl3 nssdbm3 softokn3"
608 -
609 -generate_chk() {
610 - local shlibsign="$1"
611 - local libdir="$2"
612 - einfo "Resigning core NSS libraries for FIPS validation"
613 - shift 2
614 - local i
615 - for i in ${NSS_CHK_SIGN_LIBS} ; do
616 - local libname=lib${i}.so
617 - local chkname=lib${i}.chk
618 - "${shlibsign}" \
619 - -i "${libdir}"/${libname} \
620 - -o "${libdir}"/${chkname}.tmp \
621 - && mv -f \
622 - "${libdir}"/${chkname}.tmp \
623 - "${libdir}"/${chkname} \
624 - || die "Failed to sign ${libname}"
625 - done
626 -}
627 -
628 -cleanup_chk() {
629 - local libdir="$1"
630 - shift 1
631 - local i
632 - for i in ${NSS_CHK_SIGN_LIBS} ; do
633 - local libfname="${libdir}/lib${i}.so"
634 - # If the major version has changed, then we have old chk files.
635 - [ ! -f "${libfname}" -a -f "${libfname}.chk" ] \
636 - && rm -f "${libfname}.chk"
637 - done
638 -}
639 -
640 -multilib_src_install() {
641 - pushd dist >/dev/null || die
642 -
643 - dodir /usr/$(get_libdir)
644 - cp -L */lib/*$(get_libname) "${ED}"/usr/$(get_libdir) || die "copying shared libs failed"
645 - local i
646 - for i in crmf freebl nssb nssckfw ; do
647 - cp -L */lib/lib${i}.a "${ED}"/usr/$(get_libdir) || die "copying libs failed"
648 - done
649 -
650 - # Install nss-config and pkgconfig file
651 - dodir /usr/bin
652 - cp -L */bin/nss-config "${ED}"/usr/bin || die
653 - dodir /usr/$(get_libdir)/pkgconfig
654 - cp -L */lib/pkgconfig/nss.pc "${ED}"/usr/$(get_libdir)/pkgconfig || die
655 -
656 - # create an nss-softokn.pc from nss.pc for libfreebl and some private headers
657 - # bug 517266
658 - sed -e 's#Libs:#Libs: -lfreebl#' \
659 - -e 's#Cflags:#Cflags: -I${includedir}/private#' \
660 - */lib/pkgconfig/nss.pc >"${ED}"/usr/$(get_libdir)/pkgconfig/nss-softokn.pc \
661 - || die "could not create nss-softokn.pc"
662 -
663 - # all the include files
664 - insinto /usr/include/nss
665 - doins public/nss/*.{h,api}
666 - insinto /usr/include/nss/private
667 - doins private/nss/{blapi,alghmac,cmac}.h
668 -
669 - popd >/dev/null || die
670 -
671 - local f nssutils
672 - # Always enabled because we need it for chk generation.
673 - nssutils=( shlibsign )
674 -
675 - if multilib_is_native_abi ; then
676 - if use utils; then
677 - # The tests we do not need to install.
678 - #nssutils_test="bltest crmftest dbtest dertimetest
679 - #fipstest remtest sdrtest"
680 - # checkcert utils has been removed in nss-3.22:
681 - # https://bugzilla.mozilla.org/show_bug.cgi?id=1187545
682 - # https://hg.mozilla.org/projects/nss/rev/df1729d37870
683 - # certcgi has been removed in nss-3.36:
684 - # https://bugzilla.mozilla.org/show_bug.cgi?id=1426602
685 - nssutils+=(
686 - addbuiltin
687 - atob
688 - baddbdir
689 - btoa
690 - certutil
691 - cmsutil
692 - conflict
693 - crlutil
694 - derdump
695 - digest
696 - makepqg
697 - mangle
698 - modutil
699 - multinit
700 - nonspr10
701 - ocspclnt
702 - oidcalc
703 - p7content
704 - p7env
705 - p7sign
706 - p7verify
707 - pk11mode
708 - pk12util
709 - pp
710 - rsaperf
711 - selfserv
712 - signtool
713 - signver
714 - ssltap
715 - strsclnt
716 - symkeyutil
717 - tstclnt
718 - vfychain
719 - vfyserv
720 - )
721 - # install man-pages for utils (bug #516810)
722 - doman doc/nroff/*.1
723 - fi
724 - pushd dist/*/bin >/dev/null || die
725 - for f in ${nssutils[@]}; do
726 - dobin ${f}
727 - done
728 - popd >/dev/null || die
729 - fi
730 -
731 - # Prelink breaks the CHK files. We don't have any reliable way to run
732 - # shlibsign after prelink.
733 - dodir /etc/prelink.conf.d
734 - printf -- "-b ${EPREFIX}/usr/$(get_libdir)/lib%s.so\n" ${NSS_CHK_SIGN_LIBS} \
735 - > "${ED}"/etc/prelink.conf.d/nss.conf
736 -}
737 -
738 -pkg_postinst() {
739 - multilib_pkg_postinst() {
740 - # We must re-sign the libraries AFTER they are stripped.
741 - local shlibsign="${EROOT}/usr/bin/shlibsign"
742 - # See if we can execute it (cross-compiling & such). #436216
743 - "${shlibsign}" -h >&/dev/null
744 - if [[ $? -gt 1 ]] ; then
745 - shlibsign="shlibsign"
746 - fi
747 - generate_chk "${shlibsign}" "${EROOT}"/usr/$(get_libdir)
748 - }
749 -
750 - multilib_foreach_abi multilib_pkg_postinst
751 -}
752 -
753 -pkg_postrm() {
754 - multilib_pkg_postrm() {
755 - cleanup_chk "${EROOT}"/usr/$(get_libdir)
756 - }
757 -
758 - multilib_foreach_abi multilib_pkg_postrm
759 -}