forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dev-libs/nss: Bump to version 3.30.1
Package-Manager: Portage-2.3.5, Repoman-2.3.2
- Loading branch information
Lars Wendler
committed
Apr 6, 2017
1 parent
958e932
commit 8760dbe
Showing
2 changed files
with
339 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,7 @@ | ||
DIST nss-3.28.1.tar.gz 7451477 SHA256 58cc0c05c0ed9523e6d820bea74f513538f48c87aac931876e3d3775de1a82ad SHA512 f10c8e404741fafe5e5772dc754ff4503ec1826942db5fbc13b99155fcac50f29e1405dd249b69a27f27ebcfef73849b1f0f636a2076ab761384e8a0ed9a2b8b WHIRLPOOL e1a6b9886759159294c4d8e47e693a2e790703e368ede18425c9a9130df72ac56a6e717cb794607c7bcfc68c82df9aec8771bc74e729f5bbd70fdcd8ce0fed3b | ||
DIST nss-3.29.1.tar.gz 7479324 SHA256 47259bc5c4439d8228d7c577ea652ed140588f27eae8ebb39cc91057aea37366 SHA512 c060f568a3243343b5a1315d632015373dc7dfd2ca9567fb484190dd56f87b1bc977539b9e28fe4fbfc6ee25409e69b1192a2b590031257dd8c89d162332e050 WHIRLPOOL 1649e439fec988ce0b0d5d3b5caf2b89579eee86dff87cb6a4545cf6fdbd78a409f0746050dbc5a5bcefbb8363abad730df2a43ef05b91f5b325d06ba778e151 | ||
DIST nss-3.29.3.tar.gz 7479458 SHA256 35ddcc31251ef829994efeee925011aa1414e32be7e388236970255aa3c8e1eb SHA512 eebc479521dc4e64565929620f60bf457875a2b21d7b5dc2b67f4e4279bfb1a814c31a7b17638052cec44ede9fb686a3ff776cd2239271142100e0fd5f769519 WHIRLPOOL 93edf0bd7c0c1751f7b03a8e878cba564e27fede796de3d4f381aa0b86ef8ea9edffd6f57f8a437f48e07f74ddc2cd0b351ca640ea409e3b3a54f7ddb83def22 | ||
DIST nss-3.30.1.tar.gz 9501791 SHA256 1fa273a9a18611bfd22ecd61283172a5aa66af7d0783c7018f42d48000be5eb6 SHA512 591c518bc7e8105675678863e1995725982527e138b45e12ad0efd927f5d3eaa2aaa704d335ff46d572c2f7ad8a8f9a38e671c1d5a9f46fe495077ba0522bc51 WHIRLPOOL 40ef67fcb505ed19b8438b77b5b0a147d939863066a24bd15f5afa2e6ea91a40d6aaa43860c6f1f94f37efe417c48f865c344e7ffb5d997e4a92356100a206c1 | ||
DIST nss-3.30.tar.gz 9500552 SHA256 a8c0000dae5e992f6563972e26dbfefc50d006dd845c43b8ca24ea50169ff3a9 SHA512 c21e9b5e4b689ea8cbc6f4d7913df43e2a78c4435e0ce092f2ce00e46079ce2268e17ec8527b283ac69eff3d96ff0165a5b42b6579bfe0a720115ff2938260d3 WHIRLPOOL bc0a59484010a5771b515dde1440ccca8a63b167d3d8839b3606460fdf9d2dc3ab7d889173c88edb7d685d39ad3614c4cbc66284d0faced47cdcc01a69997d9a | ||
DIST nss-cacert-class1-class3.patch 22950 SHA256 6bba29cee34276e2ca6436dabedfeba2b61fb46668c5d5ceabf0c871574649bf SHA512 a5aa740bf110a3f0262e3f1ef2fc739ac2b44f042e220039d48aee8e97cd764d5c10718220364f4098aba955882bd02cadb5481512388971a8290312f88a7df0 WHIRLPOOL 1246223b01292604e5609bb9c580f092dc5937bf8c98f6891b099e8bab960e03612b6617e30a55d6ff8817d88f190e03812fe8f89f84f25c20970493dc2f7700 | ||
DIST nss-pem-20160329.tar.xz 27732 SHA256 6c13c342e7a9fe34b585556099beca33c3078b3df3e11b72827fb70232ac1443 SHA512 5834b06e4c64205447573d4f4c8989e20986ae67ee00eebce3817eb73794a6355a404143ba1c676ec302ceefaf9df103cb879b1d4ff14ba4e3790dbee3e40eb2 WHIRLPOOL 16fb714fab29e44f7a15fa1928a0f4c1a770f0847b8da97816e29a3b124dee782cffe2357648c445f4d29081f349571b6fffe48c5bc725c7c2dde491f3e0e836 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,338 @@ | ||
# Copyright 1999-2017 Gentoo Foundation | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=6 | ||
|
||
inherit eutils flag-o-matic multilib toolchain-funcs multilib-minimal | ||
|
||
NSPR_VER="4.13.1" | ||
RTM_NAME="NSS_${PV//./_}_RTM" | ||
# Rev of https://git.fedorahosted.org/cgit/nss-pem.git | ||
PEM_GIT_REV="429b0222759d8ad8e6dcd29e62875ae3efd69116" | ||
PEM_P="${PN}-pem-20160329" | ||
|
||
DESCRIPTION="Mozilla's Network Security Services library that implements PKI support" | ||
HOMEPAGE="http://www.mozilla.org/projects/security/pki/nss/" | ||
SRC_URI="https://archive.mozilla.org/pub/security/nss/releases/${RTM_NAME}/src/${P}.tar.gz | ||
cacert? ( https://dev.gentoo.org/~axs/distfiles/${PN}-cacert-class1-class3.patch ) | ||
nss-pem? ( https://dev.gentoo.org/~polynomial-c/${PEM_P}.tar.xz )" | ||
|
||
LICENSE="|| ( MPL-2.0 GPL-2 LGPL-2.1 )" | ||
SLOT="0" | ||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris" | ||
IUSE="cacert +nss-pem utils" | ||
CDEPEND=">=dev-db/sqlite-3.8.2[${MULTILIB_USEDEP}] | ||
>=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]" | ||
DEPEND=">=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] | ||
>=dev-libs/nspr-${NSPR_VER}[${MULTILIB_USEDEP}] | ||
${CDEPEND}" | ||
RDEPEND=">=dev-libs/nspr-${NSPR_VER}[${MULTILIB_USEDEP}] | ||
${CDEPEND} | ||
abi_x86_32? ( | ||
!<=app-emulation/emul-linux-x86-baselibs-20140508-r12 | ||
!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] | ||
)" | ||
|
||
RESTRICT="test" | ||
|
||
S="${WORKDIR}/${P}/${PN}" | ||
|
||
MULTILIB_CHOST_TOOLS=( | ||
/usr/bin/nss-config | ||
) | ||
|
||
PATCHES=( | ||
# Custom changes for gentoo | ||
"${FILESDIR}/${PN}-3.28-gentoo-fixups.patch" | ||
"${FILESDIR}/${PN}-3.21-gentoo-fixup-warnings.patch" | ||
"${FILESDIR}/${PN}-3.23-hppa-byte_order.patch" | ||
) | ||
|
||
src_unpack() { | ||
unpack ${A} | ||
if use nss-pem ; then | ||
mv "${PN}"/lib/ckfw/pem/ "${S}"/lib/ckfw/ || die | ||
fi | ||
} | ||
|
||
src_prepare() { | ||
if use nss-pem ; then | ||
PATCHES+=( | ||
"${FILESDIR}/${PN}-3.21-enable-pem.patch" | ||
) | ||
fi | ||
if use cacert ; then #521462 | ||
PATCHES+=( | ||
"${DISTDIR}/${PN}-cacert-class1-class3.patch" | ||
) | ||
fi | ||
|
||
default | ||
|
||
pushd coreconf >/dev/null || die | ||
# hack nspr paths | ||
echo 'INCLUDES += -I$(DIST)/include/dbm' \ | ||
>> headers.mk || die "failed to append include" | ||
|
||
# modify install path | ||
sed -e '/CORE_DEPTH/s:SOURCE_PREFIX.*$:SOURCE_PREFIX = $(CORE_DEPTH)/dist:' \ | ||
-i source.mk || die | ||
|
||
# Respect LDFLAGS | ||
sed -i -e 's/\$(MKSHLIB) -o/\$(MKSHLIB) \$(LDFLAGS) -o/g' rules.mk | ||
popd >/dev/null || die | ||
|
||
# Fix pkgconfig file for Prefix | ||
sed -i -e "/^PREFIX =/s:= /usr:= ${EPREFIX}/usr:" \ | ||
config/Makefile || die | ||
|
||
# use host shlibsign if need be #436216 | ||
if tc-is-cross-compiler ; then | ||
sed -i \ | ||
-e 's:"${2}"/shlibsign:shlibsign:' \ | ||
cmd/shlibsign/sign.sh || die | ||
fi | ||
|
||
# dirty hack | ||
sed -i -e "/CRYPTOLIB/s:\$(SOFTOKEN_LIB_DIR):../freebl/\$(OBJDIR):" \ | ||
lib/ssl/config.mk || die | ||
sed -i -e "/CRYPTOLIB/s:\$(SOFTOKEN_LIB_DIR):../../lib/freebl/\$(OBJDIR):" \ | ||
cmd/platlibs.mk || die | ||
|
||
multilib_copy_sources | ||
|
||
strip-flags | ||
} | ||
|
||
multilib_src_configure() { | ||
# Ensure we stay multilib aware | ||
sed -i -e "/@libdir@/ s:lib64:$(get_libdir):" config/Makefile || die | ||
} | ||
|
||
nssarch() { | ||
# Most of the arches are the same as $ARCH | ||
local t=${1:-${CHOST}} | ||
case ${t} in | ||
aarch64*)echo "aarch64";; | ||
hppa*) echo "parisc";; | ||
i?86*) echo "i686";; | ||
x86_64*) echo "x86_64";; | ||
*) tc-arch ${t};; | ||
esac | ||
} | ||
|
||
nssbits() { | ||
local cc cppflags="${1}CPPFLAGS" cflags="${1}CFLAGS" | ||
if [[ ${1} == BUILD_ ]]; then | ||
cc=$(tc-getBUILD_CC) | ||
else | ||
cc=$(tc-getCC) | ||
fi | ||
echo > "${T}"/test.c || die | ||
${cc} ${!cppflags} ${!cflags} -c "${T}"/test.c -o "${T}/${1}test.o" || die | ||
case $(file "${T}/${1}test.o") in | ||
*32-bit*x86-64*) echo USE_X32=1;; | ||
*64-bit*|*ppc64*|*x86_64*) echo USE_64=1;; | ||
*32-bit*|*ppc*|*i386*) ;; | ||
*) die "Failed to detect whether ${cc} builds 64bits or 32bits, disable distcc if you're using it, please";; | ||
esac | ||
} | ||
|
||
multilib_src_compile() { | ||
# use ABI to determine bit'ness, or fallback if unset | ||
local buildbits mybits | ||
case "${ABI}" in | ||
n32) mybits="USE_N32=1";; | ||
x32) mybits="USE_X32=1";; | ||
s390x|*64) mybits="USE_64=1";; | ||
${DEFAULT_ABI}) | ||
einfo "Running compilation test to determine bit'ness" | ||
mybits=$(nssbits) | ||
;; | ||
esac | ||
# bitness of host may differ from target | ||
if tc-is-cross-compiler; then | ||
buildbits=$(nssbits BUILD_) | ||
fi | ||
|
||
local makeargs=( | ||
CC="$(tc-getCC)" | ||
AR="$(tc-getAR) rc \$@" | ||
RANLIB="$(tc-getRANLIB)" | ||
OPTIMIZER= | ||
${mybits} | ||
) | ||
|
||
# Take care of nspr settings #436216 | ||
local myCPPFLAGS="${CPPFLAGS} $($(tc-getPKG_CONFIG) nspr --cflags)" | ||
unset NSPR_INCLUDE_DIR | ||
|
||
# Do not let `uname` be used. | ||
if use kernel_linux ; then | ||
makeargs+=( | ||
OS_TARGET=Linux | ||
OS_RELEASE=2.6 | ||
OS_TEST="$(nssarch)" | ||
) | ||
fi | ||
|
||
export NSS_ENABLE_WERROR=0 #567158 | ||
export BUILD_OPT=1 | ||
export NSS_USE_SYSTEM_SQLITE=1 | ||
export NSDISTMODE=copy | ||
export NSS_ENABLE_ECC=1 | ||
export FREEBL_NO_DEPEND=1 | ||
export ASFLAGS="" | ||
|
||
local d | ||
|
||
# Build the host tools first. | ||
LDFLAGS="${BUILD_LDFLAGS}" \ | ||
XCFLAGS="${BUILD_CFLAGS}" \ | ||
NSPR_LIB_DIR="${T}/fakedir" \ | ||
emake -j1 -C coreconf \ | ||
CC="$(tc-getBUILD_CC)" \ | ||
${buildbits:-${mybits}} | ||
makeargs+=( NSINSTALL="${PWD}/$(find -type f -name nsinstall)" ) | ||
|
||
# Then build the target tools. | ||
for d in . lib/dbm ; do | ||
CPPFLAGS="${myCPPFLAGS}" \ | ||
XCFLAGS="${CFLAGS} ${CPPFLAGS}" \ | ||
NSPR_LIB_DIR="${T}/fakedir" \ | ||
emake -j1 "${makeargs[@]}" -C ${d} | ||
done | ||
} | ||
|
||
# Altering these 3 libraries breaks the CHK verification. | ||
# All of the following cause it to break: | ||
# - stripping | ||
# - prelink | ||
# - ELF signing | ||
# http://www.mozilla.org/projects/security/pki/nss/tech-notes/tn6.html | ||
# Either we have to NOT strip them, or we have to forcibly resign after | ||
# stripping. | ||
#local_libdir="$(get_libdir)" | ||
#export STRIP_MASK=" | ||
# */${local_libdir}/libfreebl3.so* | ||
# */${local_libdir}/libnssdbm3.so* | ||
# */${local_libdir}/libsoftokn3.so*" | ||
|
||
export NSS_CHK_SIGN_LIBS="freebl3 nssdbm3 softokn3" | ||
|
||
generate_chk() { | ||
local shlibsign="$1" | ||
local libdir="$2" | ||
einfo "Resigning core NSS libraries for FIPS validation" | ||
shift 2 | ||
local i | ||
for i in ${NSS_CHK_SIGN_LIBS} ; do | ||
local libname=lib${i}.so | ||
local chkname=lib${i}.chk | ||
"${shlibsign}" \ | ||
-i "${libdir}"/${libname} \ | ||
-o "${libdir}"/${chkname}.tmp \ | ||
&& mv -f \ | ||
"${libdir}"/${chkname}.tmp \ | ||
"${libdir}"/${chkname} \ | ||
|| die "Failed to sign ${libname}" | ||
done | ||
} | ||
|
||
cleanup_chk() { | ||
local libdir="$1" | ||
shift 1 | ||
local i | ||
for i in ${NSS_CHK_SIGN_LIBS} ; do | ||
local libfname="${libdir}/lib${i}.so" | ||
# If the major version has changed, then we have old chk files. | ||
[ ! -f "${libfname}" -a -f "${libfname}.chk" ] \ | ||
&& rm -f "${libfname}.chk" | ||
done | ||
} | ||
|
||
multilib_src_install() { | ||
pushd dist >/dev/null || die | ||
|
||
dodir /usr/$(get_libdir) | ||
cp -L */lib/*$(get_libname) "${ED}"/usr/$(get_libdir) || die "copying shared libs failed" | ||
cp -L */lib/libcrmf.a "${ED}"/usr/$(get_libdir) || die "copying libs failed" | ||
cp -L */lib/libfreebl.a "${ED}"/usr/$(get_libdir) || die "copying libs failed" | ||
|
||
# Install nss-config and pkgconfig file | ||
dodir /usr/bin | ||
cp -L */bin/nss-config "${ED}"/usr/bin || die | ||
dodir /usr/$(get_libdir)/pkgconfig | ||
cp -L */lib/pkgconfig/nss.pc "${ED}"/usr/$(get_libdir)/pkgconfig || die | ||
|
||
# create an nss-softokn.pc from nss.pc for libfreebl and some private headers | ||
# bug 517266 | ||
sed -e 's#Libs:#Libs: -lfreebl#' \ | ||
-e 's#Cflags:#Cflags: -I${includedir}/private#' \ | ||
*/lib/pkgconfig/nss.pc >"${ED}"/usr/$(get_libdir)/pkgconfig/nss-softokn.pc \ | ||
|| die "could not create nss-softokn.pc" | ||
|
||
# all the include files | ||
insinto /usr/include/nss | ||
doins public/nss/*.h | ||
insinto /usr/include/nss/private | ||
doins private/nss/{blapi,alghmac}.h | ||
|
||
popd >/dev/null || die | ||
|
||
local f nssutils | ||
# Always enabled because we need it for chk generation. | ||
nssutils="shlibsign" | ||
|
||
if multilib_is_native_abi ; then | ||
if use utils; then | ||
# The tests we do not need to install. | ||
#nssutils_test="bltest crmftest dbtest dertimetest | ||
#fipstest remtest sdrtest" | ||
# checkcert utils has been removed in nss-3.22: | ||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1187545 | ||
# https://hg.mozilla.org/projects/nss/rev/df1729d37870 | ||
nssutils="addbuiltin atob baddbdir btoa certcgi certutil | ||
cmsutil conflict crlutil derdump digest makepqg mangle modutil multinit | ||
nonspr10 ocspclnt oidcalc p7content p7env p7sign p7verify pk11mode | ||
pk12util pp rsaperf selfserv shlibsign signtool signver ssltap strsclnt | ||
symkeyutil tstclnt vfychain vfyserv" | ||
# install man-pages for utils (bug #516810) | ||
doman doc/nroff/*.1 | ||
fi | ||
pushd dist/*/bin >/dev/null || die | ||
for f in ${nssutils}; do | ||
dobin ${f} | ||
done | ||
popd >/dev/null || die | ||
fi | ||
|
||
# Prelink breaks the CHK files. We don't have any reliable way to run | ||
# shlibsign after prelink. | ||
dodir /etc/prelink.conf.d | ||
printf -- "-b ${EPREFIX}/usr/$(get_libdir)/lib%s.so\n" ${NSS_CHK_SIGN_LIBS} \ | ||
> "${ED}"/etc/prelink.conf.d/nss.conf | ||
} | ||
|
||
pkg_postinst() { | ||
multilib_pkg_postinst() { | ||
# We must re-sign the libraries AFTER they are stripped. | ||
local shlibsign="${EROOT}/usr/bin/shlibsign" | ||
# See if we can execute it (cross-compiling & such). #436216 | ||
"${shlibsign}" -h >&/dev/null | ||
if [[ $? -gt 1 ]] ; then | ||
shlibsign="shlibsign" | ||
fi | ||
generate_chk "${shlibsign}" "${EROOT}"/usr/$(get_libdir) | ||
} | ||
|
||
multilib_foreach_abi multilib_pkg_postinst | ||
} | ||
|
||
pkg_postrm() { | ||
multilib_pkg_postrm() { | ||
cleanup_chk "${EROOT}"/usr/$(get_libdir) | ||
} | ||
|
||
multilib_foreach_abi multilib_pkg_postrm | ||
} |