blob: b817c56d427b2d5d177b05c2f40c9320db03850c [file] [log] [blame]
# Maintainer: Alexey Pavlov <alexpux@gmail.com>
# Contributor: Renato Silva <br.renatosilva@gmail.com>
_realname=nss
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=3.52.1
_nsprver=4.25
pkgrel=1
pkgdesc="Mozilla Network Security Services (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32')
url="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS"
license=(MPL2)
depends=("${MINGW_PACKAGE_PREFIX}-nspr"
"${MINGW_PACKAGE_PREFIX}-sqlite3"
"${MINGW_PACKAGE_PREFIX}-zlib")
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "zip" "perl")
options=('staticlibs' 'strip' '!emptydirs')
source=(https://ftp.mozilla.org/pub/security/nss/releases/NSS_${pkgver//./_}_RTM/src/${_realname}-${pkgver}.tar.gz
https://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/moztools-static.zip
nss.pc.in
nss-config.in
ssl-renegotiate-transitional.patch
nss-build.patch
manifest
blank-cert8.db
blank-key3.db
blank-secmod.db
nss-3.20.1-headers.patch)
sha256sums=('bcc81ac33aeb4ecad182dc21e34d2c97bcc148fd7b9e76f85bebb892405a9278'
'1894bc68a0badd6e6f68f66abc4c6cd8e222791dd194f6b631ce536011ab6707'
'b9f1428ca2305bf30b109507ff335fa00bce5a7ce0434b50acd26ad7c47dd5bd'
'e44ac5095b4d88f24ec7b2e6a9f1581560bd3ad41a3d198596d67ef22f67adb9'
'12df04bccbf674db1eef7a519a28987927b5e9c107b1dc386686f05e64f49a97'
'a6891594ca65fc2d5ba18e82e4b6364a96538974314942f45fbeb917b2948f57'
'838098b25a8044176b3139b4003594570c62a8d64f5470fbbd769f3bf44e0855'
'e45105a21696a26c834cfaa3f664c42426c99546094e22fbe3a5e1dd3fbc1f33'
'6115cab6d646a05dd6b63e21c488da6bc36975f6e5ad8d6371c30a166c41cddc'
'3790a5404f6b7edb652544eb75bfaa8f1c515f41ef14369248151d7c52cd249e'
'f9d9b858a87c49c3ba1f058279b885fe704e23d9bcaaba00f17e534f6a313822')
prepare() {
cd ${srcdir}/${_realname}-${pkgver}
# Adds transitional SSL renegotiate support - patch from Debian
# patch -Np3 -i ${srcdir}/ssl-renegotiate-transitional.patch
patch -Np1 -i ${srcdir}/nss-build.patch
patch -Np1 -i ${srcdir}/nss-3.20.1-headers.patch
# Respect LDFLAGS
sed -e 's/\$(MKSHLIB) -o/\$(MKSHLIB) \$(LDFLAGS) -o/' \
-i nss/coreconf/rules.mk
cp ${srcdir}/moztools/bin/nsinstall.exe ${srcdir}/${_realname}-${pkgver}/
cp ${srcdir}/manifest ${srcdir}/${_realname}-${pkgver}/nsinstall.exe.manifest
}
build() {
[[ -d "${srcdir}"/build-${CARCH} ]] && rm -rf "${srcdir}"/build-${CARCH}
mkdir -p "${srcdir}"/build-${CARCH} && cd "${srcdir}"/build-${CARCH}
cp -rf ${srcdir}/${_realname}-${pkgver}/* "${srcdir}"/build-${CARCH}
export BUILD_OPT=1
export NSS_NO_SSL2_NO_EXPORT=1
export NSS_USE_SYSTEM_SQLITE=1
export IMPORT_LIB_SUFFIX=.dll.a
export NSS_DISABLE_GTESTS=1
export NSS_ENABLE_ECC=1
export NSS_DISABLE_DBM=1
export NSPR_INCLUDE_DIR="`nspr-config --includedir`"
export NSPR_LIB_DIR="`nspr-config --libdir`"
export SQLITE_LIB_DIR="${MINGW_PREFIX}/lib"
export XCFLAGS="${CFLAGS}"
export EXTRA_SHARED_LIBS="-lplc4 -lplds4 -lnspr4 -lz -lcrypt32 -lws2_32"
local conf64=
[[ "$CARCH" = "x86_64" ]] && {
conf64="USE_64=1"
}
make -j1 -C nss OS_TARGET=WINNT OS_RELEASE=5.0 XP_WIN=1 \
NSINSTALL="${srcdir}"/build-${CARCH}/nsinstall NS_USE_GCC=1 ${conf64} \
NSS_USE_SYSTEM_SQLITE=1 USE_SYSTEM_ZLIB=1 ZLIB_LIBS=${MINGW_PREFIX}/lib/libz.dll.a \
CC=gcc RC=windres RANLIB=ranlib
}
package() {
cd "${srcdir}"/build-${CARCH}
install -d "${pkgdir}${MINGW_PREFIX}"/{bin,include/nss3,lib/{nss,pkgconfig}}
NSS_VMAJOR=$(grep '#define.*NSS_VMAJOR' nss/lib/nss/nss.h | awk '{print $3}')
NSS_VMINOR=$(grep '#define.*NSS_VMINOR' nss/lib/nss/nss.h | awk '{print $3}')
NSS_VPATCH=$(grep '#define.*NSS_VPATCH' nss/lib/nss/nss.h | awk '{print $3}')
sed ../nss.pc.in \
-e "s,%libdir%,${MINGW_PREFIX}/lib,g" \
-e "s,%prefix%,${MINGW_PREFIX},g" \
-e "s,%exec_prefix%,${MINGW_PREFIX}/bin,g" \
-e "s,%includedir%,${MINGW_PREFIX}/include/nss3,g" \
-e "s,%NSPR_VERSION%,${_nsprver},g" \
-e "s,%NSS_VERSION%,${pkgver},g" \
> "${pkgdir}${MINGW_PREFIX}/lib/pkgconfig/nss.pc"
cp -f ${pkgdir}${MINGW_PREFIX}/lib/pkgconfig/nss.pc ${pkgdir}${MINGW_PREFIX}/lib/pkgconfig/mozilla-nss.pc
sed ../nss-config.in \
-e "s,@libdir@,${MINGW_PREFIX}/lib,g" \
-e "s,@prefix@,${MINGW_PREFIX}/bin,g" \
-e "s,@exec_prefix@,${MINGW_PREFIX}/bin,g" \
-e "s,@includedir@,${MINGW_PREFIX}/include/nss3,g" \
-e "s,@MOD_MAJOR_VERSION@,${NSS_VMAJOR},g" \
-e "s,@MOD_MINOR_VERSION@,${NSS_VMINOR},g" \
-e "s,@MOD_PATCH_VERSION@,${NSS_VPATCH},g" \
> "${pkgdir}${MINGW_PREFIX}/bin/nss-config"
chmod 755 ${pkgdir}${MINGW_PREFIX}/bin/nss-config
# Copy the binary libraries we want
for file in softokn nss nssutil ssl smime #nssdbm
do
install -m 755 dist/*.OBJ/lib/${file}3.dll ${pkgdir}${MINGW_PREFIX}/bin/
install -m 644 dist/*.OBJ/lib/lib${file}3.dll.a ${pkgdir}${MINGW_PREFIX}/lib/lib${file}3.dll.a
done
install -m 755 dist/*.OBJ/lib/nssckbi.dll ${pkgdir}${MINGW_PREFIX}/bin/
install -m 755 dist/*.OBJ/lib/freebl3.dll ${pkgdir}${MINGW_PREFIX}/bin/
# Install the empty NSS db files
mkdir -p ${pkgdir}${MINGW_PREFIX}/etc/pki/nssdb
install -m 644 ${srcdir}/blank-cert8.db ${pkgdir}${MINGW_PREFIX}/etc/pki/nssdb/cert8.db
install -m 644 ${srcdir}/blank-key3.db ${pkgdir}${MINGW_PREFIX}/etc/pki/nssdb/key3.db
install -m 644 ${srcdir}/blank-secmod.db ${pkgdir}${MINGW_PREFIX}/etc/pki/nssdb/secmod.db
# Copy the development libraries we want
for file in libcrmf.dll.a libnssb.dll.a libnssckfw.dll.a libfreebl.dll.a libcryptohi.dll.a libcerthi.dll.a libcertdb.dll.a libsoftokn.dll.a libpkixutil.dll.a
do
install -m 644 dist/*.OBJ/lib/${file} ${pkgdir}${MINGW_PREFIX}/lib/
done
# Copy the binaries we want
for file in certutil cmsutil crlutil modutil pk12util signtool signver ssltap
do
install -m 755 dist/*.OBJ/bin/${file}.exe ${pkgdir}${MINGW_PREFIX}/bin/
done
# Copy the binaries we ship as unsupported
for file in atob btoa derdump ocspclnt pp selfserv shlibsign strsclnt symkeyutil \
tstclnt vfyserv vfychain
do
install -m 755 dist/*.OBJ/bin/${file}.exe ${pkgdir}${MINGW_PREFIX}/lib/nss/
done
# Copy the include files we want
for file in dist/public/nss/*.h
do
install -m 644 ${file} ${pkgdir}${MINGW_PREFIX}/include/nss3
done
# License
install -Dm644 nss/COPYING ${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING
}