# By default, dotests are run. # No tests: rpmbuild -ba --without dotests *.spec %bcond_without dotests # Required for NOT having $BUILD/@PaxHeader files when autobuilding %define __tar /opt/freeware/bin/tar # This is the sub-directory where glib2 will be built by Meson %global builddir aix #This is for the version output generated by meson. %global pkg_version 72 Summary: A library of handy utility functions Name: glib2 %define major_version 2.72 %define minor_version 1 Version: %{major_version}.%{minor_version} Release: 1 License: LGPLv2+ Group: System Environment/Libraries URL: http://www.gtk.org Source0: https://download.gnome.org/sources/glib/%{major_version}/glib-%{version}.tar.xz Source2: glibconfig.h Source3: libgio-2.0.so.0-aix32 Source4: libgmodule-2.0.so.0-aix32 Source5: libgthread-2.0.so.0-aix32 Source6: libglib-2.0.so.0-aix32 Source7: libgobject-2.0.so.0-aix32 Source8: libgio-2.0.so.0-aix64 Source9: libgmodule-2.0.so.0-aix64 Source10: libgthread-2.0.so.0-aix64 Source11: libglib-2.0.so.0-aix64 Source12: libgobject-2.0.so.0-aix64 Patch1: glib-2.72.1-constructorwrapper-aix.patch #patch to fix incorrectly exported strcmp symbol Patch2: glib2-2.72.1-recvmmsg.patch Patch3: glib2-2.72.1-meson.build.patch Patch4: glib-2.72.1-shared-lib-version-control.patch BuildRequires: gcc >= 10.3.0 BuildRequires: gcc-c++ >= 10.3.0 BuildRequires: pkg-config >= 0.29.2 BuildRequires: libffi-devel >= 3.4.2 BuildRequires: gettext-devel >= 0.21 #BuildRequires: meson >= 0.57.1 # Seems useful: BuildRequires: cmake >= 3.22.0 # In order to prevent downloading zlib and pcre from the Web: BuildRequires: zlib >= 1.2.13, zlib-devel >= 1.2.13, pcre >= 8.44, pcre-devel >= 8.44 Requires: gettext >= 0.21 Requires: libffi >= 3.4.2 Requires: libgcc >= 10.3.0 Requires: libiconv >= 1.17 %define _libdir64 %{_prefix}/lib64 %description GLib is the low-level core library that forms the basis for projects such as GTK+ and GNOME. It provides data structure handling for C, portability wrappers, and interfaces for such runtime functionality as an event loop, threads, dynamic loading, and an object system. The library is available as 32-bit and 64-bit. %package devel Summary: A library of handy utility functions Group: Development/Libraries Requires: pkg-config Requires: %{name} = %{version}-%{release} Requires: libffi >= 3.4.2 %description devel The glib2-devel package includes the header files for version 2 of the GLib library. If you are compiling a 32-bit program, no special compiler options are needed. If you are compiling a 64-bit program, you have to compile and link your application with "xlc_r -q64" or "gcc -maix64". Please note that if you want to build a program with linked GRessources with xlC, you need to compile the ressource XML without constructors (glib-compile-resources --manual-register) and to use the -binitfini option of ld to call resources_register_resource and resources_unregister_resource whene required : -binitfini:resources_register_resource:resources_unregister_resource %prep export PATH=/opt/freeware/bin:$PATH %setup -q -n glib-%{version} %patch1 -p0 %patch2 -p0 %patch3 -p1 %patch4 -p0 # 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 # No surprise bundled libraries echo "pcre removed." rm -rf glib/pcre echo "subprojects removed." rm -rf subprojects # setup environment for 32-bit and 64-bit builds export CONFIG_SHELL=/usr/bin/ksh export CONFIG_ENV_ARGS=/usr/bin/ksh export RM="/usr/bin/rm -f" # Generates an unexpected error: export AR="/usr/bin/ar -X32_64" export NM="/usr/bin/nm -X32_64" export CCW="gcc" export CXXW="g++" build_glib2() { set -x export OBJECT_MODE=$1 export CC="$CCW" export CXX="$CXXW" export CFLAGS="-maix${OBJECT_MODE} -O2 -fsigned-char -mcmodel=large $4" export CPPFLAGS="-maix${OBJECT_MODE} -O2 -fsigned-char $4" export LDFLAGS="$3" ( DEBUG_MODE=true # OPTIM_LEVEL: 0 ... 3 - Default=0 OPTIM_LEVEL=0 # Meson parameters inspired by those of Fedora meson setup %{builddir} \ --buildtype=plain \ -Ddebug=$DEBUG_MODE -Doptimization=$OPTIM_LEVEL \ --prefix=%{_prefix} \ --libdir=$2 \ --mandir=%{_mandir} \ -Dinstalled_tests=false \ --wrap-mode=nodownload # This option does NOT work on AIX: # --auto-features=enabled # Options about directories known by Meson: # --prefix= # --libdir= # --libexecdir= # --bindir= # --sbindir= # --includedir= # --datadir= # --mandir= # --infodir= # --localedir= # --sysconfdir= # --localstatedir= # --sharedstatedir= # Other important iptions known by Meson: # -Dman=false \ # -Ddtrace=false \ # -Dsystemtap=false \ # -Dsysprof=enabled \ # -Dglib_debug=disabled \ # -Dgtk_doc=false \ # -Dinstalled_tests=false \ # -Dgnutls=false \ # --default-library=both \ # In 64bit, meson 0.59.1-1 does not add lib64 to the blibpath. # Unused first -blibpath is removed first TMPFILE=/tmp/glib2.build.ninja.$$ cat aix/build.ninja | awk -vOM=$OBJECT_MODE '{ if($1$2 == "LINK_ARGS=") { if(OM == 64) { sub("-Wl,-blibpath:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib:/lib", "") sub("/opt/freeware/lib:/lib:/usr/lib", "/opt/freeware/lib64:/opt/freeware/lib:/usr/lib:/lib") } else { sub("-Wl,-blibpath:/opt/freeware/lib:/usr/lib:/lib", "") sub("/opt/freeware/lib:/lib:/usr/lib", "/opt/freeware/lib:/usr/lib:/lib") } } print $0 }' > $TMPFILE cat $TMPFILE > aix/build.ninja rm -f $TMPFILE meson compile -C %{builddir} -j8 --verbose ) } cd 64bit/ build_glib2 64 %{_libdir64} "-Wl,-blibpath:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib:/lib" cd ../32bit/ build_glib2 32 %{_libdir} "-Wl,-blibpath:/opt/freeware/lib:/usr/lib:/lib -Wl,-bmaxdata:0x80000000" -D_LARGE_FILES %install [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT export RM="/usr/bin/rm -f" # setup environment for 32-bit and 64-bit builds export AR="/usr/bin/ar -X32_64" export NM="/usr/bin/nm -X32_64" # We now deliver only 64bit executables, but still 64 & 32bit lib*.a and lib*.so.0* # Install is made 64bit first, then 32bit. Thus: 1) save 64bit, then 2) rename. %global deliver_only_64bit_binaries 1 install_glib2() { set -x export OBJECT_MODE=$1 LIBDIR=$2 export DESTDIR=${RPM_BUILD_ROOT} meson install -C %{builddir} --no-rebuild ( cd ${RPM_BUILD_ROOT}/%{_prefix}/bin for fic in $(ls -1| grep -v -e _32 -e _64) do mv $fic "$fic"_${OBJECT_MODE} if [ ${OBJECT_MODE} -eq 64 ] then ln -sf "$fic"_${OBJECT_MODE} $fic fi done ) cp %{builddir}/glib/glibconfig.h ${RPM_BUILD_ROOT}%{_includedir}/glibconfig-ppc${OBJECT_MODE}.h mkdir -p %{buildroot}${LIBDIR}/gio/modules touch %{buildroot}${LIBDIR}/gio/modules/giomodule.cache } cd 32bit/ install_glib2 32 %{_libdir} cd ../64bit/ install_glib2 64 %{_libdir64} cp %{SOURCE2} ${RPM_BUILD_ROOT}/opt/freeware/lib64/glib-2.0/include/ chmod 644 ${RPM_BUILD_ROOT}%{_includedir}/*.h # As of v2.69.2 : # Official libraries: gio glib gmodule gobject gthread . # libXYZ-2.0.so -> libXYZ-2.0.so.0 # libXYZ-2.0.so.0 -> libXYZ-2.0.so.0.6902.0 # Libraries are named according to the version and sub-version. # We use 64bit/aix/gio/libgio-2.0.so.0..0.p to know how it is (automatically) named by meson & Co. # For 2.69.2 , = 6902 . #NAME=`basename 64bit/aix/gio/libgio-2.0.so.0.*.0.p | awk -F. '{print $5}'` #echo "NAME: $NAME" # However, we rather now use lib*-2.0.so.0 rather than lib*-2.0.so.${NAME}.0 # Add 64bit shared libraries inside 32bit library archives ( cd ${RPM_BUILD_ROOT}%{_libdir64} for i in libgio-2.0 libgmodule-2.0 libgthread-2.0 libglib-2.0 libgobject-2.0 do /usr/bin/ar -X64 -x ${i}.a done /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgio-2.0.a libgio-2.0.so.0.%{pkg_version} /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgmodule-2.0.a libgmodule-2.0.so.0.%{pkg_version} /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgthread-2.0.a libgthread-2.0.so.0.%{pkg_version} /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libglib-2.0.a libglib-2.0.so.0.%{pkg_version} /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgobject-2.0.a libgobject-2.0.so.0.%{pkg_version} rm ${RPM_BUILD_ROOT}%{_libdir64}/lib*.so.0.* ) #libgio 32bit cp %{SOURCE3} libgio-2.0.so.0 /usr/bin/strip -X32 -e libgio-2.0.so.0 /usr/bin/ar -X32 -q ${RPM_BUILD_ROOT}%{_libdir}/libgio-2.0.a libgio-2.0.so.0 #libgio 64bit cp %{SOURCE8} libgio-2.0.so.0 /usr/bin/strip -X64 -e libgio-2.0.so.0 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgio-2.0.a libgio-2.0.so.0 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir64}/libgio-2.0.a libgio-2.0.so.0 #libgmodule 32bit cp %{SOURCE4} libgmodule-2.0.so.0 /usr/bin/strip -X32 -e libgmodule-2.0.so.0 /usr/bin/ar -X32 -q ${RPM_BUILD_ROOT}%{_libdir}/libgmodule-2.0.a libgmodule-2.0.so.0 #libgmodule 64bit cp %{SOURCE9} libgmodule-2.0.so.0 /usr/bin/strip -X64 -e libgmodule-2.0.so.0 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgmodule-2.0.a libgmodule-2.0.so.0 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir64}/libgmodule-2.0.a libgmodule-2.0.so.0 #libgthread 32bit cp %{SOURCE5} libgthread-2.0.so.0 /usr/bin/strip -X32 -e libgthread-2.0.so.0 /usr/bin/ar -X32 -q ${RPM_BUILD_ROOT}%{_libdir}/libgthread-2.0.a libgthread-2.0.so.0 #libgthread 64bit cp %{SOURCE10} libgthread-2.0.so.0 /usr/bin/strip -X64 -e libgthread-2.0.so.0 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgthread-2.0.a libgthread-2.0.so.0 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir64}/libgthread-2.0.a libgthread-2.0.so.0 #libglib 32bit cp %{SOURCE6} libglib-2.0.so.0 /usr/bin/strip -X32 -e libglib-2.0.so.0 /usr/bin/ar -X32 -q ${RPM_BUILD_ROOT}%{_libdir}/libglib-2.0.a libglib-2.0.so.0 #libglib 64bit cp %{SOURCE11} libglib-2.0.so.0 /usr/bin/strip -X64 -e libglib-2.0.so.0 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libglib-2.0.a libglib-2.0.so.0 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir64}/libglib-2.0.a libglib-2.0.so.0 #libgobject 32bit cp %{SOURCE7} libgobject-2.0.so.0 /usr/bin/strip -X32 -e libgobject-2.0.so.0 /usr/bin/ar -X32 -q ${RPM_BUILD_ROOT}%{_libdir}/libgobject-2.0.a libgobject-2.0.so.0 #libgobject 64bit cp %{SOURCE12} libgobject-2.0.so.0 /usr/bin/strip -X64 -e libgobject-2.0.so.0 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir}/libgobject-2.0.a libgobject-2.0.so.0 /usr/bin/ar -X64 -q ${RPM_BUILD_ROOT}%{_libdir64}/libgobject-2.0.a libgobject-2.0.so.0 ( cd ${RPM_BUILD_ROOT}/opt/freeware/include cp ../lib64/glib-2.0/include/glibconfig.h . ) %clean [ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} %files %defattr(-,root,system,-) %doc 32bit/AUTHORS 32bit/COPYING 32bit/NEWS 32bit/README %{_libdir}/lib*.a* #%{_libdir}/lib*.so.0* %{_libdir64}/lib*.a* #%{_libdir64}/lib*.so.0* %dir %{_datadir}/bash-completion %dir %{_datadir}/bash-completion/completions %{_datadir}/bash-completion/completions/* %dir %{_datadir}/glib-2.0 %dir %{_datadir}/glib-2.0/schemas %dir %{_libdir}/gio %dir %{_libdir}/gio/modules %{_bindir}/gio %{_bindir}/gio-querymodules %{_bindir}/glib-compile-schemas %{_bindir}/gsettings %{_bindir}/gdbus %{_bindir}/gapplication %if %{deliver_only_64bit_binaries} == 0 %{_bindir}/gio_* %{_bindir}/gio-querymodules_* %{_bindir}/glib-compile-schemas_* %{_bindir}/gsettings_* %{_bindir}/gdbus_* %{_bindir}/gapplication_* %endif %{_datadir}/locale/*/LC_MESSAGES/*.mo %files devel %defattr(-,root,system,-) #%doc %{_datadir}/gtk-doc/html/* %{_includedir}/* %{_datadir}/aclocal/* %{_libdir}/pkgconfig/* %{_libdir64}/pkgconfig/* %{_datadir}/glib-2.0/gdb %{_datadir}/glib-2.0/gettext %{_datadir}/glib-2.0/schemas/gschema.dtd %{_datadir}/glib-2.0/valgrind/glib.supp %{_datadir}/bash-completion/completions/gresource %{_bindir}/glib-genmarshal %{_bindir}/glib-gettextize %{_bindir}/glib-mkenums %{_bindir}/gobject-query %{_bindir}/gtester %{_bindir}/gdbus-codegen %{_bindir}/glib-compile-resources %{_bindir}/gresource %if %{deliver_only_64bit_binaries} == 0 %{_bindir}/glib-genmarshal_* %{_bindir}/glib-gettextize_* %{_bindir}/glib-mkenums_* %{_bindir}/gobject-query_* %{_bindir}/gtester_* %{_bindir}/gdbus-codegen_* %{_bindir}/glib-compile-resources_* %{_bindir}/gresource_* %endif %attr (0755, root, system) %{_bindir}/gtester-report_64 %{_datadir}/gdb/ %{_datadir}/gettext/ %changelog * Thu Mar 02 2023 Aditya Kamath 2.72.1-1 - Update to latest version * Wed Nov 03 2021 Rishita Saha 2.70.1-1 - Update to latest version * Mon Sep 27 2021 Tony Reix 2.70.0-1 - Update to latest version * Mon Sep 27 2021 Tony Reix 2.69.3-1 - Update to latest version - Add changes for Jenkins - Deliver: lib*-2.0.so.0 in: lib*-2.0.a rather than: lib*-2.0.so.${NAME}.0 * Tue Aug 31 2021 Tony Reix 2.69.2-1 - Update to latest version - Create lib*.a files by hand from .so. files - Update %files according to Fedora .spec file - Deliver only 64bit executables, but still both 32&64bit libraries - Manage compatibility with old Yum yum-metadata-parser v1.1.4 package * Mon Aug 30 2021 Tony Reix 2.56.1-4 - Port to BullFreeware environment - Clean the .spec file * Wed Feb 03 2021 Rishita Saha 2.56.1-3 - Rebuilt to fix incorrect soft link - No longer shipping .so files - No longer shipping files in /usr * Tue Aug 7 2018 Harshita Jain 2.56.1-2 - Updated with libgcc * Tue May 8 2018 Harshita Jain 2.56.1-1 - Update to latest version * Fri Oct 6 2017 Reshma V Kumar 2.48.1-2 - Rebuild with gettext 0.19.8-1 in order to no more need __dbargs & Co * Thu Jun 9 2016 Matthieu Sarter 2.48.1-1 - Updated to version 2.48.1 - Fixed build issues with libiconv - Improved BuildRequires * Wed Apr 27 2016 Tony Reix 2.48.0-2 - Fix issues with .so files that must not be installed * Wed Apr 13 2016 Tony Reix 2.48.0-1 - Update to version 2.48.0 * Thu Jun 21 2012 Gerard Visiedo 2.33.2-1 - Update to version 2.33.2 * Thu Feb 02 2012 Gerard Visiedo 2.22.5-5 - Initial port on Aix6.1 * Fri Oct 14 2011 Gerard Visiedo - 2.22.5-4 - rebuild for compatibility with new libiconv.a 1.13.1-2 * Wed Sep 07 2011 Gerard Visiedo 2.22.5-3 - Add libraries 64bit * Thu Jan 13 2011 Jean Noel Cordenner 2.22.5-2 - Fix some bad link for glib2-devel * Wed Oct 27 2010 Jean Noel Cordenner 2.22.5-1 - Update to version 2.22.5 * Wed Sep 13 2006 BULL - Release 4 - New version version: 2.10.1 - added tag to support the build 64 bit - changed type long -> int to support 64 bit in fonction g_get_current_dir - packaging fixes perl at /usr/lib/ * Fri Dec 23 2005 BULL - Release 3 - Prototype gtk 64 bit * Tue Dec 06 2005 BULL - Release 2 - correct UTF8 conversion problem that for example prevent metacity to launch at startup. * Tue Nov 15 2005 BULL - Release 1 - New version version: 2.8.1 * Tue Aug 09 2005 BULL - Release 4 - Create symlinks between /usr/share and /opt/freeware/share * Thu Jun 23 2005 BULL - Release 3 * Wed May 25 2005 BULL - Release 1 - New version version: 2.6.3 * Wed Feb 16 2005 BULL - Release 2 - Move setting of G_BROKEN_FILENAMES in /etc/environment from gedit to glib * Wed Nov 24 2004 BULL - Release 1 - New version version: 2.4.7 * Tue Nov 23 2004 BULL - Release 3 * Mon Sep 20 2004 BULL - Release 2 - Do not core when dlerror() returns NIL