Github messages for voidlinux
 help / color / mirror / Atom feed
From: oreo639 <oreo639@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] [WIP] glib: update to 2.80.0.
Date: Sun, 14 Apr 2024 23:44:06 +0200	[thread overview]
Message-ID: <20240414214406.BF546214E5@inbox.vuxu.org> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-49446@inbox.vuxu.org>

[-- Attachment #1: Type: text/plain, Size: 2402 bytes --]

There is an updated pull request by oreo639 against master on the void-packages repository

https://github.com/oreo639/void-packages glib
https://github.com/void-linux/void-packages/pull/49446

[WIP] glib: update to 2.80.0.
<!-- Uncomment relevant sections and delete options which are not applicable -->

#### Testing the changes
- I tested the changes in this PR: **briefly**

glib 2.80.0 introduces libgirepository-2.0 and GIRepository-3.0, which unfortunately creates a build cycle between glib and gobject-introspection, although that is supposedly transitory.

Currently only the C components have been moved over to glib. (Notably, g-ir-scanner is missing, which is needed to compile glib's introspection data. An explanation for why along with the proposed remedies can be found in "The hard part" section of the glib issue below.)
The GLib gir files have also been moved to being generated by glib build instead of gobject-introspection build. (hence why gobject-introspection is necessary)

https://discourse.gnome.org/t/dealing-with-glib-and-gobject-introspection-circular-dependency/18701
https://gitlab.gnome.org/GNOME/glib/-/issues/2616
https://docs.gtk.org/girepository/migrating-gi.html

The bootstrap process, while not intentionally, mirrors the one used by gnome-buld-meta: https://gitlab.gnome.org/GNOME/gnome-build-meta/-/blob/master/elements/sdk/glib.bst
(While gobject-introspection technically doesn't need to be rebuilt I did so here due to issues with dependencies, e.g. glib-bootstrap vs glib)

<!--
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
  - aarch64-musl
  - armv7l
  - armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/49446.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-glib-49446.patch --]
[-- Type: text/x-diff, Size: 35580 bytes --]

From 43a3b4704ecc297afb4921733762714072b2c45c Mon Sep 17 00:00:00 2001
From: oreo639 <oreo6391@gmail.com>
Date: Thu, 21 Mar 2024 12:27:39 -0700
Subject: [PATCH 1/5] New package: glib-bootstrap-2.80.0

---
 srcpkgs/glib-bootstrap/patches  |  1 +
 srcpkgs/glib-bootstrap/template | 46 +++++++++++++++++++++++++++++++++
 srcpkgs/glib-bootstrap/update   |  2 ++
 3 files changed, 49 insertions(+)
 create mode 120000 srcpkgs/glib-bootstrap/patches
 create mode 100644 srcpkgs/glib-bootstrap/template
 create mode 100644 srcpkgs/glib-bootstrap/update

diff --git a/srcpkgs/glib-bootstrap/patches b/srcpkgs/glib-bootstrap/patches
new file mode 120000
index 00000000000000..4beb39573cad4a
--- /dev/null
+++ b/srcpkgs/glib-bootstrap/patches
@@ -0,0 +1 @@
+../glib/patches
\ No newline at end of file
diff --git a/srcpkgs/glib-bootstrap/template b/srcpkgs/glib-bootstrap/template
new file mode 100644
index 00000000000000..8839d8b24c893b
--- /dev/null
+++ b/srcpkgs/glib-bootstrap/template
@@ -0,0 +1,46 @@
+# Template file for 'glib-bootstrap'
+# keep in sync with glib
+#
+# This aloing with gobject-introspection-bootstrap is unfortunately necessary as a part of the
+#   libgirepository-1.0 to libgirepository-2.0 migration.
+pkgname=glib-bootstrap
+version=2.80.0
+revision=1
+build_style=meson
+# static version is necessary for qemu-user-static;
+# also disable LTO, otherwise there are multiple failures when linking qemu
+configure_args="-Dman=true -Dselinux=disabled
+ --default-library=both -Db_lto=false -Dintrospection=disabled"
+hostmakedepends="gettext pkg-config libxslt docbook-xsl python3-packaging python3-docutils"
+makedepends="zlib-devel pcre2-devel libffi-devel dbus-devel elfutils-devel libmount-devel"
+depends="${makedepends}"
+checkdepends="desktop-file-utils shared-mime-info dbus python3-pytest"
+short_desc="GNU library of C routines"
+maintainer="Orphaned <orphan@voidlinux.org>"
+license="LGPL-2.1-or-later"
+homepage="https://wiki.gnome.org/Projects/GLib"
+#changelog="https://gitlab.gnome.org/GNOME/glib/raw/glib-2-78/NEWS"
+changelog="https://gitlab.gnome.org/GNOME/glib/raw/main/NEWS"
+distfiles="${GNOME_SITE}/glib/${version%.*}/glib-${version}.tar.xz"
+checksum=8228a92f92a412160b139ae68b6345bd28f24434a7b5af150ebe21ff587a561d
+make_check_pre="dbus-run-session"
+
+repository=bootstrap
+conflicts="glib libglib-devel glib-devel"
+provides="glib-${version}_${revision}"
+
+post_patch() {
+	# Timer test is flaky on 32 bit (does float comparisons)
+	if [ "${XBPS_TARGET_WORDSIZE}" = "32" ]; then
+		vsed -e "s/'timer' : {},//" -i glib/tests/meson.build
+	fi
+}
+
+pre_check() {
+	# machine-id is a random, non-zero value
+	echo 'dcb30309cd6c8b7cc20383d85a5c7012' > /etc/machine-id
+}
+
+post_check() {
+	rm /etc/machine-id
+}
diff --git a/srcpkgs/glib-bootstrap/update b/srcpkgs/glib-bootstrap/update
new file mode 100644
index 00000000000000..4d29b9118be20b
--- /dev/null
+++ b/srcpkgs/glib-bootstrap/update
@@ -0,0 +1,2 @@
+pattern="glib-[0-9]+\.[0-9]*[02468]\.[0-9]+"
+pkgname="glib"

From a9a863d3cf258c73f4507349073ee5549f9f9160 Mon Sep 17 00:00:00 2001
From: oreo639 <oreo6391@gmail.com>
Date: Thu, 21 Mar 2024 12:33:00 -0700
Subject: [PATCH 2/5] New package: gobject-introspection-bootstrap-1.80.0

---
 srcpkgs/gobject-introspection-bootstrap/files |  1 +
 .../gobject-introspection-bootstrap/patches   |  1 +
 .../gobject-introspection-bootstrap/template  | 80 +++++++++++++++++++
 .../gobject-introspection-bootstrap/update    |  1 +
 4 files changed, 83 insertions(+)
 create mode 120000 srcpkgs/gobject-introspection-bootstrap/files
 create mode 120000 srcpkgs/gobject-introspection-bootstrap/patches
 create mode 100644 srcpkgs/gobject-introspection-bootstrap/template
 create mode 100644 srcpkgs/gobject-introspection-bootstrap/update

diff --git a/srcpkgs/gobject-introspection-bootstrap/files b/srcpkgs/gobject-introspection-bootstrap/files
new file mode 120000
index 00000000000000..4602177e31f6a7
--- /dev/null
+++ b/srcpkgs/gobject-introspection-bootstrap/files
@@ -0,0 +1 @@
+../gobject-introspection/files
\ No newline at end of file
diff --git a/srcpkgs/gobject-introspection-bootstrap/patches b/srcpkgs/gobject-introspection-bootstrap/patches
new file mode 120000
index 00000000000000..cc2ee1c4a0e3b9
--- /dev/null
+++ b/srcpkgs/gobject-introspection-bootstrap/patches
@@ -0,0 +1 @@
+../gobject-introspection/patches
\ No newline at end of file
diff --git a/srcpkgs/gobject-introspection-bootstrap/template b/srcpkgs/gobject-introspection-bootstrap/template
new file mode 100644
index 00000000000000..ca3b4c5987ecb9
--- /dev/null
+++ b/srcpkgs/gobject-introspection-bootstrap/template
@@ -0,0 +1,80 @@
+# Template file for 'gobject-introspection-bootstrap'
+# keep in sync with gobject-introspection
+#
+# This aloing with glib-bootstrap is unfortunately necessary as a part of the
+#   libgirepository-1.0 to libgirepository-2.0 migration.
+pkgname=gobject-introspection-bootstrap
+version=1.80.1
+revision=1
+build_style=meson
+configure_args="-Dbuild_introspection_data=false"
+pycompile_dirs="usr/lib/gobject-introspection/giscanner"
+hostmakedepends="flex pkg-config"
+# We won't run tests with cairo to avoid cyclical deps.
+makedepends="libffi-devel glib-bootstrap python3-devel python3-Mako
+ python3-Markdown"
+depends="${makedepends}"
+short_desc="Introspection system for GObject-based libraries"
+maintainer="oreo639 <oreo6391@gmail.com>"
+license="GPL-2.0-or-later, LGPL-2.1-or-later"
+homepage="https://wiki.gnome.org/Projects/GObjectIntrospection"
+distfiles="${GNOME_SITE}/gobject-introspection/${version%.*}/gobject-introspection-${version}.tar.xz"
+checksum=a1df7c424e15bda1ab639c00e9051b9adf5cea1a9e512f8a603b53cd199bc6d8
+python_version=3
+
+repository=bootstrap
+conflicts="libgirepository libgirepository-devel gobject-introspection"
+noverifyrdeps=yes
+
+if [ "$CROSS_BUILD" ]; then
+	hostmakedepends+=" gobject-introspection-bootstrap qemu-user-static prelink-cross"
+	configure_args+=" -Dgi_cross_use_prebuilt_gi=true
+	 -Dgi_cross_binary_wrapper=/usr/bin/g-ir-scanner-qemuwrapper
+	 -Dgi_cross_ldd_wrapper=/usr/bin/g-ir-scanner-lddwrapper
+	 -Dgi_cross_pkgconfig_sysroot_path=${XBPS_CROSS_BASE}"
+fi
+
+post_install() {
+	rm ${DESTDIR}/usr/lib/gobject-introspection/giscanner/doctemplates/*/meson.build
+
+	# Install our wrappers system-wide, they are required for building all other
+	# gobject-based packages.
+	vbin ${FILESDIR}/g-ir-scanner-qemuwrapper
+	vbin ${FILESDIR}/g-ir-scanner-lddwrapper
+
+	# Install g-ir-scanner-wrapper as g-ir-scanner, we need it with that name since
+	# we can't expect people to just not hardcode /usr/bin/g-ir-scanner, some packages
+	# like gtk+3 just like **really** much to use /usr/bin/g-ir-scanner and meson with
+	# find_program is also to blame.
+	mv ${DESTDIR}/usr/bin/g-ir-scanner{,.wrapped}
+	vbin ${FILESDIR}/g-ir-scanner-wrapper g-ir-scanner
+
+	# Same logic of g-ir-scanner applies here
+	mv ${DESTDIR}/usr/bin/g-ir-compiler{,.wrapped}
+	vbin ${FILESDIR}/g-ir-compiler-wrapper g-ir-compiler
+
+	# For cross builds copy the not installed tests subdirectory
+	if [ "$CROSS_BUILD" ]; then
+		vmkdir usr/share/gobject-introspection-1.0/tests
+		for f in scanner/annotation.? scanner/drawable.? scanner/foo.? \
+			scanner/regress.? scanner/utility.? scanner/warnlib.? \
+			gimarshallingtests.? gitestmacros.h; do
+			vcopy tests/$f usr/share/gobject-introspection-1.0/tests
+		done
+	fi
+
+	# modify the pkg-config files to respect ${pc_sysrootdir} for variables that are
+	# meant to be called with 'pkg-config --variable'
+	vsed -e 's|^g_ir_scanner=.*|g_ir_scanner=${pc_sysrootdir}/${bindir}/g-ir-scanner|g' \
+		 -e 's|^g_ir_compiler=.*|g_ir_compiler=${pc_sysrootdir}/${bindir}/g-ir-compiler|g' \
+		 -e 's|^g_ir_generate=.*|g_ir_generate=${pc_sysrootdir}/${bindir}/g-ir-generate|g' \
+		 -e 's|^gidatadir.*|gidatadir=${pc_sysrootdir}/${datadir}/gobject-introspection-1.0|g' \
+		 -e 's|^girdir.*|girdir=${pc_sysrootdir}/${datadir}/gir-1.0|g' \
+		 -e 's|^typelibdir.*|typelibdir=${pc_sysrootdir}/${libdir}/girepository-1.0|g' \
+		 -i ${DESTDIR}/usr/lib/pkgconfig/gobject-introspection-1.0.pc \
+		 -i ${DESTDIR}/usr/lib/pkgconfig/gobject-introspection-no-export-1.0.pc
+
+	# Fix the name of the python3 c bindings
+	mv ${DESTDIR}/usr/lib/gobject-introspection/giscanner/_giscanner*.so \
+	   ${DESTDIR}/usr/lib/gobject-introspection/giscanner/_giscanner.so
+}
diff --git a/srcpkgs/gobject-introspection-bootstrap/update b/srcpkgs/gobject-introspection-bootstrap/update
new file mode 100644
index 00000000000000..8f89bb085398ec
--- /dev/null
+++ b/srcpkgs/gobject-introspection-bootstrap/update
@@ -0,0 +1 @@
+pattern="(?<=${pkgname}-)[0-9]+\.[0-9]*[02468]\.[0-9]+"

From 93f69977d45aba737583d748cece17f6d07b1a9c Mon Sep 17 00:00:00 2001
From: oreo639 <oreo6391@gmail.com>
Date: Thu, 21 Mar 2024 12:53:54 -0700
Subject: [PATCH 3/5] glib: update to 2.80.0.

This merges part of gobject-introspection tools, but not all of it.
Unfortunately this creates a cyclic dependency between glib and gi.
This is supposed to be temporary.

https://discourse.gnome.org/t/dealing-with-glib-and-gobject-introspection-circular-dependency/18701
https://gitlab.gnome.org/GNOME/glib/-/issues/2616
https://docs.gtk.org/girepository/migrating-gi.html
---
 common/shlibs                                 |   6 +
 srcpkgs/glib/files/gi-tool-emulator-wrapper   |  20 +++
 srcpkgs/glib/files/gi-xbps-qemuwrapper        |  10 ++
 ...pository-directory-for-native-builds.patch |  34 ++++
 .../glib/patches/disable-broken-tests.patch   |  67 --------
 srcpkgs/glib/patches/fix-test-cxxcpp.patch    |  26 ---
 srcpkgs/glib/patches/gspawn-eperm.patch       |  62 +++++++
 ...er-Fix-race-between-source-callbacks.patch | 158 ------------------
 srcpkgs/glib/template                         |  47 ++++--
 9 files changed, 165 insertions(+), 265 deletions(-)
 create mode 100755 srcpkgs/glib/files/gi-tool-emulator-wrapper
 create mode 100755 srcpkgs/glib/files/gi-xbps-qemuwrapper
 create mode 100644 srcpkgs/glib/patches/0001-Relocate-the-repository-directory-for-native-builds.patch
 delete mode 100644 srcpkgs/glib/patches/disable-broken-tests.patch
 delete mode 100644 srcpkgs/glib/patches/fix-test-cxxcpp.patch
 create mode 100644 srcpkgs/glib/patches/gspawn-eperm.patch
 delete mode 100644 srcpkgs/glib/patches/gthreadedresolver-Fix-race-between-source-callbacks.patch

diff --git a/common/shlibs b/common/shlibs
index 0a53717e57d2a0..3f19cf163b0e83 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -107,6 +107,12 @@ libwtdbo.so.4.10.4 wt-4.10.4_1
 libwtdbosqlite3.so.4.10.4 wt-4.10.4_1
 libwthttp.so.4.10.4 wt-4.10.4_1
 libwttest.so.4.10.4 wt-4.10.4_1
+libgrepository-2.0.so.0 glib-2.80.0_1
+libwt.so.4.10.0 wt-4.10.0_1
+libwtdbo.so.4.10.0 wt-4.10.0_1
+libwtdbosqlite3.so.4.10.0 wt-4.10.0_1
+libwthttp.so.4.10.0 wt-4.10.0_1
+libwttest.so.4.10.0 wt-4.10.0_1
 libatk-1.0.so.0 atk-1.26.0_1
 libpangocairo-1.0.so.0 pango-1.24.0_1
 libpangoft2-1.0.so.0 pango-1.24.0_1
diff --git a/srcpkgs/glib/files/gi-tool-emulator-wrapper b/srcpkgs/glib/files/gi-tool-emulator-wrapper
new file mode 100755
index 00000000000000..73f0cb0950506e
--- /dev/null
+++ b/srcpkgs/glib/files/gi-tool-emulator-wrapper
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+# Check if we are running in an xbps-src environment and run the wrapper if that
+# is the case.
+if [ -n "$XBPS_CROSS_BASE" -a -n "$XBPS_TARGET_MACHINE" -a -n "$XBPS_VERSION" ]; then
+	# wrapper for g-ir-compiler, which runs the target version of it through qemu.
+	# g-ir-compiler writes out the raw content of a C struct to disk, and therefore
+	# is architecture dependent.
+	if [ -x build/tools/@TOOL@ ]; then
+		# We are compiling gobject-introspection.
+		# lets used the one we just compiled.
+		gir_bin=build/tools/@TOOL@
+	elif [ -x ${XBPS_CROSS_BASE}/usr/bin/@TOOL@.wrapped ]; then
+		# Lets use the g-ir-compiler from the target
+		gir_bin=${XBPS_CROSS_BASE}/usr/bin/@TOOL@.wrapped
+	fi
+	exec /usr/bin/gi-xbps-qemuwrapper ${gir_bin} "$@"
+fi
+
+exec /usr/bin/@TOOL@.wrapped "$@"
diff --git a/srcpkgs/glib/files/gi-xbps-qemuwrapper b/srcpkgs/glib/files/gi-xbps-qemuwrapper
new file mode 100755
index 00000000000000..665eae0e9360cd
--- /dev/null
+++ b/srcpkgs/glib/files/gi-xbps-qemuwrapper
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# Ensure GIO_MODULE_DIR is not set so we don't load random things
+# which may then get deleted (or their dependencies) and potentially segfault
+/usr/bin/qemu-${XBPS_TARGET_QEMU_MACHINE}-static ${GIR_EXTRA_OPTIONS} \
+			-L ${XBPS_CROSS_BASE} \
+			-E LD_LIBRARY_PATH="${XBPS_CROSS_BASE}/usr/lib:.libs:${GIR_EXTRA_LIBS_PATH}" \
+			-E GI_TYPELIB_SYSROOT="${XBPS_CROSS_BASE}" \
+			-U GIO_MODULE_DIR \
+			"$@"
diff --git a/srcpkgs/glib/patches/0001-Relocate-the-repository-directory-for-native-builds.patch b/srcpkgs/glib/patches/0001-Relocate-the-repository-directory-for-native-builds.patch
new file mode 100644
index 00000000000000..66bf4240e7c64a
--- /dev/null
+++ b/srcpkgs/glib/patches/0001-Relocate-the-repository-directory-for-native-builds.patch
@@ -0,0 +1,34 @@
+Allow us to specify the typelib sysroot in wrapper scripts for cross compiling.
+
+--- a/girepository/girepository.c
++++ b/girepository/girepository.c
+@@ -154,6 +154,7 @@ gi_repository_init (GIRepository *reposi
+       const char *libdir;
+       char *typelib_dir;
+       const char *type_lib_path_env;
++      const char *type_lib_sysroot_env;
+ 
+       /* This variable is intended to take precedence over both:
+        *   - the default search path;
+@@ -161,6 +162,9 @@ gi_repository_init (GIRepository *reposi
+        */
+       type_lib_path_env = g_getenv ("GI_TYPELIB_PATH");
+ 
++      /* Void Linux addition for cross compiling, since we use cross sysroots */
++      type_lib_sysroot_env = g_getenv ("GI_TYPELIB_SYSROOT");
++
+       if (type_lib_path_env)
+         {
+           char **custom_dirs;
+@@ -176,7 +180,10 @@ gi_repository_init (GIRepository *reposi
+ 
+       libdir = GOBJECT_INTROSPECTION_LIBDIR;
+ 
+-      typelib_dir = g_build_filename (libdir, "girepository-1.0", NULL);
++      if (type_lib_sysroot_env)
++          typelib_dir = g_build_filename (type_lib_sysroot_env, libdir, "girepository-1.0", NULL);
++      else
++          typelib_dir = g_build_filename (libdir, "girepository-1.0", NULL);
+ 
+       g_ptr_array_add (repository->typelib_search_path, g_steal_pointer (&typelib_dir));
+     }
diff --git a/srcpkgs/glib/patches/disable-broken-tests.patch b/srcpkgs/glib/patches/disable-broken-tests.patch
deleted file mode 100644
index f6e0328b214e76..00000000000000
--- a/srcpkgs/glib/patches/disable-broken-tests.patch
+++ /dev/null
@@ -1,67 +0,0 @@
---- a/gio/tests/meson.build
-+++ b/gio/tests/meson.build
-@@ -63,7 +63,6 @@ gio_tests = {
-     # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392 / https://gitlab.gnome.org/GNOME/glib/-/issues/1251
-     'can_fail' : host_system == 'darwin',
-   },
--  'converter-stream' : {},
-   'credentials' : {},
-   'data-input-stream' : {},
-   'data-output-stream' : {},
-@@ -227,7 +226,6 @@ endif
- #  Test programs buildable on UNIX only
- if host_machine.system() != 'windows'
-   gio_tests += {
--    'file' : {},
-     'gdbus-peer-object-manager' : {},
-     'gdbus-sasl' : {},
-     'live-g-file' : {},
-@@ -951,13 +949,6 @@ if not meson.is_cross_build()
-       test_resources_binary2,
-     ]
-   endif
--
--  gio_tests += {
--    'resources' : {
--      'extra_sources' : resources_extra_sources,
--      'depends' : resource_plugin,
--    },
--  }
- endif
- 
- test_extra_programs_targets = {}
-diff --git a/glib/tests/meson.build b/glib/tests/meson.build
-index d74617823..1de81a825 100644
---- a/glib/tests/meson.build
-+++ b/glib/tests/meson.build
-@@ -12,22 +12,14 @@ glib_tests = {
-   'cache' : {},
-   'charset' : {},
-   'checksum' : {},
--  'collate' : {},
-   'completion' : {},
-   'cond' : {},
--  'convert' : {},
-   'dataset' : {},
--  'date' : {
--    # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392
--    'can_fail' : host_system == 'darwin',
--  },
-   'dir' : {},
-   'environment' : {
-     # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392
-     'can_fail' : host_system == 'darwin',
-   },
--  'error' : {},
--  'fileutils' : {},
-   'gdatetime' : {
-     'suite' : ['slow'],
-     'can_fail' : host_system == 'windows',
-@@ -70,7 +62,6 @@ glib_tests = {
-   'node' : {},
-   'once' : {},
-   'onceinit' : {},
--  'option-context' : {},
-   'option-argv0' : {},
-   'overflow' : {},
-   'overflow-fallback' : {
diff --git a/srcpkgs/glib/patches/fix-test-cxxcpp.patch b/srcpkgs/glib/patches/fix-test-cxxcpp.patch
deleted file mode 100644
index 2b1ad5b4e6adc7..00000000000000
--- a/srcpkgs/glib/patches/fix-test-cxxcpp.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Fails to build on musl.
-../glib/tests/cxx.cpp:509:15: error: missing sentinel in function call [-Werror=format=]
-g_test_init (&argc, &argv, NULL);
-
---- a/glib/tests/cxx.cpp
-+++ a/glib/tests/cxx.cpp
-@@ -505,7 +505,7 @@ test_string_free (void)
- int
- main (int argc, char *argv[])
- {
- #if G_CXX_STD_CHECK_VERSION (11)
--  g_test_init (&argc, &argv, NULL);
-+  g_test_init (&argc, &argv, nullptr);
- #else
-   g_test_init (&argc, &argv, static_cast<void *>(NULL));
---- a/gio/tests/cxx.cpp
-+++ a/gio/tests/cxx.cpp
-@@ -59,7 +59,7 @@ int
- main (int argc, char **argv)
- {
- #if G_CXX_STD_CHECK_VERSION (11)
--  g_test_init (&argc, &argv, NULL);
-+  g_test_init (&argc, &argv, nullptr);
- #else
-   g_test_init (&argc, &argv, static_cast<void *>(NULL));
- #endif
diff --git a/srcpkgs/glib/patches/gspawn-eperm.patch b/srcpkgs/glib/patches/gspawn-eperm.patch
new file mode 100644
index 00000000000000..0d240bb470c10e
--- /dev/null
+++ b/srcpkgs/glib/patches/gspawn-eperm.patch
@@ -0,0 +1,62 @@
+From 24de599887f641271ea279a0421776990075b714 Mon Sep 17 00:00:00 2001
+From: David King <amigadave@amigadave.com>
+Date: Tue, 12 Mar 2024 10:15:03 +0000
+Subject: [PATCH] gspawn: Additionally handle EPERM
+
+Handle old broken versions of Docker and libseccomp which do not
+recognise close_range().
+
+https://github.com/opencontainers/runc/issues/2151
+https://salsa.debian.org/debian/libseccomp/-/blob/debian/bullseye/debian/patches/syscalls_add_close_range_syscall.patch
+
+Based on a patch by Richard Hughes.
+---
+ glib/glib-unix.c | 23 +++++++++++++++++++----
+ 1 file changed, 19 insertions(+), 4 deletions(-)
+
+diff --git a/glib/glib-unix.c b/glib/glib-unix.c
+index 7cb76dd33..9b2dfe2d9 100644
+--- a/glib/glib-unix.c
++++ b/glib/glib-unix.c
+@@ -835,9 +835,18 @@ g_fdwalk_set_cloexec (int lowfd)
+    *
+    * Handle ENOSYS in case it’s supported in libc but not the kernel; if so,
+    * fall back to safe_fdwalk(). Handle EINVAL in case `CLOSE_RANGE_CLOEXEC`
+-   * is not supported. */
++   * is not supported.
++   *
++   * Also handle EPERM for the cases where GLi is running under broken versions
++   * of Docker+libseccomp which don't recognise `close_range()` so block calls
++   * to it under a default security policy which returns EPERM rather than (the
++   * correct) ENOSYS. This workaround should be carried in distributions until
++   * they have versions of libseccomp and Docker which contain:
++   *  - https://salsa.debian.org/debian/libseccomp/-/blob/debian/bullseye/debian/patches/syscalls_add_close_range_syscall.patch
++   *  - https://github.com/opencontainers/runc/issues/2151
++   */
+   ret = close_range (lowfd, G_MAXUINT, CLOSE_RANGE_CLOEXEC);
+-  if (ret == 0 || !(errno == ENOSYS || errno == EINVAL))
++  if (ret == 0 || !(errno == ENOSYS || errno == EINVAL || errno == EPERM))
+     return ret;
+ #endif  /* HAVE_CLOSE_RANGE */
+ 
+@@ -882,9 +891,15 @@ g_closefrom (int lowfd)
+    * situations: https://bugs.python.org/issue38061
+    *
+    * Handle ENOSYS in case it’s supported in libc but not the kernel; if so,
+-   * fall back to safe_fdwalk(). */
++   * fall back to safe_fdwalk().
++   *
++   * Also handle EPERM for the cases where GLib is running under broken versions
++   * of Docker+libseccomp which don’t recognise `close_range()` so block calls
++   * to it under a default security policy which returns EPERM rather than (the
++   * correct) ENOSYS.
++   */
+   ret = close_range (lowfd, G_MAXUINT, 0);
+-  if (ret == 0 || errno != ENOSYS)
++  if (ret == 0 || !(errno == ENOSYS || errno == EPERM))
+     return ret;
+ #endif  /* HAVE_CLOSE_RANGE */
+ 
+-- 
+2.44.0
+
diff --git a/srcpkgs/glib/patches/gthreadedresolver-Fix-race-between-source-callbacks.patch b/srcpkgs/glib/patches/gthreadedresolver-Fix-race-between-source-callbacks.patch
deleted file mode 100644
index 17de85b15bdbbe..00000000000000
--- a/srcpkgs/glib/patches/gthreadedresolver-Fix-race-between-source-callbacks.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Philip Withnall <philip@tecnocode.co.uk>
-Date: Mon, 11 Sep 2023 16:02:15 +0100
-Subject: [PATCH] gthreadedresolver: Fix race between source callbacks and
- finalize
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-I had thought that because `g_source_destroy()` was called for the two
-sources (cancel and timeout) in the `GTask` finalize function for a
-threaded resolver operation, that it would be fine to use a plain
-pointer in the source callbacks to point to the `GTask`.
-
-That turns out to not be true: because the source callbacks are executed
-in the GLib worker thread, and the `GTask` can be finalized in another
-thread, it’s possible for a source callback (e.g. `cancelled_cb()`) to
-be scheduled in the worker thread, then for the `GTask` to be finalized,
-and then the source callback to continue execution and find itself
-doing a use-after-free.
-
-Fix that by using a weak ref to the `GTask` in the source callbacks,
-rather than a plain pointer.
-
-Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>
-
-Fixes: #3105
----
- gio/gthreadedresolver.c | 43 +++++++++++++++++++++++++++++++++++------
- 1 file changed, 37 insertions(+), 6 deletions(-)
-
-diff --git a/gio/gthreadedresolver.c b/gio/gthreadedresolver.c
-index 2d94531bfda3..c7a567549f28 100644
---- a/gio/gthreadedresolver.c
-+++ b/gio/gthreadedresolver.c
-@@ -1422,85 +1422,116 @@ lookup_records_finish (GResolver     *resolver,
- static gboolean
- timeout_cb (gpointer user_data)
- {
--  GTask *task = G_TASK (user_data);
--  LookupData *data = g_task_get_task_data (task);
-+  GWeakRef *weak_task = user_data;
-+  GTask *task = NULL;  /* (owned) */
-+  LookupData *data;
-   gboolean should_return;
- 
-+  task = g_weak_ref_get (weak_task);
-+  if (task == NULL)
-+    return G_SOURCE_REMOVE;
-+
-+  data = g_task_get_task_data (task);
-+
-   g_mutex_lock (&data->lock);
- 
-   should_return = g_atomic_int_compare_and_exchange (&data->will_return, NOT_YET, TIMED_OUT);
-   g_clear_pointer (&data->timeout_source, g_source_unref);
- 
-   g_mutex_unlock (&data->lock);
- 
-   if (should_return)
-     g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_TIMED_OUT,
-                              _("Socket I/O timed out"));
- 
-   /* Signal completion of the task. */
-   g_mutex_lock (&data->lock);
-   data->has_returned = TRUE;
-   g_cond_broadcast (&data->cond);
-   g_mutex_unlock (&data->lock);
- 
-+  g_object_unref (task);
-+
-   return G_SOURCE_REMOVE;
- }
- 
- /* Will be called in the GLib worker thread, so must lock all accesses to shared
-  * data. */
- static gboolean
- cancelled_cb (GCancellable *cancellable,
-               gpointer      user_data)
- {
--  GTask *task = G_TASK (user_data);
--  LookupData *data = g_task_get_task_data (task);
-+  GWeakRef *weak_task = user_data;
-+  GTask *task = NULL;  /* (owned) */
-+  LookupData *data;
-   gboolean should_return;
- 
-+  task = g_weak_ref_get (weak_task);
-+  if (task == NULL)
-+    return G_SOURCE_REMOVE;
-+
-+  data = g_task_get_task_data (task);
-+
-   g_mutex_lock (&data->lock);
- 
-   g_assert (g_cancellable_is_cancelled (cancellable));
-   should_return = g_atomic_int_compare_and_exchange (&data->will_return, NOT_YET, CANCELLED);
-   g_clear_pointer (&data->cancellable_source, g_source_unref);
- 
-   g_mutex_unlock (&data->lock);
- 
-   if (should_return)
-     g_task_return_error_if_cancelled (task);
- 
-   /* Signal completion of the task. */
-   g_mutex_lock (&data->lock);
-   data->has_returned = TRUE;
-   g_cond_broadcast (&data->cond);
-   g_mutex_unlock (&data->lock);
- 
-+  g_object_unref (task);
-+
-   return G_SOURCE_REMOVE;
- }
- 
-+static void
-+weak_ref_clear_and_free (GWeakRef *weak_ref)
-+{
-+  g_weak_ref_clear (weak_ref);
-+  g_free (weak_ref);
-+}
-+
- static void
- run_task_in_thread_pool_async (GThreadedResolver *self,
-                                GTask             *task)
- {
-   LookupData *data = g_task_get_task_data (task);
-   guint timeout_ms = g_resolver_get_timeout (G_RESOLVER (self));
-   GCancellable *cancellable = g_task_get_cancellable (task);
- 
-   g_mutex_lock (&data->lock);
- 
-   g_thread_pool_push (self->thread_pool, g_object_ref (task), NULL);
- 
-   if (timeout_ms != 0)
-     {
-+      GWeakRef *weak_task = g_new0 (GWeakRef, 1);
-+      g_weak_ref_set (weak_task, task);
-+
-       data->timeout_source = g_timeout_source_new (timeout_ms);
-       g_source_set_static_name (data->timeout_source, "[gio] threaded resolver timeout");
--      g_source_set_callback (data->timeout_source, G_SOURCE_FUNC (timeout_cb), task, NULL);
-+      g_source_set_callback (data->timeout_source, G_SOURCE_FUNC (timeout_cb), g_steal_pointer (&weak_task), (GDestroyNotify) weak_ref_clear_and_free);
-       g_source_attach (data->timeout_source, GLIB_PRIVATE_CALL (g_get_worker_context) ());
-     }
- 
-   if (cancellable != NULL)
-     {
-+      GWeakRef *weak_task = g_new0 (GWeakRef, 1);
-+      g_weak_ref_set (weak_task, task);
-+
-       data->cancellable_source = g_cancellable_source_new (cancellable);
-       g_source_set_static_name (data->cancellable_source, "[gio] threaded resolver cancellable");
--      g_source_set_callback (data->cancellable_source, G_SOURCE_FUNC (cancelled_cb), task, NULL);
-+      g_source_set_callback (data->cancellable_source, G_SOURCE_FUNC (cancelled_cb), g_steal_pointer (&weak_task), (GDestroyNotify) weak_ref_clear_and_free);
-       g_source_attach (data->cancellable_source, GLIB_PRIVATE_CALL (g_get_worker_context) ());
-     }
- 
diff --git a/srcpkgs/glib/template b/srcpkgs/glib/template
index 8cbde21cc6019b..a9723c23b568c2 100644
--- a/srcpkgs/glib/template
+++ b/srcpkgs/glib/template
@@ -1,30 +1,35 @@
 # Template file for 'glib'
+# keep in sync with glib-bootstrap
 pkgname=glib
-version=2.78.0
-revision=3
+version=2.80.0
+revision=1
 build_style=meson
+build_helper=qemu
 # static version is necessary for qemu-user-static;
 # also disable LTO, otherwise there are multiple failures when linking qemu
-configure_args="-Dman=true -Dselinux=disabled
- $(vopt_bool gtk_doc gtk_doc) --default-library=both -Db_lto=false"
-hostmakedepends="gettext pkg-config libxslt docbook-xsl $(vopt_if gtk_doc gtk-doc)"
+configure_args="-Dman=true -Dselinux=disabled -Dintrospection=enabled
+ $(vopt_bool gtk_doc documentation) --default-library=both -Db_lto=false"
+hostmakedepends="gettext pkg-config gobject-introspection-bootstrap
+ libxslt docbook-xsl $(vopt_if gtk_doc gi-docgen) python3-packaging python3-docutils"
 makedepends="zlib-devel pcre2-devel libffi-devel dbus-devel elfutils-devel libmount-devel"
 checkdepends="desktop-file-utils shared-mime-info dbus python3-pytest"
 short_desc="GNU library of C routines"
 maintainer="Orphaned <orphan@voidlinux.org>"
 license="LGPL-2.1-or-later"
 homepage="https://wiki.gnome.org/Projects/GLib"
-#changelog="https://gitlab.gnome.org/GNOME/glib/raw/glib-2-78/NEWS"
+#changelog="https://gitlab.gnome.org/GNOME/glib/raw/glib-2-80/NEWS"
 changelog="https://gitlab.gnome.org/GNOME/glib/raw/main/NEWS"
 distfiles="${GNOME_SITE}/glib/${version%.*}/glib-${version}.tar.xz"
-checksum=44eaab8b720877ce303c5540b657b126f12dc94972d9880b52959f43fb537b30
+checksum=8228a92f92a412160b139ae68b6345bd28f24434a7b5af150ebe21ff587a561d
 make_check_pre="dbus-run-session"
 
 build_options="gtk_doc"
-desc_option_gtk_doc="Build GTK API docs"
+build_options_default="gtk_doc"
+desc_option_gtk_doc="Build Glib API docs"
 
-if [ -z "$CROSS_BUILD" ]; then
-	build_options_default+=" gtk_doc"
+if [ "$CROSS_BUILD" ]; then
+	hostmakedepends+=" prelink-cross"
+	makedepends+=" gobject-introspection-bootstrap"
 fi
 
 post_patch() {
@@ -34,6 +39,18 @@ post_patch() {
 	fi
 }
 
+post_install() {
+	# Install introspection wrappers for cross compiling
+	vbin ${FILESDIR}/gi-xbps-qemuwrapper
+
+	# Install emulator wrappers for tools that require it
+	for tool in gi-compile-repository gi-decompile-typelib gi-inspect-typelib; do
+		mv ${DESTDIR}/usr/bin/${tool}{,.wrapped}
+		sed -e "s|@TOOL@|${tool}|" ${FILESDIR}/gi-tool-emulator-wrapper > gi-tool-emulator-wrapper
+		vbin gi-tool-emulator-wrapper ${tool}
+	done
+}
+
 pre_check() {
 	# machine-id is a random, non-zero value
 	echo 'dcb30309cd6c8b7cc20383d85a5c7012' > /etc/machine-id
@@ -44,11 +61,12 @@ post_check() {
 }
 
 libglib-devel_package() {
-	depends="${makedepends} ${sourcepkg}>=${version}_${revision}"
+	depends="${makedepends/gobject-introspection-bootstrap/} ${sourcepkg}>=${version}_${revision}"
 	short_desc+=" - development files"
 	lib32files="/usr/lib/glib-2.0/include/glibconfig.h"
 	pkg_install() {
 		vmove usr/include
+		vmove usr/share/gir-1.0
 		vmove usr/lib/glib-2.0
 		vmove usr/lib/pkgconfig
 		vmove "usr/lib/*.so"
@@ -57,7 +75,7 @@ libglib-devel_package() {
 }
 
 glib-devel_package() {
-	depends="python3-setuptools libglib-devel>=${version}_${revision}"
+	depends="python3-packaging libglib-devel>=${version}_${revision}"
 	short_desc+=" - development files"
 	python_version=3
 	pycompile_dirs="usr/share/glib-2.0/codegen usr/share/glib-2.0/gdb"
@@ -69,6 +87,7 @@ glib-devel_package() {
 		vmove usr/bin/gdbus-codegen
 		vmove usr/bin/gtester
 		vmove usr/bin/glib-gettextize
+		vmove "usr/bin/gi-*"
 		vmove usr/share/man/man1/glib-compile-resources.1
 		vmove usr/share/man/man1/glib-gettextize.1
 		vmove usr/share/man/man1/gtester.1
@@ -79,8 +98,8 @@ glib-devel_package() {
 		for f in aclocal glib-2.0 gdb; do
 			vmove usr/share/${f}
 		done
-		if [ -d $DESTDIR/usr/share/gtk-doc ]; then
-			vmove usr/share/gtk-doc
+		if [ "$build_option_gtk_doc" ]; then
+			vmove usr/share/doc
 		fi
 	}
 }

From a9ed2e04a0bdb04929bb7dcb0b80db78b2867961 Mon Sep 17 00:00:00 2001
From: oreo639 <oreo6391@gmail.com>
Date: Thu, 21 Mar 2024 12:54:17 -0700
Subject: [PATCH 4/5] gobject-introspection: update to 1.80.0.

---
 .../patches/fix-leaks.patch                   | 46 -------------------
 srcpkgs/gobject-introspection/template        | 14 +++---
 2 files changed, 8 insertions(+), 52 deletions(-)
 delete mode 100644 srcpkgs/gobject-introspection/patches/fix-leaks.patch

diff --git a/srcpkgs/gobject-introspection/patches/fix-leaks.patch b/srcpkgs/gobject-introspection/patches/fix-leaks.patch
deleted file mode 100644
index fa23ee74578897..00000000000000
--- a/srcpkgs/gobject-introspection/patches/fix-leaks.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From bf96a92ef263820d40e233814a46932cae00db41 Mon Sep 17 00:00:00 2001
-From: Xavier Claessens <xavier.claessens@collabora.com>
-Date: Tue, 18 Jul 2023 11:07:59 -0400
-Subject: [PATCH] gdump: Fix leaked io streams
-
-This makes Meson unit test fail:
-https://github.com/mesonbuild/meson/issues/11754
----
-
-MR: https://gitlab.gnome.org/GNOME/gobject-introspection/-/merge_requests/411
-
- girepository/gdump.c | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/girepository/gdump.c b/girepository/gdump.c
-index 055a8b8c1..449b260a4 100644
---- a/girepository/gdump.c
-+++ b/girepository/gdump.c
-@@ -594,6 +594,7 @@ g_irepository_dump (const char *arg, GError **error)
-   if (output == NULL)
-     {
-       g_input_stream_close (G_INPUT_STREAM (input), NULL, NULL);
-+      g_object_unref (input);
-       return FALSE;
-     }
- 
-@@ -674,11 +675,12 @@ g_irepository_dump (const char *arg, GError **error)
-       ioerror = NULL;
-     else
-       ioerror = error;
--    if (!g_input_stream_close (G_INPUT_STREAM (in), NULL, ioerror))
--      return FALSE;
--    if (!g_output_stream_close (G_OUTPUT_STREAM (output), NULL, ioerror))
--      return FALSE;
-+    caught_error |= !g_input_stream_close (G_INPUT_STREAM (in), NULL, ioerror);
-+    caught_error |= !g_output_stream_close (G_OUTPUT_STREAM (output), NULL, ioerror);
-   }
- 
-+  g_object_unref (in);
-+  g_object_unref (output);
-+
-   return !caught_error;
- }
--- 
-GitLab
-
diff --git a/srcpkgs/gobject-introspection/template b/srcpkgs/gobject-introspection/template
index 356646ced3117f..a34e7b84d91d59 100644
--- a/srcpkgs/gobject-introspection/template
+++ b/srcpkgs/gobject-introspection/template
@@ -1,11 +1,12 @@
 # Template file for 'gobject-introspection'
+# keep in sync with gobject-introspection-bootstrap
 pkgname=gobject-introspection
-version=1.76.1
-revision=3
+version=1.80.1
+revision=1
 build_style=meson
-pycompile_dirs="usr/lib/${pkgname}/giscanner"
+pycompile_dirs="usr/lib/gobject-introspection/giscanner"
 hostmakedepends="flex pkg-config"
-# won't run tests with cairo to avoid cyclical deps
+# won't run tests with cairo to avoid cyclical deps.
 makedepends="libffi-devel libglib-devel python3-devel python3-Mako
  python3-Markdown"
 depends="libgirepository-devel python3-Mako python3-Markdown python3-setuptools"
@@ -13,8 +14,9 @@ short_desc="Introspection system for GObject-based libraries"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://wiki.gnome.org/Projects/GObjectIntrospection"
-distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=196178bf64345501dcdc4d8469b36aa6fe80489354efe71cb7cb8ab82a3738bf
+changelog="https://gitlab.gnome.org/GNOME/gobject-introspection/-/raw/main/NEWS"
+distfiles="${GNOME_SITE}/gobject-introspection/${version%.*}/gobject-introspection-${version}.tar.xz"
+checksum=a1df7c424e15bda1ab639c00e9051b9adf5cea1a9e512f8a603b53cd199bc6d8
 python_version=3
 
 if [ "$CROSS_BUILD" ]; then

From 3c783828f1f8eed9df89e497dd0d1d57d2b1948b Mon Sep 17 00:00:00 2001
From: oreo639 <oreo6391@gmail.com>
Date: Thu, 21 Mar 2024 12:59:31 -0700
Subject: [PATCH 5/5] glib-networking: update to 2.80.0.

---
 srcpkgs/glib-networking/template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/srcpkgs/glib-networking/template b/srcpkgs/glib-networking/template
index 680a064ffec5a9..7e9bcf0c9f267b 100644
--- a/srcpkgs/glib-networking/template
+++ b/srcpkgs/glib-networking/template
@@ -1,6 +1,6 @@
 # Template file for 'glib-networking'
 pkgname=glib-networking
-version=2.76.0
+version=2.80.0
 revision=1
 build_style=meson
 configure_args="-Dinstalled_tests=false -Dgnutls=enabled -Dlibproxy=enabled
@@ -14,7 +14,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="LGPL-2.1-or-later"
 homepage="https://gitlab.gnome.org/GNOME/glib-networking/"
 changelog="https://gitlab.gnome.org/GNOME/glib-networking/-/raw/master/NEWS"
-#changelog="https://gitlab.gnome.org/GNOME/glib-networking/-/raw/glib-2-76/NEWS"
+#changelog="https://gitlab.gnome.org/GNOME/glib-networking/-/raw/glib-2-80/NEWS"
 distfiles="${GNOME_SITE}/${pkgname}/${version%.*}/${pkgname}-${version}.tar.xz"
-checksum=149a05a179e629a538be25662aa324b499d7c4549c5151db5373e780a1bf1b9a
+checksum=d8f4f1aab213179ae3351617b59dab5de6bcc9e785021eee178998ebd4bb3acf
 lib32disabled=yes

  parent reply	other threads:[~2024-04-14 21:44 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-21 20:10 [PR PATCH] " oreo639
2024-03-21 20:22 ` [PR PATCH] [Updated] [WIP] " oreo639
2024-03-21 20:23 ` oreo639
2024-03-21 20:50 ` oreo639
2024-03-21 21:04 ` oreo639
2024-03-21 21:08 ` chrysos349
2024-03-21 21:16 ` oreo639
2024-03-21 21:18 ` oreo639
2024-03-21 21:24 ` [PR PATCH] [Updated] " oreo639
2024-03-21 21:31 ` oreo639
2024-03-22  0:15 ` oreo639
2024-03-22  0:48 ` oreo639
2024-03-22  7:29 ` oreo639
2024-03-22  7:58 ` oreo639
2024-03-22  7:58 ` oreo639
2024-03-22  8:00 ` oreo639
2024-03-22  8:03 ` oreo639
2024-03-22  8:19 ` oreo639
2024-03-22  8:20 ` oreo639
2024-03-22  8:20 ` oreo639
2024-03-22  8:20 ` oreo639
2024-03-22  8:22 ` oreo639
2024-03-22 23:13 ` [PR PATCH] [Updated] " oreo639
2024-03-23  0:09 ` oreo639
2024-03-23  0:12 ` [PR PATCH] [Updated] " oreo639
2024-03-23  0:14 ` oreo639
2024-03-24  9:14 ` oreo639
2024-04-14  8:38 ` [PR PATCH] [Updated] " oreo639
2024-04-14 21:44 ` oreo639 [this message]
2024-04-17  2:23 ` oreo639
2024-04-17  2:32 ` oreo639
2024-04-17  2:37 ` oreo639
2024-04-17  2:40 ` [PR PATCH] [Updated] " oreo639
2024-04-17  2:44 ` oreo639
2024-04-17  2:46 ` oreo639
2024-04-17  2:53 ` [PR PATCH] [Updated] " oreo639
2024-04-17  2:53 ` oreo639
2024-04-17  3:21 ` oreo639
2024-04-17  3:36 ` oreo639
2024-04-17  3:47 ` [PR PATCH] [Updated] " oreo639
2024-04-17  3:49 ` oreo639
2024-04-17 23:36 ` oreo639
2024-04-18  0:28 ` oreo639
2024-04-18  3:02 ` oreo639
2024-04-18  3:25 ` [PR PATCH] [Merged]: " oreo639

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240414214406.BF546214E5@inbox.vuxu.org \
    --to=oreo639@users.noreply.github.com \
    --cc=ml@inbox.vuxu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).