%{!?dotests: %define dotests 1} %{!?default_bits: %define default_bits 64} Summary: Netscape Portable Runtime Name: nspr Version: 4.32 Release: 1 License: MPLv1.1 or GPLv2+ or LGPLv2+ URL: http://www.mozilla.org/projects/nspr/ Group: System Environment/Libraries # Sources available at http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/ Source0: https://releases.mozilla.org/pub/nspr/releases//nspr-%{version}.tar.gz Patch0: %{name}-4.29.aix.patch Patch1: %{name}-4.29-blibpath.patch Requires: libgcc >= 8.3.0 %description NSPR provides platform independence for non-GUI operating system facilities. These facilities include threads, thread synchronization, normal file and network I/O, interval timing and calendar time, basic memory management (malloc and free) and shared library linking. The library is available as 32-bit and 64-bit. %package devel Summary: Development libraries for the Netscape Portable Runtime Group: Development/Libraries Requires: %{name} = %{version}-%{release} %description devel Header files for doing development with the Netscape Portable Runtime. The library is available as 32-bit and 64-bit. %prep %setup -q %patch0 -p0 mkdir 32bit cp -rp nspr 32bit cp -rp 32bit 64bit %patch1 -p0 %build # work around strange libtool error on AIX6.1, see details at: # https://www.ibm.com/developerworks/forums/thread.jspa?messageID=14145662 export RM="/usr/bin/rm -f" # setup environment for 32-bit and 64-bit builds build_nspr() { export AR="/usr/bin/ar -X${OBJECT_MODE}" LIBDIR=%{_libdir} ENABLE_64=--disable-64bit if [ "${OBJECT_MODE}" == "64" ]; then LIBDIR=%{_libdir}64 ENABLE_64=--enable-64bit fi cd ${OBJECT_MODE}bit/nspr echo `date +%Y%m%d_%H%M%S`" : Starting ${OBJECT_MODE}bit build" export CC="/opt/freeware/bin/gcc -maix${OBJECT_MODE}" ./configure \ --prefix=%{_prefix} \ --libdir=${LIBDIR} \ --includedir=%{_includedir}/nspr4 \ ${ENABLE_64} --disable-debug gmake %{?_smp_mflags} # build shared objects for AIX ( cd dist/lib for file in libnspr4 libplc4 libplds4 do /usr/bin/rm -f ${file}.so /usr/vac/bin/CreateExportList -X${OBJECT_MODE} ${file}.exp ${file}.a done if [ "${OBJECT_MODE}" == "64" ]; then ${CC} -shared libnspr4.a -o libnspr4.so -Wl,-bE:libnspr4.exp -lodm -lcfg -lpthreads ${CC} -shared libplc4.a -o libplc4.so -Wl,-bE:libplc4.exp -Wl,-blibpath:/opt/freeware/lib:/usr/vac/lib:/usr/lib:/lib -L. -lnspr4 -lpthreads ${CC} -shared libplds4.a -o libplds4.so -Wl,-bE:libplds4.exp -Wl,-blibpath:/opt/freeware/lib:/usr/vac/lib:/usr/lib:/lib -L. -lnspr4 -lpthreads else ${CC} -shared libnspr4.a -o libnspr4.so -Wl,-bE:libnspr4.exp -lodm -lcfg -lpthreads -Wl,-bmaxdata:0x80000000 ${CC} -shared libplc4.a -o libplc4.so -Wl,-bE:libplc4.exp -Wl,-blibpath:/opt/freeware/lib:/usr/vac/lib:/usr/lib:/lib -L. -lnspr4 -lpthreads -Wl,-bmaxdata:0x80000000 ${CC} -shared libplds4.a -o libplds4.so -Wl,-bE:libplds4.exp -Wl,-blibpath:/opt/freeware/lib:/usr/vac/lib:/usr/lib:/lib -L. -lnspr4 -lpthreads -Wl,-bmaxdata:0x80000000 fi ) 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" cd pr/tests make (./runtests.sh || true ) cd - echo `date +%Y%m%d_%H%M%S`" : ${OBJECT_MODE}bit tests completed" fi cd ../.. } export OBJECT_MODE=64 export LDFLAGS="-L/opt/freeware/lib64 -L/opt/freeware/lib -lgcc_s " export CFLAGS="-O2" build_nspr export OBJECT_MODE=32 export CFLAGS="-D_LARGE_FILES -O2" export LDFLAGS="-L/opt/freeware/lib -lgcc_s " build_nspr %install [ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} cd 64bit/nspr gmake install DESTDIR=${RPM_BUILD_ROOT} cd ../.. mv ${RPM_BUILD_ROOT}%{_bindir}/nspr-config ${RPM_BUILD_ROOT}%{_bindir}/nspr-config_64 cd 32bit/nspr gmake install DESTDIR=${RPM_BUILD_ROOT} cd ../.. mv ${RPM_BUILD_ROOT}%{_bindir}/nspr-config ${RPM_BUILD_ROOT}%{_bindir}/nspr-config_32 chmod 755 ${RPM_BUILD_ROOT}%{_bindir}/nspr-config_64 chmod 755 ${RPM_BUILD_ROOT}%{_bindir}/nspr-config_32 DEFAULT_BITS=64 if [ "%{default_bits}" == 32 ]; then DEFAULT_BITS=32 fi ln -sf nspr-config_${DEFAULT_BITS} ${RPM_BUILD_ROOT}%{_bindir}/nspr-config # setup environment for 32-bit and 64-bit builds export AR="/usr/bin/ar" mkdir -p ${RPM_BUILD_ROOT}%{_libdir}64 # add the shared objects to the libraries already containing for file in libnspr4 libplc4 libplds4 do ${AR} -q -X64 ${RPM_BUILD_ROOT}%{_libdir}/${file}.a ${RPM_BUILD_ROOT}%{_libdir}64/${file}.so ${AR} -q -X32 ${RPM_BUILD_ROOT}%{_libdir}/${file}.a ${RPM_BUILD_ROOT}%{_libdir}/${file}.so done # add the 64-bit objects to the libraries already containing # the 32-bit objects for file in libnspr4 libplc4 libplds4 do mkdir $file cd $file ${AR} -x -X64 ${RPM_BUILD_ROOT}%{_libdir}64/${file}.a ${AR} -q -X64 ${RPM_BUILD_ROOT}%{_libdir}/${file}.a *.o done ( cd ${RPM_BUILD_ROOT}%{_libdir}64 for file in libnspr4 libplc4 libplds4 do ln -sf %{_libdir}/${file}.a . done ) %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 libnspr4.a libnspr4.so libplc4.a libplc4.so libplds4.so libplds4.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}/*.a %{_libdir}/*.so* %{_libdir}64/*.a %{_libdir}64/*.so* %files devel %defattr(-,root,system) %{_bindir}/nspr-config* %{_includedir}/* %{_datadir}/aclocal/* %changelog * Wed Jan 19 2022 Reshma V Kumar - 4.32-1 - Update to 4.32 * Fri Jan 22 2021 Reshma V Kumar - 4.29-1 - Update to 4.29 - Stop shipping files in /usr directory * Wed Sep 25 2019 Harshita jain 4.21-1 - Update to version 4.21 * Fri Oct 21 2016 Matthieu Sarter - 4.13-1 - Update to version 4.13 * Fri Jun 30 2016 Tony Reix 4.12-1 - Update to 4.12 version - Add symlink from lib to lib64 for .a files - No tests are available * Fri Feb 22 2013 Gerard Visiedo 4.9.5-1 - update to 4.9.5 version * Mon Mar 26 2012 Patricia Cugny 4.9-1 - update to 4.9 * Wed Feb 18 2009 Jean Noel Cordenner 4.7.3 - Initial port for AIX