From 3019798dda2a26f1f65cd88cc136ae6163f909ef Mon Sep 17 00:00:00 2001 From: Packit Date: Sep 23 2020 15:57:31 +0000 Subject: Add spec-file for the distribution --- diff --git a/SPECS/mingw-nss.spec b/SPECS/mingw-nss.spec new file mode 100644 index 0000000..e388b79 --- /dev/null +++ b/SPECS/mingw-nss.spec @@ -0,0 +1,294 @@ +%{?mingw_package_header} +%define _pkg_name nss + +Name: mingw-%{_pkg_name} +Version: 3.20 +Release: 2%{?dist} +Summary: MinGW build of Network Security Services + +License: MPLv1.1 or GPLv2+ or LGPLv2+ +URL: http://www.mozilla.org/projects/security/pki/nss/ +Source0: https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_20_RTM/src/nss-3.20.tar.gz + +Source1: nss.pc.in +Source2: nss-config.in +Source3: blank-cert8.db +Source4: blank-key3.db +Source5: blank-secmod.db + +Patch00: nss-build.patch +Patch01: nss-3.18.1-headers.patch + +BuildArch: noarch +ExclusiveArch: %{ix86} x86_64 %{arm} + +BuildRequires: mingw32-filesystem >= 95 +BuildRequires: mingw64-filesystem >= 95 +BuildRequires: mingw32-gcc mingw64-gcc +BuildRequires: mingw32-binutils mingw64-binutils +BuildRequires: mingw32-nspr mingw64-nspr +BuildRequires: mingw32-sqlite mingw64-sqlite +BuildRequires: mingw32-zlib mingw64-zlib +BuildRequires: mingw32-pkg-config mingw64-pkg-config +BuildRequires: perl-interpreter + +%description +Network Security Services (NSS) is a set of libraries designed to +support cross-platform development of security-enabled client and +server applications. Applications built with NSS can support SSL v2 +and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 +v3 certificates, and other security standards. + +%package -n mingw32-%{_pkg_name} +Summary: %{summary} + +%description -n mingw32-%{_pkg_name} +Network Security Services (NSS) is a set of libraries designed to +support cross-platform development of security-enabled client and +server applications. Applications built with NSS can support SSL v2 +and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 +v3 certificates, and other security standards. + +%package -n mingw64-%{_pkg_name} +Summary: %{summary} + +%description -n mingw64-%{_pkg_name} +Network Security Services (NSS) is a set of libraries designed to +support cross-platform development of security-enabled client and +server applications. Applications built with NSS can support SSL v2 +and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 +v3 certificates, and other security standards. + +%{?mingw_debug_package} + +%prep +%setup -q -n %{_pkg_name}-%{version} + +%patch00 -p1 +%patch01 -p1 + +# Because this is a poorly-built library +pushd nss + +mkdir -p ../build_win32 +cp -R * ../build_win32 + +mkdir -p ../build_win64 +cp -R * ../build_win64 + +%build +# Building for Win32 +pushd build_win32 + +BUILD_OPT=1 +export BUILD_OPT + +export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 +export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 + +%{mingw32_env} +NSPR_INCLUDE_DIR=`%{mingw32_target}-pkg-config --cflags-only-I nspr | sed 's/-I//'` +NSPR_LIB_DIR=`%{mingw32_target}-pkg-config --libs-only-L nspr | sed 's/-L//'` + +export NSPR_INCLUDE_DIR +export NSPR_LIB_DIR + +(cd coreconf/nsinstall && gcc -o nsinstall nsinstall.c pathsub.c) + +%{mingw32_make} OS_TARGET=WINNT OS_RELEASE=5.0 XP_WIN=1 \ + NSINSTALL=$(pwd)/coreconf/nsinstall/nsinstall NS_USE_GCC=1 \ + NSS_USE_SYSTEM_SQLITE=1 USE_SYSTEM_ZLIB=1 ZLIB_LIBS=%{mingw32_libdir}/libz.dll.a \ + CC=%{mingw32_cc} RC=%{mingw32_windres} RANLIB=%{mingw32_ranlib} + +popd + +# Building for Win64 +pushd build_win64 + +BUILD_OPT=1 +export BUILD_OPT + +export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 +export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 + + +%{mingw64_env} +NSPR_INCLUDE_DIR=`%{mingw64_target}-pkg-config --cflags-only-I nspr | sed 's/-I//'` +NSPR_LIB_DIR=`%{mingw64_target}-pkg-config --libs-only-L nspr | sed 's/-L//'` + +export NSPR_INCLUDE_DIR +export NSPR_LIB_DIR + +(cd coreconf/nsinstall && gcc -o nsinstall nsinstall.c pathsub.c) + +%{mingw64_make} OS_TARGET=WINNT OS_RELEASE=5.0 XP_WIN=1 \ + NSINSTALL=$(pwd)/coreconf/nsinstall/nsinstall NS_USE_GCC=1 USE_64=1 \ + NSS_USE_SYSTEM_SQLITE=1 USE_SYSTEM_ZLIB=1 ZLIB_LIBS=%{mingw64_libdir}/libz.dll.a \ + CC=%{mingw64_cc} RC=%{mingw64_windres} RANLIB=%{mingw64_ranlib} + +popd + +%install +export PKG_CONFIG_PATH=%{mingw64_libdir}/pkgconfig + +mkdir -p %{buildroot}%{mingw32_libdir}/pkgconfig +mkdir -p %{buildroot}%{mingw64_libdir}/pkgconfig + +# Manually create the .pc file +cat %{SOURCE1} | sed -e "s,%%libdir%%,%{mingw64_libdir},g" \ + -e "s,%%prefix%%,%{mingw64_prefix},g" \ + -e "s,%%exec_prefix%%,%{mingw64_prefix},g" \ + -e "s,%%includedir%%,%{mingw64_includedir}/nss3,g" \ + -e "s,%%NSPR_VERSION%%,4\.9\.4,g" \ + -e "s,%%NSS_VERSION%%,%{version},g" > \ + %{buildroot}%{mingw64_libdir}/pkgconfig/nss.pc +cat %{SOURCE1} | sed -e "s,%%libdir%%,%{mingw32_libdir},g" \ + -e "s,%%prefix%%,%{mingw32_prefix},g" \ + -e "s,%%exec_prefix%%,%{mingw32_prefix},g" \ + -e "s,%%includedir%%,%{mingw32_includedir}/nss3,g" \ + -e "s,%%NSPR_VERSION%%,4\.9\.4,g" \ + -e "s,%%NSS_VERSION%%,%{version},g" > \ + %{buildroot}%{mingw32_libdir}/pkgconfig/nss.pc + +NSS_VMAJOR=`cat nss/lib/nss/nss.h \ + | grep "#define.*NSS_VMAJOR" \ + | awk '{print $3}'` +NSS_VMINOR=`cat nss/lib/nss/nss.h \ + | grep "#define.*NSS_VMINOR" \ + | awk '{print $3}'` +NSS_VPATCH=`cat nss/lib/nss/nss.h \ + | grep "#define.*NSS_VPATCH" \ + | awk '{print $3}'` + + +export NSS_VMAJOR +export NSS_VMINOR +export NSS_VPATCH + +mkdir -p %{buildroot}%{mingw32_bindir} +mkdir -p %{buildroot}%{mingw64_bindir} + +cat %{SOURCE2} | sed -e "s,@libdir@,%{mingw64_libdir},g" \ + -e "s,@prefix@,%{mingw64_prefix},g" \ + -e "s,@exec_prefix@,%{mingw64_prefix},g" \ + -e "s,@includedir@,%{mingw64_includedir}/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" \ + > $RPM_BUILD_ROOT%{mingw64_bindir}/nss-config + +cat %{SOURCE2} | sed -e "s,@libdir@,%{mingw32_libdir},g" \ + -e "s,@prefix@,%{mingw32_prefix},g" \ + -e "s,@exec_prefix@,%{mingw32_prefix},g" \ + -e "s,@includedir@,%{mingw32_includedir}/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" \ + > %{buildroot}%{mingw32_bindir}/nss-config + +chmod 755 %{buildroot}%{mingw64_bindir}/nss-config +chmod 755 %{buildroot}%{mingw32_bindir}/nss-config + +# There is no 'make install' target, so we do it all manually +mkdir -p %{buildroot}%{mingw64_includedir}/nss3 +mkdir -p %{buildroot}%{mingw64_bindir} +mkdir -p %{buildroot}%{mingw64_libdir}/nss + +mkdir -p %{buildroot}%{mingw32_includedir}/nss3 +mkdir -p %{buildroot}%{mingw32_bindir} +mkdir -p %{buildroot}%{mingw32_libdir}/nss + +for file in softokn nss nssutil \ + ssl smime nssdbm +do + install -m 755 dist/*x86_64*.OBJ/lib/${file}3.dll %{buildroot}%{mingw64_bindir}/ + install -m 644 dist/*x86_64*.OBJ/lib/lib${file}3.a %{buildroot}%{mingw64_libdir}/lib${file}3.dll.a + + install -m 755 dist/*i686*.OBJ/lib/${file}3.dll %{buildroot}%{mingw32_bindir} + install -m 644 dist/*i686*.OBJ/lib/lib${file}3.a %{buildroot}%{mingw32_libdir}/lib${file}3.dll.a +done + +install -m 755 dist/*x86_64*.OBJ/lib/nssckbi.dll %{buildroot}%{mingw64_bindir}/ +install -m 755 dist/*x86_64*.OBJ/lib/freebl3.dll %{buildroot}%{mingw64_bindir}/ + +install -m 755 dist/*i686*.OBJ/lib/nssckbi.dll %{buildroot}%{mingw32_bindir}/ +install -m 755 dist/*i686*.OBJ/lib/freebl3.dll %{buildroot}%{mingw32_bindir}/ + +# Install the empty NSS db files +mkdir -p %{buildroot}%{mingw64_sysconfdir}/pki/nssdb +mkdir -p %{buildroot}%{mingw32_sysconfdir}/pki/nssdb + +install -m 644 %{SOURCE3} %{buildroot}%{mingw64_sysconfdir}/pki/nssdb/cert8.db +install -m 644 %{SOURCE4} %{buildroot}%{mingw64_sysconfdir}/pki/nssdb/key3.db +install -m 644 %{SOURCE5} %{buildroot}%{mingw64_sysconfdir}/pki/nssdb/secmod.db + +install -m 644 %{SOURCE3} %{buildroot}%{mingw32_sysconfdir}/pki/nssdb/cert8.db +install -m 644 %{SOURCE4} %{buildroot}%{mingw32_sysconfdir}/pki/nssdb/key3.db +install -m 644 %{SOURCE5} %{buildroot}%{mingw32_sysconfdir}/pki/nssdb/secmod.db + +# And more development files +for file in libcrmf.a libnssb.a libnssckfw.a +do + install -m 644 dist/*x86_64*.OBJ/lib/${file} %{buildroot}%{mingw64_libdir} + install -m 644 dist/*i686*.OBJ/lib/${file} %{buildroot}%{mingw32_libdir} +done + +# The executable binaries +for file in certutil cmsutil crlutil modutil pk12util signtool signver ssltap +do + install -m 755 dist/*x86_64*.OBJ/bin/${file}.exe %{buildroot}%{mingw64_bindir} + install -m 755 dist/*i686*.OBJ/bin/${file}.exe %{buildroot}%{mingw32_bindir} +done + +# And more, unsupported(?), binaries +for file in atob btoa derdump ocspclnt pp selfserv shlibsign strsclnt symkeyutil \ + tstclnt vfyserv vfychain +do + install -m 755 dist/*x86_64*.OBJ/bin/${file}.exe %{buildroot}%{mingw64_libdir}/nss + install -m 755 dist/*i686*.OBJ/bin/${file}.exe %{buildroot}%{mingw32_libdir}/nss +done + +for file in dist/public/nss/*.h +do + install -m 644 ${file} %{buildroot}%{mingw32_includedir}/nss3 +done +for file in dist/public/nss/*.h +do + install -m 644 ${file} %{buildroot}%{mingw64_includedir}/nss3 +done + +%files -n mingw32-%{_pkg_name} +%doc nss/COPYING +%{mingw32_bindir}/*.dll +%{mingw32_bindir}/*.exe +%{mingw32_bindir}/nss-config +%{mingw32_libdir}/*.a +%{mingw32_libdir}/pkgconfig/nss.pc +%{mingw32_libdir}/nss/ +%{mingw32_includedir}/nss3 +%{mingw32_sysconfdir}/pki/nssdb/*.db + +%files -n mingw64-%{_pkg_name} +%doc nss/COPYING +%{mingw64_bindir}/*.dll +%{mingw64_bindir}/*.exe +%{mingw64_bindir}/nss-config +%{mingw64_libdir}/*.a +%{mingw64_libdir}/pkgconfig/nss.pc +%{mingw64_libdir}/nss/ +%{mingw64_includedir}/nss3 +%{mingw64_sysconfdir}/pki/nssdb/*.db + +%changelog +* Fri Aug 17 2018 Victor Toso - 3.20-2 +- ExclusiveArch: i686, x86_64 +- Related: rhbz#1615874 + +* Wed Oct 07 2015 Fabiano FidĂȘncio - 3.20-1 +- Update to 3.20 + +* Mon Jun 01 2015 Fabiano FidĂȘncio - 3.18.1-1 +- Update to 3.18.1 + +* Tue Dec 11 2012 Greg Hellings - 3.14-1 +- Initial build