From 61c13f548a7e203ffd99c749bc4fac0dd3750169 Mon Sep 17 00:00:00 2001
From: Boxiang Sun <boxiang.sun@nexedi.com>
Date: Tue, 28 Jan 2025 07:55:33 +0100
Subject: [PATCH] component/firewalld: Migrate two packages to Meson build
 system

- Upgraded gobject-introspection to version 1.76.1:
  - Switched build system from autotools to Meson.
  - Updated pre-configure and environment variables to support Meson.
  - Removed outdated configure flags.

- Upgraded pygobject to version 3.44.2:
  - Switched build system from autotools to Meson.
  - Updated pre-configure to handle Meson subprojects.
  - Explicitly disabled cairo bindings with .
  - Updated environment variables for Meson compatibility.
---
 component/firewalld/buildout.cfg | 70 +++++++++++++++++---------------
 1 file changed, 37 insertions(+), 33 deletions(-)

diff --git a/component/firewalld/buildout.cfg b/component/firewalld/buildout.cfg
index 48774cdd9..ccfcc3981 100644
--- a/component/firewalld/buildout.cfg
+++ b/component/firewalld/buildout.cfg
@@ -3,6 +3,7 @@ parts =
   firewalld-patch
 
 extends =
+  ../bison/buildout.cfg
   ../defaults.cfg
   ../dbus/buildout.cfg
   ../flex/buildout.cfg
@@ -11,7 +12,11 @@ extends =
   ../intltool/buildout.cfg
   ../libtool/buildout.cfg
   ../nftables/buildout.cfg
+  ../pcre2/buildout.cfg
   ../python-slip/buildout.cfg
+  ../meson/buildout.cfg
+  ../ninja/buildout.cfg
+  ../pkgconfig/buildout.cfg
 
 [firewalld]
 recipe = slapos.recipe.cmmi
@@ -66,46 +71,45 @@ environment =
 
 [gobject-introspection]
 recipe = slapos.recipe.cmmi
-url = http://ftp.gnome.org/pub/gnome/core/3.22/3.22.2/sources/gobject-introspection-1.50.0.tar.xz
-md5sum = 5af8d724f25d0c9cfbe6df41b77e5dc0
-pre-configure = cp -f ${gnu-config:location}/config.sub ${gnu-config:location}/config.guess build-aux/
-configure-options =
-  --disable-static
-
+url = https://download.gnome.org/core/44/44.9/sources/gobject-introspection-1.76.1.tar.xz
+md5sum = 5cb554fdd139db79f9b1be13892fddac
+configure-command = true # Disable configure, use meson, required by 1.70+
+pre-configure =
+  mkdir -p subprojects/gnu-config
+  cp -f ${gnu-config:location}/config.sub ${gnu-config:location}/config.guess subprojects/gnu-config/
+configure-command =
+  ${meson:location}/bin/meson setup builddir \
+    --prefix=${buildout:parts-directory}/${:_buildout_section_name_} \
+    --wrap-mode=nodownload \
+    -Dbuildtype=release
+make-binary = ${ninja:location}/bin/ninja -C builddir
 environment =
-  PATH=${pkgconfig:location}/bin:${gettext:location}/bin:${glib:location}/bin:${xz-utils:location}/bin:${flex:location}/bin:${bison:location}/bin:%(PATH)s
-  PKG_CONFIG_PATH=${glib:location}/lib/pkgconfig:${glib:pkg_config_depends}
-  CPPFLAGS=-I${glib:location}/include/glib-2.0 -I${glib:location}/lib/glib-2.0/include
-  LDFLAGS=-L${glib:location}/lib -Wl,-rpath=${glib:location}/lib -L${libffi:location}/lib -Wl,-rpath=${libffi:location}/lib -lffi -L${zlib:location}/lib/ -Wl,-rpath=${zlib:location}/lib/
-  GLIB_CFLAGS=-I${glib:location}/include/glib-2.0 -I${glib:location}/lib/glib-2.0/include
-  GLIB_LIBS=-L${glib:location}/lib -lglib-2.0 -lgobject-2.0
-  FFI_CFLAGS=-I${libffi:location}/include
-  FFI_LIBS=-L${libffi:location}/lib -Wl,-rpath=${libffi:location}/lib -lffi
-  GIR_DIR=${buildout:parts-directory}/${:_buildout_section_name_}/share/gir-1.0
-  PYTHON=${buildout:executable}
+  PATH=${pkgconfig:location}/bin:${glib:location}/bin:${ninja:location}/bin:${meson:location}/bin:${flex:location}/bin:${bison:location}/bin:%(PATH)s
+  PKG_CONFIG_PATH=${glib:location}/lib/pkgconfig:${pcre2:location}/lib/pkgconfig:${libffi:location}/lib/pkgconfig:${zlib:location}/lib/pkgconfig
+  LD_LIBRARY_PATH=${glib:location}/lib
+
 
 [pygobject3]
 recipe = slapos.recipe.cmmi
