%{!?dotests:%define DO_TESTS 1} %{?dotests:%define DO_TESTS 0} %define _libdir64 %{_libdir}64 Name: pcre Version: 8.44 Release: 1 Summary: Perl-compatible regular expression library URL: http://www.pcre.org/ Source0: ftp://ftp.csx.cam.ac.uk/pub/software/programming/%{name}/%{name}-%{version}.tar.gz Source1: ftp://ftp.csx.cam.ac.uk/pub/software/programming/%{name}/%{name}-%{version}.tar.gz.sig Source2: libpcre.so.0-aix32 License: BSD Group: System Environment/Libraries BuildPrereq: sed BuildRequires: bzip2 >= 1.0.6-3, zlib-devel >= 1.2.11-1, readline-devel >= 8.0-2, libstdc++-devel >= 8.3.0-1 Requires: bzip2 >= 1.0.6-3, zlib >= 1.2.11-1, readline >= 8.0-2, libstdc++ >= 8.3.0-1 Requires: libgcc >= 8.3.0-1 %description Perl-compatible regular expression library. PCRE has its own native API, but a set of "wrapper" functions that are based on the POSIX API are also supplied in the library libpcreposix. Note that this just provides a POSIX calling interface to PCRE: the regular expressions themselves still follow Perl syntax and semantics. The header file for the POSIX-style functions is called pcreposix.h. The library is available as 32-bit and 64-bit. %package devel Summary: Development files for %{name} Group: Development/Libraries Requires: %{name} = %{version}-%{release} %description devel Development files (Headers, libraries for static linking, etc) for %{name}. %prep %setup -q # Duplicate source for 32 & 64 bits rm -rf /tmp/%{name}-%{version}-32bit mkdir /tmp/%{name}-%{version}-32bit mv * /tmp/%{name}-%{version}-32bit mkdir 32bit mv /tmp/%{name}-%{version}-32bit/* 32bit rm -rf /tmp/%{name}-%{version}-32bit mkdir 64bit cp -rp 32bit/* 64bit/ %build export PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:. export LIBPATH= export CONFIG_SHELL=/opt/freeware/bin/bash export CONFIG_ENV_ARGS=/opt/freeware/bin/bash export RM="/usr/bin/rm -f" export AR="/usr/bin/ar -X32_64" export NM="/usr/bin/nm -X32_64 -B" export CFLAGS="" export CXXFLAGS="" export CPPFLAGS="" export LDFLAGS="" export OPT="-g -O2" export CC="gcc" export CXX="g++" export FLAG32="-maix32" export FLAG64="-maix64" export CC32="${CC} ${FLAG32}" export CXX32="${CXX} ${FLAG32}" export CC64="${CC} ${FLAG64}" export CXX64="${CXX} ${FLAG64}" build_pcre() { echo "Building ${OBJECT_MODE} bit" ./configure \ --prefix=%{_prefix} \ --mandir=%{_mandir} \ --includedir=%{_includedir} \ --libdir=$1 \ --enable-utf8 \ --enable-unicode-properties \ --enable-pcregrep-libz \ --enable-pcregrep-libbz2 \ --enable-pcretest-libreadline gmake %{?_smp_mflags} if [ "%{DO_TESTS}" == 1 ] then echo "Testing ${OBJECT_MODE} bit build" ( gmake -k check || true ) # /usr/sbin/slibclean fi } # build 64-bit version cd 64bit export CC="/opt/freeware/bin/gcc -maix64 -O2" export LDFLAGS="-Wl,-blibpath:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib:/lib -L/opt/freeware/lib64 -L/opt/freeware/lib" export OBJECT_MODE=64 export CC=${CC64} export CXX=${CXX64} build_pcre %{_libdir64} cd .. # build 32-bit version cd 32bit export CC="/opt/freeware/bin/gcc -maix32 -O2 -D_LARGE_FILES" export LDFLAGS="-Wl,-blibpath:/opt/freeware/lib:/usr/lib:/lib -Wl,-bmaxdata:0x80000000 -L/opt/freeware/lib" export CC=${CC32} export CXX=${CXX32} export OBJECT_MODE=32 build_pcre %{_libdir} cd .. %install [ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} # setup environment for 32-bit and 64-bit builds export RM="/usr/bin/rm -f" export AR="ar -X32_64" # install 64-bit version cd 64bit export OBJECT_MODE=64 make DESTDIR=${RPM_BUILD_ROOT} install cd .. strip $RPM_BUILD_ROOT%{_prefix}/bin || : ( cd $RPM_BUILD_ROOT%{_prefix}/bin for fic in $(ls -1| grep -v -e _32 -e _64) do mv $fic "$fic"_64 done ) cd - # Extract the 64 bit object from the libs cd ${RPM_BUILD_ROOT}%{_libdir64} /usr/bin/ar -X64 xv libpcre.a libpcre.so.1 /usr/bin/ar -X64 xv libpcrecpp.a libpcrecpp.so.0 /usr/bin/ar -X64 xv libpcreposix.a libpcreposix.so.0 cd - # install 32-bit version cd ../32bit export OBJECT_MODE=32 make DESTDIR=${RPM_BUILD_ROOT} install cd .. strip $RPM_BUILD_ROOT%{_prefix}/bin || : ( cd $RPM_BUILD_ROOT%{_prefix}/bin for fic in $(ls -1| grep -v -e _32 -e _64) do mv $fic "$fic"_32 ln -sf "$fic"_64 $fic done ) ##cd - ##cd .. # add the shared object from older version for compatibility cp %{SOURCE2} ${RPM_BUILD_ROOT}%{_libdir}/libpcre.so.0 strip -X32 -e ${RPM_BUILD_ROOT}%{_libdir}/libpcre.so.0 #cp %{SOURCE3} ${RPM_BUILD_ROOT}%{_libdir64}/libpcre.so.0 #strip -X64 -e ${RPM_BUILD_ROOT}%{_libdir64}/libpcre.so.0 cd ${RPM_BUILD_ROOT}%{_libdir} /usr/bin/ar -X32 q libpcre.a libpcre.so.0 # Extract the 32 bit object from the libs /usr/bin/ar -X32 xv libpcre.a libpcre.so.1 /usr/bin/ar -X32 xv libpcreposix.a libpcreposix.so.0 cd - # add the 64-bit shared objects to the shared library containing already the # 32-bit shared objects cd ${RPM_BUILD_ROOT}%{_libdir64} /usr/bin/ar -q -X64 ${RPM_BUILD_ROOT}%{_libdir}/libpcre.a libpcre.so.1 /usr/bin/ar -q -X64 ${RPM_BUILD_ROOT}%{_libdir}/libpcrecpp.a libpcrecpp.so.0 /usr/bin/ar -q -X64 ${RPM_BUILD_ROOT}%{_libdir}/libpcreposix.a libpcreposix.so.0 cd - # replace archives in lib64 with links to archives in lib cd ${RPM_BUILD_ROOT}%{_libdir64} ln -sf ../lib/libprce.a libpcre.a ln -sf ../lib/libpcrecpp.a libpcrecpp.a ln -sf ../lib/libpcreposix.a libpcreposix.a cd - %clean [ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} %files %defattr(-,root,system) %doc 32bit/AUTHORS 32bit/LICENCE 32bit/README %{_bindir}/pcregrep* %{_bindir}/pcretest* %{_libdir}/*.a %{_libdir}/*.so* %{_libdir64}/*.a %{_libdir64}/*.so* %{_mandir}/man1/pcregrep.1 %{_mandir}/man1/pcretest.1 %files devel %defattr(-,root,system) %{_bindir}/pcre-config* %{_includedir}/*.h %{_libdir}/pkgconfig/* %{_mandir}/man1/pcre-config.1 %{_mandir}/man3/* %changelog * Wed Jul 29 2020 Baanu Tumma < btumma15@in.ibm.com> - 8.44-1 - Updated to version 8.44-1 to fix CVE-2020-14155 - No longer shipping files in /usr directory * Tue Feb 11 2020 Rishita Saha -8.43-1 - Update to version 8.43 * Thu Aug 02 2018 Harshita Jain -8.42-1 - Update to version 8.42 * Fri Mar 14 2014 Gerard Visiedo -8.34-1 - Update to version 8.34 * Thu Feb 02 2012 Gerard Visiedo -8.12-3 - Initial port on Aix6.1 * Fri Oct 14 2011 Gerard Visiedo - 8.12-2 - rebuild for compatibility with new libiconv.a 1.13.1-2 * Thu Mar 17 2011 Gerard Visiedo 8.12-1 - Update to version 8.12 * Thu Oct 14 2010 Jean Noel Cordenner 8.10-1 - Update to version 8.10. * Thu Feb 16 2006 Reza Arbab - Add patch for CAN-2005-2491. * Fri Nov 22 2002 David Clissold - Add IBM ILA license.