%define _libdir64 %{_prefix}/lib64 Summary: GNU libraries and utilities for producing multi-lingual messages. Name: gettext Version: 0.20.2 Release: 2 License: GPLv3 and LGPLv2+ Group: Development/Tools URL: http://www.gnu.org/software/%{name}/ Source0: http://ftp.gnu.org/gnu/gettext/gettext-%{version}.tar.xz Source1: libintl.so.1-aix32 Source2: libintl.so.1-aix64 Source3: libgettextlib-0.19.7.so-aix32 Source4: libgettextlib-0.19.7.so-aix64 Source5: libgettextsrc-0.19.7.so-aix32 Source6: libgettextsrc-0.19.7.so-aix64 Source7: libgettextlib-0.19.8.1.so-aix32 Source8: libgettextlib-0.19.8.1.so-aix64 Source9: libgettextsrc-0.19.8.1.so-aix32 Source10: libgettextsrc-0.19.8.1.so-aix64 Patch0: gettext-0.19.7-aixconf.patch # Below patch is needed because packages like sudo_ids requires /usr/lib first in the LIBPATH # And AIX has it's own libiconv in /usr/lib which conflicts with /opt/freeware/lib/libiconv.a Patch1: gettext-0.20.2-hardcode-libiconv.patch # In 32bit with -Wl,-bmaxdata, configure programs about getline and getdelim will succeed # even if they should and must fail. Therefore, this patch force the use of GNU provided # getline and getdelim. Patch2: gettext-0.20.1-configure-force-GNU-getline-and-getdelim.patch # This version of xalloc.h is not including xaloc-oversized.h but it should. Patch3: gettext-0.20.1-fix-xalloc-oversized-duplicates.patch Requires: libiconv >= 1.16 Requires: ncurses >= 6.2 Requires: libunistring >= 0.9.9-2 Requires: libgomp >= 8.3.0 Requires: libgcc >= 8.3.0 Requires: libstdc++ >= 8.3.0 Requires: libtextstyle = %{version}-%{release} # Below "Requires" are needed since the older libraries (libgettextsrc, libgettextlib, libintl) links to it. # And we are shipping those libraries inside the archives for compatiblity Requires: libxml2 >= 2.9.9 Requires: glib2 >= 2.56.1 %description The GNU gettext package provides a set of tools and documentation for producing multi-lingual messages in programs. Tools include a set of conventions about how programs should be written to support message catalogs, a directory and file naming organization for the message catalogs, a runtime library which supports the retrieval of translated messages, and stand-alone programs for handling the translatable and the already translated strings. Gettext provides an easy to use library and tools for creating, using, and modifying natural language catalogs and is a powerful and simple method for internationalizing programs. The library is available as 32-bit and 64-bit. %package devel Summary: Development files for %{name} Group: Development/Tools License: LGPLv2+ Requires: %{name} = %{version}-%{release} %description devel This package contains all development related files necessary for developing or compiling applications/libraries that needs internationalization capability. You also need this package if you want to add gettext support for your project. %package -n libtextstyle Summary: Text styling library License: GPLv3+ Requires: libgcc >= 8.3.0 Requires: ncurses >= 6.2 Requires: libiconv >= 1.16 %description -n libtextstyle Library for producing styled text to be displayed in a terminal emulator. %package -n libtextstyle-devel Summary: Development files for libtextstyle License: GPLv3+ Requires: libtextstyle = %{version}-%{release} %description -n libtextstyle-devel This package contains all development related files necessary for developing or compiling applications/libraries that needs text styling. %prep export PATH=/opt/freeware/bin:$PATH %setup -q %patch0 -p1 -b .aixconf %patch1 -p1 -b .hardcode %patch2 -p1 %patch3 -p1 # Duplicate source for 32 & 64 bits rm -rf /tmp/%{name}-%{version}-32bit cp -pr . /tmp/%{name}-%{version}-32bit rm -fr * mv /tmp/%{name}-%{version}-32bit 32bit cp -pr 32bit 64bit %build # setup environment for 32-bit and 64-bit builds export CPPFLAGS="-I/opt/freeware/include" # first build the 64-bit version cd 64bit export OBJECT_MODE=64 export CC="gcc -maix64 -O2" export CXX="g++ -maix64 -O2" export CFLAGS="-O2 -I/opt/freeware/include" export CXXFLAGS="-O2 -I/opt/freeware/include" export LDFLAGS="-Wl,-blibpath:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib" ./configure \ --prefix=%{_prefix} \ --infodir=%{_infodir} \ --libdir=%{_libdir64} \ --mandir=%{_mandir} \ --enable-shared --disable-static \ --with-included-gettext \ --with-included-libxml \ --with-libiconv-prefix=/opt/freeware gmake %{?_smp_mflags} # now build the 32-bit version cd ../32bit export OBJECT_MODE=32 export CC="gcc -maix32" export CXX="g++ -maix32" export CFLAGS="-O2 -D_LARGE_FILES -I/opt/freeware/include" export CXXFLAGS="-O2 -D_LARGE_FILES -I/opt/freeware/include" export LDFLAGS="-Wl,-blibpath:/opt/freeware/lib:/usr/lib" ./configure \ --prefix=%{_prefix} \ --infodir=%{_infodir} \ --libdir=%{_libdir} \ --mandir=%{_mandir} \ --enable-shared --disable-static \ --with-included-gettext \ --with-included-libxml \ --with-libiconv-prefix=/opt/freeware gmake %{?_smp_mflags} %install [ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} #Install on 64bit mode export OBJECT_MODE=64 cd 64bit make DESTDIR=${RPM_BUILD_ROOT} install /usr/bin/strip ${RPM_BUILD_ROOT}%{_bindir}/* || : ( cd ${RPM_BUILD_ROOT}%{_prefix}/bin for fic in $(ls -1| grep -v -e _32 -e _64) do mv $fic "$fic"_64 done ) #Install on 32bit mode export OBJECT_MODE=32 cd ../32bit make DESTDIR=${RPM_BUILD_ROOT} install /usr/bin/strip ${RPM_BUILD_ROOT}%{_bindir}/* || : rm -f ${RPM_BUILD_ROOT}%{_infodir}/dir gzip --best ${RPM_BUILD_ROOT}%{_infodir}/*info* # own this directory for third-party *.its files mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}/its # doc relocations for i in gettext-runtime/man/*.html; do rm ${RPM_BUILD_ROOT}%{_datadir}/doc/gettext/`basename $i` done rm -r ${RPM_BUILD_ROOT}%{_datadir}/doc/gettext/javadoc* rm -rf ${RPM_BUILD_ROOT}%{_datadir}/doc/gettext/examples rm -rf htmldoc mkdir htmldoc mv ${RPM_BUILD_ROOT}%{_datadir}/doc/gettext/* ${RPM_BUILD_ROOT}/%{_datadir}/doc/libasprintf/* htmldoc rm -r ${RPM_BUILD_ROOT}%{_datadir}/doc/libasprintf rm -r ${RPM_BUILD_ROOT}%{_datadir}/doc/gettext mkdir -p ${RPM_BUILD_ROOT}%{_docdir} mv ${RPM_BUILD_ROOT}%{_datadir}/doc/libtextstyle ${RPM_BUILD_ROOT}%{_docdir} ( 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 ) slibclean ( # Remove version in archives' name. It won't allow compatibility cd ${RPM_BUILD_ROOT}%{_libdir} mv libgettextlib-%{version}.a libgettextlib.a mv libgettextsrc-%{version}.a libgettextsrc.a cd ${RPM_BUILD_ROOT}%{_libdir64} mv libgettextlib-%{version}.a libgettextlib.a mv libgettextsrc-%{version}.a libgettextsrc.a ) # Add 64bit shared libraries inside 32bit library archives ( cd ${RPM_BUILD_ROOT}%{_libdir64} for i in libasprintf libgettextlib libgettextpo libgettextsrc libintl libtextstyle do /usr/bin/ar -X64 -x ${i}.a done /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libasprintf.a libasprintf.so.0 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgettextlib.a libgettextlib-%{version}.so /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgettextpo.a libgettextpo.so.0 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgettextsrc.a libgettextsrc-%{version}.so /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libintl.a libintl.so.8 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libtextstyle.a libtextstyle.so.0 rm ${RPM_BUILD_ROOT}%{_libdir64}/lib*.so.0 rm ${RPM_BUILD_ROOT}%{_libdir64}/lib*.so ) #libintl 32bit cp %{SOURCE1} libintl.so.1 /usr/bin/strip -X32 -e libintl.so.1 /usr/bin/ar -X32 -q ${RPM_BUILD_ROOT}%{_libdir}/libintl.a libintl.so.1 #libintl 64bit cp %{SOURCE2} libintl.so.1 /usr/bin/strip -X64 -e libintl.so.1 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libintl.a libintl.so.1 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir64}/libintl.a libintl.so.1 #libgettextlib 32bit cp %{SOURCE3} libgettextlib-0.19.7.so /usr/bin/strip -X32 -e libgettextlib-0.19.7.so /usr/bin/ar -X32 -q ${RPM_BUILD_ROOT}%{_libdir}/libgettextlib.a libgettextlib-0.19.7.so cp %{SOURCE7} libgettextlib-0.19.8.1.so /usr/bin/strip -X32 -e libgettextlib-0.19.8.1.so /usr/bin/ar -X32 -q ${RPM_BUILD_ROOT}%{_libdir}/libgettextlib.a libgettextlib-0.19.8.1.so #libgettextlib 64bit cp %{SOURCE4} libgettextlib-0.19.7.so /usr/bin/strip -X64 -e libgettextlib-0.19.7.so /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgettextlib.a libgettextlib-0.19.7.so /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir64}/libgettextlib.a libgettextlib-0.19.7.so cp %{SOURCE8} libgettextlib-0.19.8.1.so /usr/bin/strip -X64 -e libgettextlib-0.19.8.1.so /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgettextlib.a libgettextlib-0.19.8.1.so /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir64}/libgettextlib.a libgettextlib-0.19.8.1.so #libgettextsrc 32bit cp %{SOURCE5} libgettextsrc-0.19.7.so /usr/bin/strip -X32 -e libgettextsrc-0.19.7.so /usr/bin/ar -X32 -q ${RPM_BUILD_ROOT}%{_libdir}/libgettextsrc.a libgettextsrc-0.19.7.so cp %{SOURCE9} libgettextsrc-0.19.8.1.so /usr/bin/strip -X32 -e libgettextsrc-0.19.8.1.so /usr/bin/ar -X32 -q ${RPM_BUILD_ROOT}%{_libdir}/libgettextsrc.a libgettextsrc-0.19.8.1.so #libgettextsrc 64bit cp %{SOURCE6} libgettextsrc-0.19.7.so /usr/bin/strip -X64 -e libgettextsrc-0.19.7.so /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgettextsrc.a libgettextsrc-0.19.7.so /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir64}/libgettextsrc.a libgettextsrc-0.19.7.so cp %{SOURCE10} libgettextsrc-0.19.8.1.so /usr/bin/strip -X64 -e libgettextsrc-0.19.8.1.so /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgettextsrc.a libgettextsrc-0.19.8.1.so /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir64}/libgettextsrc.a libgettextsrc-0.19.8.1.so %check # Run testcases for 64bit cd 64bit export OBJECT_MODE=64 export LIBPATH=${RPM_BUILD_ROOT}%{_libdir64} (gmake -k check || true) # Run testcases for 32bit cd ../32bit export OBJECT_MODE=32 export LIBPATH=${RPM_BUILD_ROOT}%{_libdir} (gmake -k check || true) %pre if test -e %{_libdir}/libintl.a.savgettext; then rm -f %{_libdir}/libintl.a.savgettext fi %post /sbin/install-info %{_infodir}/gettext.info.gz %{_infodir}/dir || : %preun if [ "$1" = 0 ]; then /sbin/install-info --delete %{_infodir}/gettext.info.gz %{_infodir}/dir || : fi %post devel /sbin/install-info %{_infodir}/autosprintf.info.gz %{_infodir}/dir || : %preun devel if [ "$1" = 0 ]; then /sbin/install-info --delete %{_infodir}/autosprintf.info.gz %{_infodir}/dir || : fi %post -n libtextstyle-devel /sbin/install-info %{_infodir}/libtextstyle.info.gz %{_infodir}/dir || : %preun -n libtextstyle-devel if [ "$1" = 0 ]; then /sbin/install-info --delete %{_infodir}/libtextstyle.info.gz %{_infodir}/dir || : fi %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 if ! test -e /usr/lib/libintl.a && ! test -h /usr/lib/libintl.a then ln -sf ${LINK_PATH}/lib/libintl.a /usr/lib/libintl.a fi %clean [ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} %files %defattr(-,root,system,-) %doc 32bit/gettext-runtime/ABOUT-NLS 32bit/AUTHORS 32bit/gettext-runtime/BUGS %doc 32bit/COPYING 32bit/gettext-tools/misc/DISCLAIM 32bit/README %doc 32bit/NEWS 32bit/THANKS %doc 32bit/gettext-runtime/man/*.1.html %doc 32bit/gettext-runtime/intl/COPYING* %{_bindir}/envsubst* %{_bindir}/gettext* %{_bindir}/msgattrib* %{_bindir}/msgcat* %{_bindir}/msgcmp* %{_bindir}/msgcomm* %{_bindir}/msgconv* %{_bindir}/msgen* %{_bindir}/msgexec* %{_bindir}/msgfilter* %{_bindir}/msgfmt* %{_bindir}/msggrep* %{_bindir}/msginit* %{_bindir}/msgmerge* %{_bindir}/msgunfmt* %{_bindir}/msguniq* %{_bindir}/ngettext* %{_bindir}/recode-sr-latin* %{_bindir}/xgettext* %{_libdir}/%{name} %{_libdir}/libintl.a %{_libdir}/libasprintf.a %{_libdir}/libgettextpo.a %{_libdir}/libgettextlib.a %{_libdir}/libgettextsrc.a %{_libdir64}/%{name} %{_libdir64}/libintl.a %{_libdir64}/libasprintf.a %{_libdir64}/libgettextpo.a %{_libdir64}/libgettextlib.a %{_libdir64}/libgettextsrc.a %exclude %{_mandir}/man1/autopoint.1* %exclude %{_mandir}/man1/gettextize.1* %{_mandir}/man1/* %{_infodir}/gettext* %dir %{_datadir}/%{name} %dir %{_datadir}/%{name}/its %{_datadir}/%{name}/ABOUT-NLS %{_datadir}/%{name}/po %{_datadir}/%{name}/styles %dir %{_datadir}/%{name}-%{version} %{_datadir}/%{name}-%{version}/its %{_datadir}/locale/*/LC_MESSAGES/* %files devel %defattr(-,root,system,-) %doc 32bit/gettext-runtime/man/*.3.html 32bit/ChangeLog %doc 32bit/gettext-runtime/intl-java/javadoc* %{_bindir}/autopoint* %{_bindir}/gettextize* %{_includedir}/autosprintf.h %{_includedir}/gettext-po.h %{_includedir}/libintl.h %{_mandir}/man1/autopoint.1 %{_mandir}/man1/gettextize.1 %{_mandir}/man3/* %{_infodir}/autosprintf* %{_datadir}/aclocal/* %{_datadir}/%{name}/javaversion.class %files -n libtextstyle %defattr(-,root,system,-) %{_libdir}/libtextstyle.a %{_libdir64}/libtextstyle.a %files -n libtextstyle-devel %defattr(-,root,system,-) %{_docdir}/libtextstyle/ %{_includedir}/textstyle/ %{_includedir}/textstyle.h %{_infodir}/libtextstyle* %changelog * Mon Mar 14 2022 Reshma V Kumar < reskumar@in.ibm.com> - 0.20.2-2 - Rebuild without gettext-0.20.2-missing-locale_t-aix.patch * Fri Oct 09 2020 Ayappan P - 0.20.2-1 - Update to 0.20.2 - Stop shipping files from /usr - Patches from bull gettext - Add posttrans script for /usr/lib/libintl.a * Tue Jan 14 2020 Ayappan P - 0.19.8.1-5 - Hardcode GNU libiconv in library search path * Wed Nov 19 2019 Ayappan P - 0.19.8.1-4 - Link with GNU libiconv and remove .la files * Wed Nov 21 2018 Ayappan P 0.19.8.1-3 - Include the .la files needed for other packages build * Fri Nov 02 2018 Ayappan P 0.19.8.1-2 - Fix the overwriting of libintl.a by older version 0.19.7 * Tue Jun 20 2017 Reshma V Kumar 0.19.8.1-1 - Update to version 0.19.8.1 * Mon May 30 2016 Ayappan P 0.19.7-1 - Update to version 0.19.7 * Wed Sep 11 2013 Gerard Visiedo 0.18.3.1-1 - Update to version 0.18.3.1 * Mon Jan 30 2012 Patricia Cugny 0.17-7 - Add patch for building on aix 6.1 * Wed Aug 31 2011 Patricia Cugny 0.17-6 - Add installed libintl.so.1 to libintl.a lib * Wed May 04 2011 Patricia Cugny 0.17-5 - Add 64bits library and older libintl.so.1 * Mon Mar 14 2011 Gerard Visiedo 0.17-4 - Add patches for workaround bugs on aix6 * Thu Jan 27 2011 Jean-noel Cordenner 0.17-3 - add missing files * Thu Apr 23 2009 Jean-noel Cordenner 0.17-2 - add %pre and %postun scripts to preserve previous version of libintl.a * Wed Mar 18 2009 Jean-noel Cordenner 0.17 - port to AIX