%{!?gcc_compiler: %define gcc_compiler 1} # For now, build with GCC fails :-( %{!?default_bits: %define default_bits 64} %{!?dotests: %define dotests 1} %global nss_major_version 3 %global nss_minor_version 59 %global nspr_version 4.29 Summary: Network Security Services Name: nss Version: %{nss_major_version}.%{nss_minor_version} Release: 1 License: MPL/GPL/LGPL URL: http://www.mozilla.org/projects/security/pki/nss/ Group: System Environment/Libraries Prefix: %{_prefix} Source0: %{name}-%{version}-with-nspr-%{nspr_version}.tar.gz Source1: nss-config.in Patch0: nss-3.59-aixbuild.patch Patch1: nss-3.27.1-namemax.patch Patch2: nss-3.27.1-ssl3ext.patch Patch3: nss-3.27.1-aix.patch Patch4: nss-3.34.1-1.aix.patch Patch5: nss-3.34.1-mkshlib.patch Requires: nspr = %{nspr_version} Requires: sqlite >= 3.27.0 Requires: libgcc >= 8.3.0 BuildRequires: nspr = %{nspr_version} %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 devel Summary: Development libraries for Network Security Services Group: Development/Libraries Requires: %{name} = %{version} Requires: nspr-devel = %{nspr_version} BuildRequires: nspr-devel = %{nspr_version} %description devel Header and Library files for doing development with Network Security Services. %prep if [ "%{dotests}" == 1 ]; then if [ "${DOMSUF}" == "" ]; then echo "You need to set the DOMSUF environnment variable in order to run the tests." echo "It should be set so that ping \$HOST.\$DOMSUF works." exit 1 fi fi %setup -q %patch0 -p1 -b .aixbuild #%patch1 -p1 -b .namemax #%patch2 -p1 -b .ssl3ext %patch3 -p0 %patch4 -p0 %patch5 mkdir 32bit cp -rp nspr nss 32bit cp -rp 32bit 64bit %build # Ask to NOT build the libsqlite3.so !! (conflict !!) export NSS_USE_SYSTEM_SQLITE=1 %if %{gcc_compiler} == 0 export NS_AIX_XLC=1 %endif export NSS_DISABLE_GTESTS=1 export NSPR_INCLUDE_DIR=/opt/freeware/include/nspr4 export CC="/opt/freeware/bin/gcc" export CXX="/opt/freeware/bin/g++" export AR=/usr/bin/ar build_nss() { set -x cd ${OBJECT_MODE}bit/nss echo `date +%Y%m%d_%H%M%S`" : Starting ${OBJECT_MODE}bit build" #nSS_INCLUDES= #for HEADER_DIR in `(for HEADER in \`find .. -name *.h\`; do dirname ${HEADER}; done) | sort -u`; do # ABS_DIR=`pwd`/${HEADER_DIR} # NSS_INCLUDES="-I ${ABS_DIR} ${NSS_INCLUDES}" #done #NSS_INCLUDES="-I `pwd`/../dist/AIX6.1_DBG.OBJ/include ${NSS_INCLUDES}" #export NSS_INCLUDES=${NSS_INCLUDES} #CFLAGS="-I/opt/freeware/include -I${NSPR_INCLUDE_DIR} -D_LARGE_FILES -maix${OBJECT_MODE} " gmake echo `date +%Y%m%d_%H%M%S`" : ${OBJECT_MODE}bit build completed" if [ "%{dotests}" == 1 ]; then echo `date +%Y%m%d_%H%M%S`" : Starting ${OBJECT_MODE}bit tests" export LIBPATH=`pwd`/../dist/AIX6.1_DBG.OBJ/lib echo "HOST=${HOST} ; DOMSUF=${DOMSUF}" cd tests ./all.sh || true cd .. unset LIBPATH echo `date +%Y%m%d_%H%M%S`" : ${OBJECT_MODE}bit tests completed" fi cd ../.. } # first build the 64-bit version export NSPR_LIB_DIR=/opt/freeware/lib64 export OBJECT_MODE=64 export USE_64=1 build_nss # now build the 32-bit version export NSPR_LIB_DIR=/opt/freeware/lib export OBJECT_MODE=32 #export LDFLAGS="-L/opt/freeware/lib -Wl,-blibpath:/opt/freeware/lib:/usr/lib:/lib -lgcc_s.a" unset USE_64 build_nss mkdir -p 32bit/dist/pkgconfig cat %{SOURCE1} | sed -e "s,@libdir@,${_libdir},g" \ -e "s,@prefix@,%{_prefix},g" \ -e "s,@exec_prefix@,%{_prefix},g" \ -e "s,@includedir@,%{_includedir}/nss3,g" \ -e "s,@MOD_MAJOR_VERSION@,%{nss_major_version},g" \ -e "s,@MOD_MINOR_VERSION@,%{nss_minor_version},g" \ -e "s,@MOD_PATCH_VERSION@,%{nss_patch_version},g" \ > 32bit/dist/pkgconfig/nss-config chmod 755 32bit/dist/pkgconfig/nss-config mkdir -p 64bit/dist/pkgconfig cat %{SOURCE1} | sed -e "s,@libdir@,${_libdir}64,g" \ -e "s,@prefix@,%{_prefix},g" \ -e "s,@exec_prefix@,%{_prefix},g" \ -e "s,@includedir@,%{_includedir}/nss3,g" \ -e "s,@MOD_MAJOR_VERSION@,%{nss_major_version},g" \ -e "s,@MOD_MINOR_VERSION@,%{nss_minor_version},g" \ -e "s,@MOD_PATCH_VERSION@,%{nss_patch_version},g" \ > 64bit/dist/pkgconfig/nss-config chmod 755 64bit/dist/pkgconfig/nss-config %install export PATH=/opt/freeware/bin:$PATH export AR="/usr/bin/ar" [ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} # There is no make install target so we do it manually # No make install target so we do it manually mkdir -p ${RPM_BUILD_ROOT}%{_bindir} mkdir -p ${RPM_BUILD_ROOT}%{_libdir}/nss3 mkdir -p ${RPM_BUILD_ROOT}%{_libdir}64/nss3 mkdir -p ${RPM_BUILD_ROOT}%{_libdir}/nss3/pkgconfig mkdir -p ${RPM_BUILD_ROOT}%{_libdir}64/nss3/pkgconfig mkdir -p ${RPM_BUILD_ROOT}%{_includedir}/nss3 mkdir -p ${RPM_BUILD_ROOT}/usr/bin # process shared libraries (libsqlite3 removed from list) for solibfile in libfreebl3 libnssckbi libnssutil3 libsoftokn3 libssl3 libnss3 libnssdbm3 libsmime3 do # copy shared objects install -p -m 755 32bit/dist/*.OBJ/lib/${solibfile}.so ${RPM_BUILD_ROOT}%{_libdir} install -p -m 755 64bit/dist/*.OBJ/lib/${solibfile}.so ${RPM_BUILD_ROOT}%{_libdir}64 # build AIX shared libraries ${AR} -X32 -rv ${RPM_BUILD_ROOT}%{_libdir}/${solibfile}.a 32bit/dist/*.OBJ/lib/${solibfile}.so ${AR} -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/${solibfile}.a 64bit/dist/*.OBJ/lib/${solibfile}.so done # Add symlinks from 32 ../lib to ../lib64 bits ( cd ${RPM_BUILD_ROOT}%{_libdir}64 for solibfile in libfreebl3 libnssckbi libnssutil3 libsoftokn3 libssl3 libnss3 libnssdbm3 libsmime3 do ln -s %{_libdir}/${solibfile}.a . done ) DEFAULT_BITS=64 if [ "%{default_bits}" == 32 ]; then DEFAULT_BITS=32 fi # process binaries files for binfile in certutil cmsutil crlutil modutil pk12util \ atob btoa derdump ocspclnt pp selfserv shlibsign \ strsclnt symkeyutil tstclnt vfyserv vfychain \ signtool signver ssltap do install -p -m 755 32bit/dist/*.OBJ/bin/${binfile} ${RPM_BUILD_ROOT}%{_bindir}/${binfile}_32 install -p -m 755 64bit/dist/*.OBJ/bin/${binfile} ${RPM_BUILD_ROOT}%{_bindir}/${binfile}_64 ln -s %{_bindir}/${binfile}_${DEFAULT_BITS} ${RPM_BUILD_ROOT}%{_bindir}/${binfile} done # copy some other libraries for file in libcrmf.a libnssb.a libnssckfw.a libnss.a libjar.a \ libnssutil.a libsmime.a libssl.a libnssdev.a libzlib.a do install -p -m 644 32bit/dist/*.OBJ/lib/${file} ${RPM_BUILD_ROOT}%{_libdir}/nss3 install -p -m 644 64bit/dist/*.OBJ/lib/${file} ${RPM_BUILD_ROOT}%{_libdir}64/nss3 done # copy the include files for file in 32bit/dist/public/nss/*.h do install -p -m 644 ${file} ${RPM_BUILD_ROOT}%{_includedir}/nss3 done # copy the package configuration files install -p -m 755 32bit/dist/pkgconfig/nss-config ${RPM_BUILD_ROOT}%{_bindir}/nss-config_32 install -p -m 755 64bit/dist/pkgconfig/nss-config ${RPM_BUILD_ROOT}%{_bindir}/nss-config_64 ln -s %{_bindir}/nss-config_${DEFAULT_BITS} ${RPM_BUILD_ROOT}%{_bindir}/nss-config # strip binaries /usr/bin/strip -X32_64 ${RPM_BUILD_ROOT}%{_bindir}/*_32 ${RPM_BUILD_ROOT}%{_bindir}/*_64 || : %posttrans # Reinstate the LPP rpm.rte symlink, they have probably been replaced/removed # Get the LPP rpm.rte version first and check for rpm.rte version because # rpm.rte >= 4.13.0.4 ships files in "/usr/opt/rpm" path and # rpm.rte below that level ships files in "/usr/opt/freeware" ver=$(lslpp -Lc rpm.rte | /usr/bin/awk 'FNR==2' | /usr/bin/awk -F':' '{print $3}') f1=$(echo $ver | /usr/bin/cut -d"." -f1) f2=$(echo $ver | /usr/bin/cut -d"." -f2) f4=$(echo $ver | /usr/bin/cut -d"." -f4) # 3.0.5.x, 4.9.1.3, 4.13.0.x, 4.15.1.x are the various rpm.rte levels # It's enough to compare First, Second & Fourth fields against 4.13.0.4 if [[ ( $f1 -gt 4 ) || ( $f1 -eq 4 && ( ( $f2 -gt 13 ) || ( ( $f2 -eq 13 ) && ( $f4 -ge 4 )))) ]]; then LINK_PATH="/usr/opt/rpm" else LINK_PATH="/usr/opt/freeware" fi for f in libfreebl3.so libfreebl3.a libnss3.a libnss3.so libnssdbm3.a libnssdbm3.so libnssutil3.a libnssutil3.so libsmime3.a libsmime3.so \ libsoftokn3.so libsoftokn3.a libssl3.so libssl3.a ; do if ! test -e /usr/lib/$f && ! test -h /usr/lib/$f then ln -sf ${LINK_PATH}/lib/$f /usr/lib/$f fi done %clean [ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} %files %defattr(-,root,system) %{_libdir}/libnss3.a %{_libdir}/libnss3.so %{_libdir}64/libnss3.a %{_libdir}64/libnss3.so %{_libdir}/libnssutil3.a %{_libdir}/libnssutil3.so %{_libdir}64/libnssutil3.a %{_libdir}64/libnssutil3.so %{_libdir}/libnssdbm3.a %{_libdir}/libnssdbm3.so %{_libdir}64/libnssdbm3.a %{_libdir}64/libnssdbm3.so %{_libdir}/libssl3.a %{_libdir}/libssl3.so %{_libdir}64/libssl3.a %{_libdir}64/libssl3.so %{_libdir}/libsmime3.a %{_libdir}/libsmime3.so %{_libdir}64/libsmime3.a %{_libdir}64/libsmime3.so %{_libdir}/libsoftokn3.a %{_libdir}/libsoftokn3.so %{_libdir}64/libsoftokn3.a %{_libdir}64/libsoftokn3.so %{_libdir}/libnssckbi.a %{_libdir}/libnssckbi.so %{_libdir}64/libnssckbi.a %{_libdir}64/libnssckbi.so %{_libdir}/libfreebl3.a %{_libdir}/libfreebl3.so %{_libdir}64/libfreebl3.a %{_libdir}64/libfreebl3.so %{_bindir}/certutil* %{_bindir}/cmsutil* %{_bindir}/crlutil* %{_bindir}/modutil* %{_bindir}/pk12util* %{_bindir}/signtool* %{_bindir}/signver* %{_bindir}/ssltap* %{_bindir}/atob* %{_bindir}/btoa* %{_bindir}/derdump* %{_bindir}/ocspclnt* %{_bindir}/pp* %{_bindir}/selfserv* %{_bindir}/shlibsign* %{_bindir}/strsclnt* %{_bindir}/symkeyutil* %{_bindir}/tstclnt* %{_bindir}/vfyserv* %{_bindir}/vfychain* %files devel %defattr(-,root,system) %{_bindir}/nss-config* %{_libdir}/nss3/*.a %{_libdir}64/nss3/*.a %{_includedir}/* %changelog * Wed Jan 27 2021 Reshma V Kumar - 3.59-1 - Update to fix CVE-2020-25648 * Wed Sep 25 2019 Harshita Jain - 3.45-1 - Update for CVE 2018-0495 , CVE-2018-12404 * Thu Jul 18 2019 Reshma V Kumar - 3.34.1-2 - Rebuild to fix bad cpio magic error in nss-devel package. * Wed Jan 18 2017 Reshma V Kumar -3.27.1 - Update to latest version * Thu Oct 20 2016 Matthieu Sarter - 3.27.1-1 - Update to version 3.27.1 * Thu Jun 30 2016 Tony Reix 3.14.3-2 - Due to conflict with sqlite package (breaking subversion), all libsqlite3* files are not built. * Mon Feb 25 2013 Gerard Visiedo 3.14.3-1 - update to 3.14.3. Due to conflit with sqlite package, the library libsqlite3.a is not copied. * Mon Mar 26 2012 Patricia Cugny 3.13.2-1 - update to 3.13.2 - .spec simplification * Wed Feb 25 2009 Jean Noel Cordenner 3.12-2 - ship libsqlite3 - add .so file in -devel rpm - .spec simplification * Wed Feb 25 2009 Jean Noel Cordenner 3.12-1 - Initial port for AIX