diff --git a/package/libglib2/0001-meson.build-add-girdir-to-gio-2.0.pc-and-glib-2.0.pc.patch b/package/libglib2/0001-meson.build-add-girdir-to-gio-2.0.pc-and-glib-2.0.pc.patch
index fb99057242..fa9c1754d2 100644
--- a/package/libglib2/0001-meson.build-add-girdir-to-gio-2.0.pc-and-glib-2.0.pc.patch
+++ b/package/libglib2/0001-meson.build-add-girdir-to-gio-2.0.pc-and-glib-2.0.pc.patch
@@ -24,26 +24,26 @@ diff --git a/gio/meson.build b/gio/meson.build
 index 29473d26b..112d4ada9 100644
 --- a/gio/meson.build
 +++ b/gio/meson.build
-@@ -841,6 +841,7 @@ pkg.generate(libgio,
-   variables : ['datadir=' + join_paths('${prefix}', get_option('datadir')),
-                'schemasdir=' + join_paths('${datadir}', schemas_subdir),
-                'bindir=' + join_paths('${prefix}', get_option('bindir')),
-+               'girdir=' + join_paths('${libdir}', '../share/gir-1.0'),
-                'giomoduledir=' + pkgconfig_giomodulesdir,
-                'gio=' + join_paths('${bindir}', 'gio'),
-                'gio_querymodules=' + join_paths('${bindir}', 'gio-querymodules'),
+@@ -883,6 +883,7 @@ pkg.generate(libgio,
+     'schemasdir=' + '${datadir}' / schemas_subdir,
+     'dtdsdir=' + '${datadir}' / dtds_subdir,
+     'bindir=' + '${prefix}' / get_option('bindir'),
++    'girdir=' + join_paths('${libdir}', '../share/gir-1.0'),
+     'giomoduledir=' + pkgconfig_giomodulesdir,
+     'gio=' + '${bindir}' / 'gio',
+     'gio_querymodules=' + pkgconfig_multiarch_bindir / 'gio-querymodules',
 diff --git a/glib/meson.build b/glib/meson.build
 index f78f32969..6c5486699 100644
 --- a/glib/meson.build
 +++ b/glib/meson.build
-@@ -384,6 +384,7 @@ pkg.generate(libglib,
-   subdirs : ['glib-2.0'],
-   extra_cflags : ['-I${libdir}/glib-2.0/include'] + win32_cflags,
-   variables : ['bindir=' + join_paths('${prefix}', get_option('bindir')),
-+               'girdir=' + join_paths('${libdir}', '../share/gir-1.0'),
-                'glib_genmarshal=' + join_paths('${bindir}', 'glib-genmarshal'),
-                'gobject_query=' + join_paths('${bindir}', 'gobject-query'),
-                'glib_mkenums=' + join_paths('${bindir}', 'glib-mkenums')],
+@@ -447,6 +447,7 @@ pkg.generate(libglib,
+   variables : [
+     'bindir=' + '${prefix}' / get_option('bindir'),
+     'datadir=' + '${prefix}' / get_option('datadir'),
++    'girdir=' + join_paths('${libdir}', '../share/gir-1.0'),
+     'glib_genmarshal=' + '${bindir}' / 'glib-genmarshal',
+     'gobject_query=' + '${bindir}' / 'gobject-query',
+     'glib_mkenums=' + '${bindir}' / 'glib-mkenums',
 -- 
 2.33.0
 
diff --git a/package/libglib2/0002-Fix-error-format-in-gio-gunixconnection.c-part-2.patch b/package/libglib2/0002-Fix-error-format-in-gio-gunixconnection.c-part-2.patch
deleted file mode 100644
index 6075bacb06..0000000000
--- a/package/libglib2/0002-Fix-error-format-in-gio-gunixconnection.c-part-2.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 4ae8606b6f80f9764e1f0a82cea7e23c8af487ae Mon Sep 17 00:00:00 2001
-From: James Knight <james.d.knight@live.com>
-Date: Thu, 20 Apr 2023 23:41:32 -0400
-Subject: [PATCH] Fix error format in gio/gunixconnection.c (part 2)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Update a series of error messages to use `g_set_error_literal` instead
-of `g_set_error`. This should prevent `format-nonliteral` compiler
-issues when `-Werror` is configured:
-
-    ../gio/gunixconnection.c: In function ‘g_unix_connection_receive_fd’:
-    ../gio/gunixconnection.c:183:9: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
-      183 |         nscm);
-          |         ^~~~
-    ../gio/gunixconnection.c:217:20: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
-      217 |                    nfd);
-          |                    ^~~
-    ../gio/gunixconnection.c: In function ‘g_unix_connection_receive_credentials’:
-    ../gio/gunixconnection.c:601:24: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
-      601 |                        nscm);
-          |                        ^~~~
-
-This is similar to a previous change [1] made to `gunixconnection.c`.
-
-[1]: 44b3d5d80445234041f6c59feb89645f7102c3a4
-
-Signed-off-by: James Knight <james.d.knight@live.com>
-Upstream: backport from upstream https://gitlab.gnome.org/GNOME/glib/-/commit/4ae8606b6f80f9764e1f0a82cea7e23c8af487ae
----
- gio/gunixconnection.c | 31 ++++++++++++++-----------------
- 1 file changed, 14 insertions(+), 17 deletions(-)
-
-diff --git a/gio/gunixconnection.c b/gio/gunixconnection.c
-index b3f2b1c04b0abdf7136918585ae4cea8970a88bb..c012fcbfe00b69e9da609c7b626229db98e931ac 100644
---- a/gio/gunixconnection.c
-+++ b/gio/gunixconnection.c
-@@ -176,11 +176,10 @@ g_unix_connection_receive_fd (GUnixConnection  *connection,
-     {
-       gint i;
- 
--      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
--        ngettext("Expecting 1 control message, got %d",
--                 "Expecting 1 control message, got %d",
--                 nscm),
--        nscm);
-+      g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
-+                           ngettext ("Expecting 1 control message, got %d",
-+                                     "Expecting 1 control message, got %d",
-+                                     nscm));
- 
-       for (i = 0; i < nscm; i++)
-         g_object_unref (scms[i]);
-@@ -210,11 +209,10 @@ g_unix_connection_receive_fd (GUnixConnection  *connection,
-     {
-       gint i;
- 
--      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
--                   ngettext("Expecting one fd, but got %d\n",
--                            "Expecting one fd, but got %d\n",
--                            nfd),
--                   nfd);
-+      g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
-+                           ngettext ("Expecting one fd, but got %d\n",
-+                                     "Expecting one fd, but got %d\n",
-+                                     nfd));
- 
-       for (i = 0; i < nfd; i++)
-         close (fds[i]);
-@@ -592,13 +590,12 @@ g_unix_connection_receive_credentials (GUnixConnection      *connection,
-     {
-       if (nscm != 1)
-         {
--          g_set_error (error,
--                       G_IO_ERROR,
--                       G_IO_ERROR_FAILED,
--                       ngettext("Expecting 1 control message, got %d",
--                                "Expecting 1 control message, got %d",
--                                nscm),
--                       nscm);
-+          g_set_error_literal (error,
-+                               G_IO_ERROR,
-+                               G_IO_ERROR_FAILED,
-+                               ngettext ("Expecting 1 control message, got %d",
-+                                         "Expecting 1 control message, got %d",
-+                                         nscm));
-           goto out;
-         }
- 
--- 
-2.39.1.windows.1
-
diff --git a/package/libglib2/0003-meson-wrap-html-documentation-generation-with-gtk_do.patch b/package/libglib2/0003-meson-wrap-html-documentation-generation-with-gtk_do.patch
deleted file mode 100644
index 0fa15ad164..0000000000
--- a/package/libglib2/0003-meson-wrap-html-documentation-generation-with-gtk_do.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 0fa17ec3c7152cf0e1cbf965acf1426ac203bb1d Mon Sep 17 00:00:00 2001
-From: James Knight <james.d.knight@live.com>
-Date: Thu, 27 Apr 2023 20:23:30 -0400
-Subject: [PATCH] meson: wrap html documentation generation with gtk_doc option
-
-By default, if a host environment has the `rst2html5` application
-available, builds will automatically perform some HTML documentation
-generation from the documentation's glib reference content (e.g.
-creating `gvariant-specification-1.0.html`). The creation of this
-documentation is not required for all use cases.
-
-This commit tweaks the building of the HTML-based GLIB specification
-document to be guarded by `gtk_doc`.
-
-Signed-off-by: James Knight <james.d.knight@live.com>
-Upstream: https://gitlab.gnome.org/GNOME/glib/-/commit/0fa17ec3c7152cf0e1cbf965acf1426ac203bb1d
-[yann.morin.1998@free.fr: backport from upstream]
-Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
----
- docs/reference/glib/meson.build | 58 +++++++++++++++++----------------
- 1 file changed, 30 insertions(+), 28 deletions(-)
-
-diff --git a/docs/reference/glib/meson.build b/docs/reference/glib/meson.build
-index 114de49da..3cfff2f0b 100644
---- a/docs/reference/glib/meson.build
-+++ b/docs/reference/glib/meson.build
-@@ -113,35 +113,37 @@ if get_option('man')
-   endforeach
- endif
- 
--# GVariant specification is currently standalone
--rst2html5 = find_program('rst2html5', 'rst2html5.py', required: false)
-+if get_option('gtk_doc')
-+  # GVariant specification is currently standalone
-+  rst2html5 = find_program('rst2html5', 'rst2html5.py', required: false)
- 
--if rst2html5.found()
--  spec_path = glib_datadir / 'doc' / 'glib-2.0'
-+  if rst2html5.found()
-+    spec_path = glib_datadir / 'doc' / 'glib-2.0'
- 
--  figures = files(
--    'gvariant-byte-boundaries.svg',
--    'gvariant-integer-and-string-structure.svg',
--    'gvariant-integer-array.svg',
--    'gvariant-string-array.svg',
--  )
-+    figures = files(
-+      'gvariant-byte-boundaries.svg',
-+      'gvariant-integer-and-string-structure.svg',
-+      'gvariant-integer-array.svg',
-+      'gvariant-string-array.svg',
-+    )
- 
--  custom_target('gvariant-specification-1.0',
--    input: 'gvariant-specification-1.0.rst',
--    output: 'gvariant-specification-1.0.html',
--    command: [
--      rst2html5,
--      '@INPUT@',
--    ],
--    capture: true,
--    install: true,
--    install_dir: spec_path,
--    install_tag: 'doc',
--    depend_files: figures,
--  )
-+    custom_target('gvariant-specification-1.0',
-+      input: 'gvariant-specification-1.0.rst',
-+      output: 'gvariant-specification-1.0.html',
-+      command: [
-+        rst2html5,
-+        '@INPUT@',
-+      ],
-+      capture: true,
-+      install: true,
-+      install_dir: spec_path,
-+      install_tag: 'doc',
-+      depend_files: figures,
-+    )
- 
--  install_data(figures,
--    install_dir : spec_path,
--    install_tag : 'doc',
--  )
--endif
-\ No newline at end of file
-+    install_data(figures,
-+      install_dir : spec_path,
-+      install_tag : 'doc',
-+    )
-+  endif
-+endif
--- 
-2.25.1
-
diff --git a/package/libglib2/libglib2.hash b/package/libglib2/libglib2.hash
index 07ed7635a6..77528856cc 100644
--- a/package/libglib2/libglib2.hash
+++ b/package/libglib2/libglib2.hash
@@ -1,4 +1,4 @@
-# https://download.gnome.org/sources/glib/2.76/glib-2.76.1.sha256sum
-sha256  43dc0f6a126958f5b454136c4398eab420249c16171a769784486e25f2fda19f  glib-2.76.1.tar.xz
+# https://download.gnome.org/sources/glib/2.78/glib-2.78.1.sha256sum
+sha256  915bc3d0f8507d650ead3832e2f8fb670fce59aac4d7754a7dab6f1e6fed78b2  glib-2.78.1.tar.xz
 # License files, locally calculated
 sha256  fa6f36630bb1e0c571d34b2bbdf188d08495c9dbf58f28cac112f303fc1f58fb  COPYING
diff --git a/package/libglib2/libglib2.mk b/package/libglib2/libglib2.mk
index c06ded2a5b..de2214d397 100644
--- a/package/libglib2/libglib2.mk
+++ b/package/libglib2/libglib2.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-LIBGLIB2_VERSION_MAJOR = 2.76
+LIBGLIB2_VERSION_MAJOR = 2.78
 LIBGLIB2_VERSION = $(LIBGLIB2_VERSION_MAJOR).1
 LIBGLIB2_SOURCE = glib-$(LIBGLIB2_VERSION).tar.xz
 LIBGLIB2_SITE = https://download.gnome.org/sources/glib/$(LIBGLIB2_VERSION_MAJOR)
