changeset 6916:9f739a6fed4e

glib: Update to 2.78.0 * src/glib.mk: Update version and checksum. Depend on PCRE2 instead of PCRE. Adapt build rules to new build system using Meson. * src/glib-1-fixes.patch, glib-2-fixes.patch: Remove patches that have been applied upstream. * dist-files.mk: Remove deleted patches from list.
author Markus Mützel <markus.muetzel@gmx.de>
date Sat, 07 Oct 2023 17:27:11 +0200
parents 68202902c888
children fb442ce4f70d
files dist-files.mk src/glib-1-fixes.patch src/glib-2-fixes.patch src/glib.mk
diffstat 4 files changed, 35 insertions(+), 727 deletions(-) [+]
line wrap: on
line diff
--- a/dist-files.mk	Sat Oct 07 17:23:58 2023 +0200
+++ b/dist-files.mk	Sat Oct 07 17:27:11 2023 +0200
@@ -140,8 +140,6 @@
   gl2ps.mk \
   glew-test.c \
   glew.mk \
-  glib-1-fixes.patch \
-  glib-2-fixes.patch \
   glib.mk \
   glibmm.mk \
   glpk-1-fixes.patch \
--- a/src/glib-1-fixes.patch	Sat Oct 07 17:23:58 2023 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,634 +0,0 @@
-This file is part of MXE. See LICENSE.md for licensing information.
-
-Contains ad hoc patches for cross building.
-
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Mark Brand <mabrand@mabrand.nl>
-Date: Thu, 23 Sep 2010 21:42:46 +0200
-Subject: [PATCH 1/9] fix tool paths
-
-
-diff --git a/glib-2.0.pc.in b/glib-2.0.pc.in
-index 1111111..2222222 100644
---- a/glib-2.0.pc.in
-+++ b/glib-2.0.pc.in
-@@ -3,9 +3,9 @@ exec_prefix=@exec_prefix@
- libdir=@libdir@
- includedir=@includedir@
- 
--glib_genmarshal=glib-genmarshal
--gobject_query=gobject-query
--glib_mkenums=glib-mkenums
-+glib_genmarshal=@bindir@/glib-genmarshal
-+gobject_query=@bindir@/gobject-query
-+glib_mkenums=@bindir@/glib-mkenums
- 
- Name: GLib
- Description: C Utility Library
-
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Hans Petter Jansson <hpj@cl.no>
-Date: Fri, 15 Jun 2012 15:25:01 +0200
-Subject: [PATCH 2/9] Avoid DllMain symbol conflict when linking statically
-
-Adjusted by Boris Nagaev on 29-Jan-2017 to fix
-https://gist.github.com/starius/f4fc85939352cb50122ba29e0f5b140d
-when updating to glib-2.50.2.
-
-diff --git a/gio/giomodule.c b/gio/giomodule.c
-index 1111111..2222222 100644
---- a/gio/giomodule.c
-+++ b/gio/giomodule.c
-@@ -928,14 +928,12 @@ extern GType g_cocoa_notification_backend_get_type (void);
- 
- static HMODULE gio_dll = NULL;
- 
--#ifdef DLL_EXPORT
--
--BOOL WINAPI DllMain (HINSTANCE hinstDLL,
-+BOOL WINAPI gio_DllMain (HINSTANCE hinstDLL,
-                      DWORD     fdwReason,
-                      LPVOID    lpvReserved);
- 
- BOOL WINAPI
--DllMain (HINSTANCE hinstDLL,
-+gio_DllMain (HINSTANCE hinstDLL,
- 	 DWORD     fdwReason,
- 	 LPVOID    lpvReserved)
- {
-@@ -945,8 +943,6 @@ DllMain (HINSTANCE hinstDLL,
-   return TRUE;
- }
- 
--#endif
--
- void *
- _g_io_win32_get_module (void)
- {
-diff --git a/glib/glib-init.c b/glib/glib-init.c
-index 1111111..2222222 100644
---- a/glib/glib-init.c
-+++ b/glib/glib-init.c
-@@ -245,14 +245,14 @@ glib_init (void)
- 
- #if defined (G_OS_WIN32)
- 
--BOOL WINAPI DllMain (HINSTANCE hinstDLL,
-+BOOL WINAPI glib_DllMain (HINSTANCE hinstDLL,
-                      DWORD     fdwReason,
-                      LPVOID    lpvReserved);
- 
- HMODULE glib_dll;
- 
- BOOL WINAPI
--DllMain (HINSTANCE hinstDLL,
-+glib_DllMain (HINSTANCE hinstDLL,
-          DWORD     fdwReason,
-          LPVOID    lpvReserved)
- {
-diff --git a/gobject/gtype.c b/gobject/gtype.c
-index 1111111..2222222 100644
---- a/gobject/gtype.c
-+++ b/gobject/gtype.c
-@@ -4450,7 +4450,7 @@ gobject_init (void)
-   _g_signal_init ();
- }
- 
--#if defined (G_OS_WIN32)
-+#if 0
- 
- BOOL WINAPI DllMain (HINSTANCE hinstDLL,
-                      DWORD     fdwReason,
-
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Hans Petter Jansson <hpj@cl.no>
-Date: Fri, 15 Jun 2012 15:27:22 +0200
-Subject: [PATCH 3/9] Allow building without inotify support
-
-
-diff --git a/configure.ac b/configure.ac
-index 1111111..2222222 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1599,10 +1599,16 @@ dnl *****************************
- dnl ** Check for inotify (GIO) **
- dnl *****************************
- inotify_support=no
-+ AC_ARG_ENABLE(inotify,
-+               AC_HELP_STRING([--disable-inotify],
-+                              [build without inotify support]))
-+
-+ if test "x$enable_inotify" != "xno"; then
- AC_CHECK_HEADERS([sys/inotify.h],
- [
-   AC_CHECK_FUNCS(inotify_init1, [inotify_support=yes], [inotify_support=no])
- ])
-+fi
- 
- AM_CONDITIONAL(HAVE_INOTIFY, [test "$inotify_support" = "yes"])
- 
-
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Hans Petter Jansson <hpj@cl.no>
-Date: Fri, 15 Jun 2012 15:28:14 +0200
-Subject: [PATCH 4/9] Make sure STDC_HEADERS is set for AC_CHECK_ALIGNOF.
- Backported from upstream
-
-
-diff --git a/configure.ac b/configure.ac
-index 1111111..2222222 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -511,6 +511,8 @@ LT_INIT([disable-static win32-dll])
- dnl when using libtool 2.x create libtool early, because it's used in configure
- m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
- 
-+# Make sure STDC_HEADERS is set for AC_CHECK_ALIGNOF
-+AS_IF([false], [AC_CHECK_HEADER([stdint.h])])
- 
- AS_IF([test "$glib_native_win32" = "yes"], [
-   if test x$enable_static = xyes -a x$enable_shared = xyes; then
-
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Hans Petter Jansson <hpj@cl.no>
-Date: Fri, 15 Jun 2012 15:29:06 +0200
-Subject: [PATCH 5/9] Link with dnsapi
-
-
-diff --git a/gio-2.0.pc.in b/gio-2.0.pc.in
-index 1111111..2222222 100644
---- a/gio-2.0.pc.in
-+++ b/gio-2.0.pc.in
-@@ -13,6 +13,6 @@ Description: glib I/O library
- Version: @VERSION@
- Requires: glib-2.0 gobject-2.0
- Requires.private: gmodule-no-export-2.0
--Libs: -L${libdir} -lgio-2.0
-+Libs: -L${libdir} -lgio-2.0 -ldnsapi -liphlpapi
- Libs.private: @ZLIB_LIBS@ @NETWORK_LIBS@ @SELINUX_LIBS@ @COCOA_LIBS@ @CARBON_LIBS@ @LIBMOUNT_LIBS@
- Cflags:
-
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Hans Petter Jansson <hpj@cl.no>
-Date: Fri, 15 Jun 2012 15:29:38 +0200
-Subject: [PATCH 6/9] Ensure globals are initialized even when DllMain is not
- being run
-
-
-diff --git a/glib/gmain.c b/glib/gmain.c
-index 1111111..2222222 100644
---- a/glib/gmain.c
-+++ b/glib/gmain.c
-@@ -2688,12 +2688,15 @@ g_get_real_time (void)
-  * So for now we calculate (usec_per_sec / ticks_per_sec) and use floating point
-  */
- static gdouble g_monotonic_usec_per_tick = 0;
-+static gboolean g_win32_clock_is_initialized;
- 
- void
- g_clock_win32_init (void)
- {
-   LARGE_INTEGER freq;
- 
-+  g_win32_clock_is_initialized = TRUE;
-+
-   if (!QueryPerformanceFrequency (&freq) || freq.QuadPart == 0)
-     {
-       /* The documentation says that this should never happen */
-@@ -2707,6 +2709,9 @@ g_get_monotonic_time (void)
- gint64
- g_get_monotonic_time (void)
- {
-+  if (!g_win32_clock_is_initialized)
-+    g_clock_win32_init ();
-+
-   if (G_LIKELY (g_monotonic_usec_per_tick != 0))
-     {
-       LARGE_INTEGER ticks;
-diff --git a/glib/gthread-win32.c b/glib/gthread-win32.c
-index 1111111..2222222 100644
---- a/glib/gthread-win32.c
-+++ b/glib/gthread-win32.c
-@@ -60,6 +60,10 @@ g_thread_abort (gint         status,
-            strerror (status), function);
-   g_abort ();
- }
-+/* Needed for static builds where DllMain initializer doesn't get called */
-+static gboolean g_threads_is_initialized;
-+G_GNUC_INTERNAL void g_thread_win32_init (void);
-+
- 
- /* Starting with Vista and Windows 2008, we have access to the
-  * CONDITION_VARIABLE and SRWLock primatives on Windows, which are
-@@ -79,6 +83,9 @@ g_thread_abort (gint         status,
- void
- g_mutex_init (GMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   InitializeSRWLock ((gpointer) mutex);
- }
- 
-@@ -90,18 +97,27 @@ g_mutex_clear (GMutex *mutex)
- void
- g_mutex_lock (GMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   AcquireSRWLockExclusive ((gpointer) mutex);
- }
- 
- gboolean
- g_mutex_trylock (GMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   return TryAcquireSRWLockExclusive ((gpointer) mutex);
- }
- 
- void
- g_mutex_unlock (GMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   ReleaseSRWLockExclusive ((gpointer) mutex);
- }
- 
-@@ -112,6 +128,9 @@ g_rec_mutex_impl_new (void)
- {
-   CRITICAL_SECTION *cs;
- 
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   cs = g_slice_new (CRITICAL_SECTION);
-   InitializeCriticalSection (cs);
- 
-@@ -122,6 +141,10 @@ static void
- g_rec_mutex_impl_free (CRITICAL_SECTION *cs)
- {
-   DeleteCriticalSection (cs);
-+
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_slice_free (CRITICAL_SECTION, cs);
- }
- 
-@@ -130,6 +153,9 @@ g_rec_mutex_get_impl (GRecMutex *mutex)
- {
-   CRITICAL_SECTION *impl = mutex->p;
- 
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   if G_UNLIKELY (mutex->p == NULL)
-     {
-       impl = g_rec_mutex_impl_new ();
-@@ -144,30 +170,45 @@ g_rec_mutex_get_impl (GRecMutex *mutex)
- void
- g_rec_mutex_init (GRecMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   mutex->p = g_rec_mutex_impl_new ();
- }
- 
- void
- g_rec_mutex_clear (GRecMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_rec_mutex_impl_free (mutex->p);
- }
- 
- void
- g_rec_mutex_lock (GRecMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   EnterCriticalSection (g_rec_mutex_get_impl (mutex));
- }
- 
- void
- g_rec_mutex_unlock (GRecMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   LeaveCriticalSection (mutex->p);
- }
- 
- gboolean
- g_rec_mutex_trylock (GRecMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   return TryEnterCriticalSection (g_rec_mutex_get_impl (mutex));
- }
- 
-@@ -176,6 +217,9 @@ g_rec_mutex_trylock (GRecMutex *mutex)
- void
- g_rw_lock_init (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   InitializeSRWLock ((gpointer) lock);
- }
- 
-@@ -187,36 +231,54 @@ g_rw_lock_clear (GRWLock *lock)
- void
- g_rw_lock_writer_lock (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   AcquireSRWLockExclusive ((gpointer) lock);
- }
- 
- gboolean
- g_rw_lock_writer_trylock (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   return TryAcquireSRWLockExclusive ((gpointer) lock);
- }
- 
- void
- g_rw_lock_writer_unlock (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   ReleaseSRWLockExclusive ((gpointer) lock);
- }
- 
- void
- g_rw_lock_reader_lock (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   AcquireSRWLockShared ((gpointer) lock);
- }
- 
- gboolean
- g_rw_lock_reader_trylock (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   return TryAcquireSRWLockShared ((gpointer) lock);
- }
- 
- void
- g_rw_lock_reader_unlock (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   ReleaseSRWLockShared ((gpointer) lock);
- }
- 
-@@ -224,6 +286,9 @@ g_rw_lock_reader_unlock (GRWLock *lock)
- void
- g_cond_init (GCond *cond)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   InitializeConditionVariable ((gpointer) cond);
- }
- 
-@@ -235,12 +300,18 @@ g_cond_clear (GCond *cond)
- void
- g_cond_signal (GCond *cond)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   WakeConditionVariable ((gpointer) cond);
- }
- 
- void
- g_cond_broadcast (GCond *cond)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   WakeAllConditionVariable ((gpointer) cond);
- }
- 
-@@ -248,6 +319,9 @@ void
- g_cond_wait (GCond  *cond,
-              GMutex *entered_mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   SleepConditionVariableSRW ((gpointer) cond, (gpointer) entered_mutex, INFINITE, 0);
- }
- 
-@@ -260,6 +334,9 @@ g_cond_wait_until (GCond  *cond,
-   DWORD span_millis;
-   gboolean signalled;
- 
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   start_time = g_get_monotonic_time ();
-   do
-     {
-@@ -311,6 +388,9 @@ g_private_get_impl (GPrivate *key)
- 
-   if G_UNLIKELY (impl == 0)
-     {
-+      if (!g_threads_is_initialized)
-+        g_thread_win32_init ();
-+
-       EnterCriticalSection (&g_private_lock);
-       impl = (DWORD) key->p;
-       if (impl == 0)
-@@ -404,6 +484,9 @@ g_system_thread_free (GRealThread *thread)
- {
-   GThreadWin32 *wt = (GThreadWin32 *) thread;
- 
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   win32_check_for_error (CloseHandle (wt->handle));
-   g_slice_free (GThreadWin32, wt);
- }
-@@ -411,6 +494,9 @@ g_system_thread_free (GRealThread *thread)
- void
- g_system_thread_exit (void)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   _endthreadex (0);
- }
- 
-@@ -419,6 +505,9 @@ g_thread_win32_proxy (gpointer data)
- {
-   GThreadWin32 *self = data;
- 
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   self->proxy (self);
- 
-   g_system_thread_exit ();
-@@ -436,6 +525,9 @@ g_system_thread_new (GThreadFunc   func,
-   GThreadWin32 *thread;
-   guint ignore;
- 
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   thread = g_slice_new0 (GThreadWin32);
-   thread->proxy = func;
- 
-@@ -465,6 +557,9 @@ g_system_thread_wait (GRealThread *thread)
- {
-   GThreadWin32 *wt = (GThreadWin32 *) thread;
- 
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   win32_check_for_error (WAIT_FAILED != WaitForSingleObject (wt->handle, INFINITE));
- }
- 
-@@ -536,6 +631,8 @@ g_system_thread_set_name (const gchar *name)
- void
- g_thread_win32_init (void)
- {
-+  g_threads_is_initialized = TRUE;
-+
-   InitializeCriticalSection (&g_private_lock);
- 
- #ifndef _MSC_VER
-
-
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Gerardo Ballabio <gerardo.ballabio@gmail.com>
-Date: Sun, 16 Aug 2015 13:18:24 +0200
-Subject: [PATCH 7/9] Remove an annoying runtime warning
-
-that pops up when using GtkApplication in Gtk+ 3 programs.
-
-diff --git a/gio/gdbusaddress.c b/gio/gdbusaddress.c
-index 1111111..2222222 100644
---- a/gio/gdbusaddress.c
-+++ b/gio/gdbusaddress.c
-@@ -1387,6 +1387,7 @@ __declspec(dllexport) void CALLBACK g_win32_run_session_bus (HWND hwnd, HINSTANC
- __declspec(dllexport) void CALLBACK
- g_win32_run_session_bus (HWND hwnd, HINSTANCE hinst, char *cmdline, int nCmdShow)
- {
-+  /*
-   GDBusDaemon *daemon;
-   GMainLoop *loop;
-   const char *address;
-@@ -1418,6 +1419,7 @@ g_win32_run_session_bus (HWND hwnd, HINSTANCE hinst, char *cmdline, int nCmdShow
- 
-   g_main_loop_unref (loop);
-   g_object_unref (daemon);
-+  */
- }
- 
- static gchar *
-
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: aquiles2k <aj@elane2k.com>
-Date: Wed, 6 Apr 2016 22:39:53 +0300
-Subject: [PATCH 8/9] fix error "won't overwrite defined macro" on OSX
-
-See https://github.com/mxe/mxe/issues/1281
-
-diff --git a/m4macros/glib-gettext.m4 b/m4macros/glib-gettext.m4
-index 1111111..2222222 100644
---- a/m4macros/glib-gettext.m4
-+++ b/m4macros/glib-gettext.m4
-@@ -36,8 +36,8 @@ dnl We go to great lengths to make sure that aclocal won't
- dnl try to pull in the installed version of these macros
- dnl when running aclocal in the glib directory.
- dnl
--m4_copy([AC_DEFUN],[glib_DEFUN])
--m4_copy([AC_REQUIRE],[glib_REQUIRE])
-+m4_copy_force([AC_DEFUN],[glib_DEFUN])
-+m4_copy_force([AC_REQUIRE],[glib_REQUIRE])
- dnl
- dnl At the end, if we're not within glib, we'll define the public
- dnl definitions in terms of our private definitions.
-
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Ernestas Kulik <ekulik@redhat.com>
-Date: Tue, 29 Jan 2019 09:50:46 +0100
-Subject: [PATCH 10/10] gdbus: Avoid printing null strings
-
-This mostly affects the 2.56 branch, but, given that GCC 9 is being
-stricter about passing null string pointers to printf-like functions, it
-might make sense to proactively fix such calls.
-
-gdbusauth.c: In function '_g_dbus_auth_run_server':
-gdbusauth.c:1302:11: error: '%s' directive argument is null
-[-Werror=format-overflow=]
- 1302 |           debug_print ("SERVER: WaitingForBegin, read '%s'",
- line);
-       |
-
-gdbusmessage.c: In function ‘g_dbus_message_to_blob’:
-gdbusmessage.c:2730:30: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
- 2730 |       tupled_signature_str = g_strdup_printf ("(%s)", signature_str);
-      |
-
-diff --git a/gio/gdbusauth.c b/gio/gdbusauth.c
-index 1111111..2222222 100644
---- a/gio/gdbusauth.c
-+++ b/gio/gdbusauth.c
-@@ -1295,9 +1295,9 @@ _g_dbus_auth_run_server (GDBusAuth              *auth,
-                                                     &line_length,
-                                                     cancellable,
-                                                     error);
--          debug_print ("SERVER: WaitingForBegin, read '%s'", line);
-           if (line == NULL)
-             goto out;
-+          debug_print ("SERVER: WaitingForBegin, read '%s'", line);
-           if (g_strcmp0 (line, "BEGIN") == 0)
-             {
-               /* YAY, done! */
-diff --git a/gio/gdbusmessage.c b/gio/gdbusmessage.c
-index 1111111..2222222 100644
---- a/gio/gdbusmessage.c
-+++ b/gio/gdbusmessage.c
-@@ -2695,7 +2695,6 @@ g_dbus_message_to_blob (GDBusMessage          *message,
-   if (message->body != NULL)
-     {
-       gchar *tupled_signature_str;
--      tupled_signature_str = g_strdup_printf ("(%s)", signature_str);
-       if (signature == NULL)
-         {
-           g_set_error (error,
-@@ -2703,10 +2702,10 @@ g_dbus_message_to_blob (GDBusMessage          *message,
-                        G_IO_ERROR_INVALID_ARGUMENT,
-                        _("Message body has signature “%s” but there is no signature header"),
-                        signature_str);
--          g_free (tupled_signature_str);
-           goto out;
-         }
--      else if (g_strcmp0 (tupled_signature_str, g_variant_get_type_string (message->body)) != 0)
-+      tupled_signature_str = g_strdup_printf ("(%s)", signature_str);
-+      if (g_strcmp0 (tupled_signature_str, g_variant_get_type_string (message->body)) != 0)
-         {
-           g_set_error (error,
-                        G_IO_ERROR,
--- a/src/glib-2-fixes.patch	Sat Oct 07 17:23:58 2023 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-See: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1428
-
---- a/glib/gtypes.h	2016-10-22 07:21:52.000000000 +0200
-+++ b/glib/gtypes.h	2020-05-17 11:13:49.369639688 +0200
-@@ -522,7 +522,7 @@
- #    else /* !GLIB_STATIC_COMPILATION */
- #      ifdef GLIB_COMPILATION
- #        ifdef DLL_EXPORT
--#          define GLIB_VAR __declspec(dllexport)
-+#          define GLIB_VAR extern __declspec(dllexport)
- #        else /* !DLL_EXPORT */
- #          define GLIB_VAR extern
- #        endif /* !DLL_EXPORT */
---- a/gobject/gparamspecs.h	2016-10-22 07:22:21.000000000 +0200
-+++ b/gobject/gparamspecs.h	2020-05-17 11:16:37.803281391 +0200
-@@ -1144,7 +1144,7 @@
- #    else /* !GOBJECT_STATIC_COMPILATION */
- #      ifdef GOBJECT_COMPILATION
- #        ifdef DLL_EXPORT
--#          define GOBJECT_VAR __declspec(dllexport)
-+#          define GOBJECT_VAR extern __declspec(dllexport)
- #        else /* !DLL_EXPORT */
- #          define GOBJECT_VAR extern
- #        endif /* !DLL_EXPORT */
--- a/src/glib.mk	Sat Oct 07 17:23:58 2023 +0200
+++ b/src/glib.mk	Sat Oct 07 17:27:11 2023 +0200
@@ -3,12 +3,12 @@
 
 PKG             := glib
 $(PKG)_IGNORE   :=
-$(PKG)_VERSION  := 2.58.0
-$(PKG)_CHECKSUM := c00e433c56e0ba3541abc5222aeca4136de10fb8
+$(PKG)_VERSION  := 2.78.0
+$(PKG)_CHECKSUM := 664e2498cffb55016abfc3a4a0158ee2586d05d1
 $(PKG)_SUBDIR   := glib-$($(PKG)_VERSION)
 $(PKG)_FILE     := glib-$($(PKG)_VERSION).tar.xz
 $(PKG)_URL      := http://ftp.gnome.org/pub/gnome/sources/glib/$(call SHORT_PKG_VERSION,$(PKG))/$($(PKG)_FILE)
-$(PKG)_DEPS     := gettext pcre libiconv zlib libffi dbus
+$(PKG)_DEPS     := gettext pcre2 libiconv zlib libffi dbus build-meson
 
 define $(PKG)_UPDATE
     $(WGET) -q -O- 'https://github.com/GNOME/glib/tags' | \
@@ -17,69 +17,37 @@
     head -1
 endef
 
-define $(PKG)_SYMLINK
-    $(LN_SF) `which glib-genmarshal`        '$(HOST_BINDIR)'
-    $(LN_SF) `which glib-compile-schemas`   '$(HOST_BINDIR)'
-    $(LN_SF) `which glib-compile-resources` '$(HOST_BINDIR)'
+# FIXME: Should this be defined in the top-level Makefile?
+ifeq ($(MXE_NATIVE_BUILD),yes)
+  MESON_TOOLCHAIN_FILE := $(HOST_PREFIX)/share/meson/native/mxe-conf.ini
+  $(PKG)_MESON_TOOLCHAIN_FILE := --native-file='$(MESON_TOOLCHAIN_FILE)'
+else
+  MESON_TOOLCHAIN_FILE := $(HOST_PREFIX)/share/meson/cross/mxe-conf.ini
+  $(PKG)_MESON_TOOLCHAIN_FILE := --cross-file='$(MESON_TOOLCHAIN_FILE)'
+endif
+
+ifeq ($(BUILD_SHARED),yes)
+  $(PKG)_MESON_CONFIG_FLAGS += -Ddefault_library=shared
+else
+  $(PKG)_MESON_CONFIG_FLAGS += -Ddefault_library=static
+endif
+
+define $(PKG)_BUILD
+    rm -f '$(HOST_BINDIR)/glib-*'
+
+    PKG_CONFIG='$(MXE_PKG_CONFIG)' \
+    PKG_CONFIG_PATH='$(PKG_CONFIG_PATH)' \
+    meson setup --errorlogs \
+      $($(PKG)_MESON_TOOLCHAIN_FILE) \
+      --wrap-mode=nodownload \
+      --prefix='$(HOST_PREFIX)' \
+      -Dlibelf=disabled \
+      -Dtests=false \
+      -Dforce_posix_threads=true \
+      $($(PKG)_MESON_CONFIG_FLAGS) \
+       $(1)/.build $(1)
+
+    ninja -C '$(1)/.build' -j '$(JOBS)'
+    ninja -C '$(1)/.build' -j '$(JOBS)' install
 endef
 
-ifeq ($(MXE_NATIVE_MINGW_BUILD),yes)
-define $(PKG)_BUILD
-    cd $(1) && NOCONFIGURE=true ./autogen.sh
-    cd '$(1)' && PKG_CONFIG_PATH='$(HOST_LIBDIR)/pkgconfig' ./configure \
-        $(HOST_AND_BUILD_CONFIGURE_OPTIONS) \
-        $(ENABLE_SHARED_OR_STATIC) \
-        --prefix='$(HOST_PREFIX)' \
-        --with-threads=win32 \
-        --enable-regex \
-        --disable-threads \
-        --disable-selinux \
-        --disable-inotify \
-        --disable-fam \
-        --disable-xattr \
-        --disable-dtrace \
-        --disable-libmount \
-        --with-libiconv=gnu \
-        --with-pcre=internal \
-        --disable-compile-warnings \
-        && $(CONFIGURE_POST_HOOK)
-
-    $(SED) -i 's,#define G_ATOMIC.*,,' '$(1)/config.h'
-    $(MAKE) -C '$(1)/glib'    -j '$(JOBS)'
-    $(MAKE) -C '$(1)/gthread' -j '$(JOBS)'
-    $(MAKE) -C '$(1)/gmodule' -j '$(JOBS)'
-    $(MAKE) -C '$(1)/gobject' -j '$(JOBS)' lib_LTLIBRARIES= install-exec
-    $(MAKE) -C '$(1)/gio/xdgmime'     -j '$(JOBS)'
-    $(MAKE) -C '$(1)/gio'     -j '$(JOBS)' glib-compile-schemas
-    $(MAKE) -C '$(1)/gio'     -j '$(JOBS)' glib-compile-resources
-    $(INSTALL) -m755 '$(1)/gio/glib-compile-schemas' '$(HOST_BINDIR)/'
-    $(INSTALL) -m755 '$(1)/gio/glib-compile-resources' '$(HOST_BINDIR)/'
-endef
-else
-define $(PKG)_BUILD
-    cd '$(1)' && NOCONFIGURE=true ./autogen.sh
-    rm -f '$(HOST_BINDIR)/glib-*'
-    # cross build
-    cd '$(1)' && ./configure \
-        $(HOST_AND_BUILD_CONFIGURE_OPTIONS) \
-        $(ENABLE_SHARED_OR_STATIC) \
-        $(CONFIGURE_CPPFLAGS) $(CONFIGURE_LDFLAGS) \
-        --prefix='$(HOST_PREFIX)' \
-        --with-threads=win32 \
-        --with-pcre=system \
-        --with-libiconv=gnu \
-        --disable-inotify \
-        --disable-compile-warnings \
-        PKG_CONFIG='$(MXE_PKG_CONFIG)' \
-        PKG_CONFIG_PATH='$(PKG_CONFIG_PATH)' 
-
-    $(MAKE) -C '$(1)/glib'    -j '$(JOBS)' install sbin_PROGRAMS= noinst_PROGRAMS=
-    $(MAKE) -C '$(1)/gmodule' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS=
-    $(MAKE) -C '$(1)/gthread' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS=
-    $(MAKE) -C '$(1)/gobject' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS=
-    $(MAKE) -C '$(1)/gio'     -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= MISC_STUFF=
-    $(MAKE) -C '$(1)'         -j '$(JOBS)' install-pkgconfigDATA
-    $(MAKE) -C '$(1)/m4macros' install
-endef
-
-endif