-url = http://ftp.gnome.org/pub/gnome/core/3.22/3.22.2/sources/pygobject-3.22.0.tar.xz
+url = https://download.gnome.org/core/44/44.9/sources/pygobject-3.44.2.tar.xz
 python-egg = ${buildout:parts-directory}/${:_buildout_section_name_}/lib/python${python:version}/site-packages
-md5sum = ed4117ed5d554d25fd7718807fbf819f
+md5sum = f1a1e2304c328094806c306bbf658e85
+configure-command = true # Disable configure, use meson
 pre-configure =
-  cp -f ${gnu-config:location}/config.sub ${gnu-config:location}/config.guess .
-  sed -i 's#/usr/local#${gobject-introspection:location}#g' ${gobject-introspection:location}/lib/pkgconfig/gobject-introspection-1.0.pc
-configure-options =
-  --disable-static
-  --disable-cairo
-
+  mkdir -p subprojects/gnu-config
+  cp -f ${gnu-config:location}/config.sub ${gnu-config:location}/config.guess subprojects/gnu-config/
+configure-command =
+  ${meson:location}/bin/meson setup builddir \
+    --prefix=${buildout:parts-directory}/${:_buildout_section_name_} \
+    --wrap-mode=nodownload \
+    -Dpython=${buildout:executable} \
+    -Dbuildtype=release \
+    -Dpycairo=disabled  # Disable cairo bindings explicitly
+make-binary = ${ninja:location}/bin/ninja -C builddir
 environment =
-  PATH=${pkgconfig:location}/bin:${libtool:location}/bin:${glib:location}/bin:${xz-utils:location}/bin:%(PATH)s
-  PKG_CONFIG_PATH=${glib:location}/lib/pkgconfig:${glib:pkg_config_depends}:${gobject-introspection:location}/lib/pkgconfig
-  FFI_CFLAGS=-I${libffi:location}/include
-  FFI_LIBS=-L${libffi:location}/lib -Wl,-rpath=${libffi:location}/lib -lffi
-  CPPFLAGS=-I${glib:location}/include/glib-2.0 -I${glib:location}/lib/glib-2.0/include -I${gettext:location}/include -I${libffi:location}/include
-  LDFLAGS=-L${glib:location}/lib -Wl,-rpath=${glib:location}/lib -L${gettext:location}/lib -Wl,-rpath=${gettext:location}/lib
-  GIO_LIBS=-L${glib:location}/lib -lgio-2.0
-  GI_CFLAGS=-I${gobject-introspection:location}/include/gobject-introspection-1.0
-  GI_LIBS=-L${gobject-introspection:location}/lib -lgirepository-1.0
+  PATH=${pkgconfig:location}/bin:${ninja:location}/bin:${libtool:location}/bin:${glib:location}/bin:${xz-utils:location}/bin:%(PATH)s
+  PKG_CONFIG_PATH=${glib:location}/lib/pkgconfig:${glib:pkg_config_depends}:${gobject-introspection:location}/lib/x86_64-linux-gnu/pkgconfig
+  LD_LIBRARY_PATH=${glib:location}/lib:${libffi:location}/lib
   PYTHON=${buildout:executable}
 
 [trusted-config]
-- 
2.30.9