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.
Package-Manager: Portage-2.3.41, Repoman-2.3.9
- Loading branch information
Lars Wendler
committed
Jun 27, 2018
1 parent
4df76df
commit 164ead6
Showing
2 changed files
with
372 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,5 +1,6 @@ | ||
DIST nss-3.29.5.tar.gz 7480246 BLAKE2B 9ab16cbbd95aa31358b5b686bee64cd81c8343524dad8aac084f7c86883f1eaead78912dc1021b0461d027b0085356c4b7156f1d80010c3a0ece29d542deef50 SHA512 ce18bc7e793d2b3698db412b2e5fcabbfd9862eca3def120d5e44bc67276526bff6b33ffa84b8128f8af6d35101000e6f7bb24194f63a55461b3c245fac11faa | ||
DIST nss-3.36.1.tar.gz 23026430 BLAKE2B 76eaf5b24f8954a4e14cf556912250a3ddb7b333054a2ea4ee3d218493a8f12c77a37455aae354ef6ddd9bd55c33a269dad515806d70ef38727fa8a382d47fd4 SHA512 096fe4360b6d584a746ac6156830f8cff821fd173bd889d7a396238919328a227fa4ebb46f738970a4001773046f3dd4f4675b85ff6de8420a4a7657b3ba0c65 | ||
DIST nss-3.37.3.tar.gz 23034239 BLAKE2B 3e30b0fe14501ca0e6b9d14322af73f191164989e6857b9ba46572b7363cdc65c88b672285982f2764ed44fcaf615cb249eea2f45b98050dfc6675003dc74a3b SHA512 11b21818f9fcff11d0e7f4c066ae9fbce0052a30a6b30df9a20022792039b5348554834a472e1b1195e467b9902067f9719678d5ca32efb4e60f1df161feed6f | ||
DIST nss-3.38.tar.gz 23023474 BLAKE2B 72500827955a25c53124ca6054850beef91868019ba155b70f8268fe79261b71e4f11ab42382241c2855478be7e6def57378cda5f398bf5e25f7fa5c035d630e SHA512 06804163daa08f1f65cfe0e9546ddf066ec7f773aa615431a5952f6c04956dd62425fec38d11037ff7fb02b709de03e5a7637c6ba13de5b7686db4f9ecda52ab | ||
DIST nss-cacert-class1-class3.patch 22950 BLAKE2B 9d5e60df5f161a3c27c41e5a9419440a54f888eda454e3cde5ebe626d4075b65cf9938b5144d0fb022377f4bd415bff5e5c67d104409860aa9391b3eb8872c68 SHA512 a5aa740bf110a3f0262e3f1ef2fc739ac2b44f042e220039d48aee8e97cd764d5c10718220364f4098aba955882bd02cadb5481512388971a8290312f88a7df0 | ||
DIST nss-pem-20160329.tar.xz 27732 BLAKE2B 7c23133a7bfb969d8eac98fb6311e76ab60c5d6601c7329f3c492da30c017e66d64a1f8bc827dd36e52e65c1a1ec02b58816442aaf410345c5ed759a02264b84 SHA512 5834b06e4c64205447573d4f4c8989e20986ae67ee00eebce3817eb73794a6355a404143ba1c676ec302ceefaf9df103cb879b1d4ff14ba4e3790dbee3e40eb2 |
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,371 @@ | ||
# Copyright 1999-2018 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.16" | ||
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} | ||
" | ||
|
||
RESTRICT="test" | ||
|
||
S="${WORKDIR}/${P}/${PN}" | ||
|
||
MULTILIB_CHOST_TOOLS=( | ||
/usr/bin/nss-config | ||
) | ||
|
||
PATCHES=( | ||
# Custom changes for gentoo | ||
"${FILESDIR}/${PN}-3.32-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)" | ||
CCC="$(tc-getCXX)" | ||
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" | ||
local i | ||
for i in crmf freebl nssb nssckfw ; do | ||
cp -L */lib/lib${i}.a "${ED%/}"/usr/$(get_libdir) || die "copying libs failed" | ||
done | ||
|
||
# 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,api} | ||
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 | ||
# certcgi has been removed in nss-3.36: | ||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1426602 | ||
nssutils+=( | ||
addbuiltin | ||
atob | ||
baddbdir | ||
btoa | ||
certutil | ||
cmsutil | ||
conflict | ||
crlutil | ||
derdump | ||
digest | ||
makepqg | ||
mangle | ||
modutil | ||
multinit | ||
nonspr10 | ||
ocspclnt | ||
oidcalc | ||
p7content | ||
p7env | ||
p7sign | ||
p7verify | ||
pk11mode | ||
pk12util | ||
pp | ||
rsaperf | ||
selfserv | ||
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 | ||
} |