diff --git a/core/glib2/0001-meson-Fix-GDB-scripts-install_dir-for-nix.patch b/core/glib2/0001-meson-Fix-GDB-scripts-install_dir-for-nix.patch
new file mode 100644
index 000000000..10c85a3f4
--- /dev/null
+++ b/core/glib2/0001-meson-Fix-GDB-scripts-install_dir-for-nix.patch
@@ -0,0 +1,50 @@
+From b454a60bf154332bd5961880700b7d08aec98995 Mon Sep 17 00:00:00 2001
+Message-Id: <b454a60bf154332bd5961880700b7d08aec98995.1508856243.git.jan.steffens@gmail.com>
+From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
+Date: Tue, 24 Oct 2017 16:29:49 +0200
+Subject: [PATCH] meson: Fix GDB scripts install_dir for *nix
+
+Disable installation on Windows for now as this would use a colon in the
+directory name.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=788772
+---
+ glib/meson.build    | 5 +++--
+ gobject/meson.build | 5 +++--
+ 2 files changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/glib/meson.build b/glib/meson.build
+index 1da0bcd3cc601b9e..33ece2d0221c1850 100644
+--- a/glib/meson.build
++++ b/glib/meson.build
+@@ -283,8 +283,9 @@ configure_file(
+   input: 'libglib-gdb.py.in',
+   output: 'libglib-2.0.so.@0@-gdb.py'.format(library_version),
+   configuration: gdb_conf,
+-  install: true,
+-  install_dir: join_paths(get_option('datadir'), 'gdb/auto-load' + get_option('libdir'))
++  # FIXME: Figure out how to install this on Windows
++  install: host_system != 'windows',
++  install_dir: join_paths(glib_datadir, 'gdb', 'auto-load', './' + glib_libdir)
+ )
+ 
+ if enable_systemtap
+diff --git a/gobject/meson.build b/gobject/meson.build
+index 5a8289e6f054818e..0c8c0cb26f053d1c 100644
+--- a/gobject/meson.build
++++ b/gobject/meson.build
+@@ -100,8 +100,9 @@ configure_file(
+   input: 'libgobject-gdb.py.in',
+   output: 'libgobject-2.0.so.@0@-gdb.py'.format(library_version),
+   configuration: gdb_conf,
+-  install: true,
+-  install_dir: join_paths(get_option('datadir'), 'gdb/auto-load/' + get_option('libdir'))
++  # FIXME: Figure out how to install this on Windows
++  install: host_system != 'windows',
++  install_dir: join_paths(glib_datadir, 'gdb', 'auto-load', './' + glib_libdir)
+ )
+ 
+ if enable_systemtap
+-- 
+2.14.2
+
diff --git a/core/glib2/0001-meson-Fix-libmount-support.patch b/core/glib2/0001-meson-Fix-libmount-support.patch
new file mode 100644
index 000000000..c85f047c0
--- /dev/null
+++ b/core/glib2/0001-meson-Fix-libmount-support.patch
@@ -0,0 +1,41 @@
+From c93756c8f066a1e35fa2f46b231771d78e292600 Mon Sep 17 00:00:00 2001
+Message-Id: <c93756c8f066a1e35fa2f46b231771d78e292600.1509419562.git.jan.steffens@gmail.com>
+From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
+Date: Tue, 31 Oct 2017 04:11:42 +0100
+Subject: [PATCH] meson: Fix libmount support
+
+The define was still missing.
+---
+ config.h.meson | 3 +++
+ meson.build    | 1 +
+ 2 files changed, 4 insertions(+)
+
+diff --git a/config.h.meson b/config.h.meson
+index c67e1792f4af1ada..3f310b3c960fcb29 100644
+--- a/config.h.meson
++++ b/config.h.meson
+@@ -247,6 +247,9 @@
+ /* Define if libelf is available */
+ #mesondefine HAVE_LIBELF
+ 
++/* Define if libmount is available */
++#mesondefine HAVE_LIBMOUNT
++
+ /* Define to 1 if you have the <linux/magic.h> header file. */
+ #mesondefine HAVE_LINUX_MAGIC_H
+ 
+diff --git a/meson.build b/meson.build
+index 208c23087627de1e..cd9cbf2ce10595c2 100644
+--- a/meson.build
++++ b/meson.build
+@@ -1535,6 +1535,7 @@ if use_system_pcre
+ endif
+ if libmount_dep.length() == 1 and libmount_dep[0].found()
+   glib_conf.set('LIBMOUNT_LIBS', '-lmount')
++  glib_conf.set('HAVE_LIBMOUNT', 1)
+ endif
+ glib_conf.set('GIO_MODULE_DIR', '${libdir}/gio/modules')
+ # FIXME: Missing:
+-- 
+2.15.0
+
diff --git a/core/glib2/PKGBUILD b/core/glib2/PKGBUILD
index 0e7dddc10..8787c08a7 100644
--- a/core/glib2/PKGBUILD
+++ b/core/glib2/PKGBUILD
@@ -6,29 +6,33 @@
 
 pkgbase=glib2
 pkgname=(glib2 glib2-docs)
-pkgver=2.54.1
+pkgver=2.54.2
 pkgrel=2
 pkgdesc="Low level core library"
 url="https://wiki.gnome.org/Projects/GLib"
 license=(LGPL2.1)
 arch=(i686 x86_64)
-depends=(pcre libffi libutil-linux)
-makedepends=(gettext gtk-doc zlib shared-mime-info python libelf git util-linux meson)
-checkdepends=(desktop-file-utils dbus)
+depends=(pcre libffi libutil-linux zlib)
+makedepends=(gettext gtk-doc shared-mime-info python libelf git util-linux meson dbus)
+checkdepends=(desktop-file-utils)
 optdepends=('python: for gdbus-codegen and gtester-report'
             'libelf: gresource inspection tool')
 options=(!emptydirs)
-_commit=5fc5a3eaa6fc2ab23a3585cf22799adae642afa7  # tags/2.54.1^0
+_commit=52b3e434d849e2b0233d6d3d663b5dda82ab263e  # tags/2.54.2^0
 source=("git+https://git.gnome.org/browse/glib#commit=$_commit"
         0001-docs-Fix-building-with-meson.patch
         0001-meson-Fix-permissions-of-installed-scripts.patch
+        0001-meson-Fix-GDB-scripts-install_dir-for-nix.patch
+        0001-meson-Fix-libmount-support.patch
         libs.diff
         noisy-glib-compile-schemas.diff
         glib-compile-schemas.hook gio-querymodules.hook)
 sha256sums=('SKIP'
             '8b289f3e1a5a3b29d310d45610468199acfe6f2b38a0d1be38c9224437a0e40c'
             '12b1a2f4e304e4c03e48ae9564d73ae38619bbb7711a013138939ff8e5cc2327'
-            '54c43d5d4d4b5fa591eb639e63050ce5eac30aff6691fa9cf56631782b2aad33'
+            'f53d5acfda4b7141a4813f1e49610e9176dc5bdf8e867d88290e34d91a40ebcb'
+            '14c0dcfb4efb690f7cb44673faf31f5eb40ac68c01974eddb53d5aa7ae366629'
+            '2fb828f51727bd9c8b48cfd9d6833c8b4ff82803331f6e2340b0ec8edfe57c52'
             '81a4df0b638730cffb7fa263c04841f7ca6b9c9578ee5045db6f30ff0c3fc531'
             'e1123a5d85d2445faac33f6dae1085fdd620d83279a4e130a83fe38db52b62b3'
             '5ba204a2686304b1454d401a39a9d27d09dd25e4529664e3fd565be3d439f8b6')
@@ -48,8 +52,13 @@ prepare() {
   # https://bugzilla.gnome.org/show_bug.cgi?id=787671
   patch -Np1 -i ../0001-meson-Fix-permissions-of-installed-scripts.patch
 
-  # Unbreak .pc files when built with meson
-  # Fix gdb scripts install
+  # https://bugzilla.gnome.org/show_bug.cgi?id=788772
+  patch -Np1 -i ../0001-meson-Fix-GDB-scripts-install_dir-for-nix.patch
+
+  # https://bugzilla.gnome.org/show_bug.cgi?id=789681
+  patch -Np1 -i ../0001-meson-Fix-libmount-support.patch
+
+  # https://bugzilla.gnome.org/show_bug.cgi?id=788773
   patch -Np1 -i ../libs.diff
 
   # Suppress noise from glib-compile-schemas.hook
diff --git a/core/glib2/libs.diff b/core/glib2/libs.diff
index 9f9eb799f..eef85b814 100644
--- a/core/glib2/libs.diff
+++ b/core/glib2/libs.diff
@@ -1,8 +1,8 @@
 diff --git i/gio/meson.build w/gio/meson.build
-index 32526362666b5e80..d7030aa29a6f17eb 100644
+index 4a10d49d7eb3229c..77537a77a26dcb5b 100644
 --- i/gio/meson.build
 +++ w/gio/meson.build
-@@ -727,7 +727,7 @@ libgio = shared_library('gio-2.0',
+@@ -741,7 +741,7 @@ libgio = shared_library('gio-2.0',
                    libgobject_dep, libgmodule_dep] + platform_deps + network_libs,
    c_args : gio_c_args,
    # intl.lib is not compatible with SAFESEH
@@ -12,7 +12,7 @@ index 32526362666b5e80..d7030aa29a6f17eb 100644
  
  libgio_dep = declare_dependency(link_with : libgio,
 diff --git i/glib/meson.build w/glib/meson.build
-index 1da0bcd3cc601b9e..4286218c9c8361b2 100644
+index f12a8b45bbbfec8f..2a505b3dd79ef163 100644
 --- i/glib/meson.build
 +++ w/glib/meson.build
 @@ -227,7 +227,7 @@ libglib = shared_library('glib-2.0',
@@ -24,15 +24,6 @@ index 1da0bcd3cc601b9e..4286218c9c8361b2 100644
    include_directories : configinc,
    link_with : [charset_lib, gnulib_lib],
    dependencies : [pcre, thread_dep, libintl, librt] + libiconv + platform_deps,
-@@ -284,7 +284,7 @@ configure_file(
-   output: 'libglib-2.0.so.@0@-gdb.py'.format(library_version),
-   configuration: gdb_conf,
-   install: true,
--  install_dir: join_paths(get_option('datadir'), 'gdb/auto-load' + get_option('libdir'))
-+  install_dir: join_paths(get_option('datadir'), 'gdb/auto-load' + glib_libdir)
- )
- 
- if enable_systemtap
 diff --git i/gmodule/meson.build w/gmodule/meson.build
 index 191bca2446f9977e..fd0219d9225f2f3f 100644
 --- i/gmodule/meson.build
@@ -78,7 +69,7 @@ index 191bca2446f9977e..fd0219d9225f2f3f 100644
  
  libgmodule_dep = declare_dependency(link_with : libgmodule,
 diff --git i/gobject/meson.build w/gobject/meson.build
-index aecca57c743d5956..e033ae15f9c226b5 100644
+index 65ffef0697b3bad4..32f6f91db12f29b6 100644
 --- i/gobject/meson.build
 +++ w/gobject/meson.build
 @@ -61,6 +61,7 @@ libgobject = shared_library('gobject-2.0',
@@ -89,15 +80,6 @@ index aecca57c743d5956..e033ae15f9c226b5 100644
    c_args : ['-DG_LOG_DOMAIN="GLib-GObject"', '-DGOBJECT_COMPILATION'] + glib_hidden_visibility_args)
  
  libgobject_dep = declare_dependency(link_with : libgobject,
-@@ -102,7 +103,7 @@ configure_file(
-   output: 'libgobject-2.0.so.@0@-gdb.py'.format(library_version),
-   configuration: gdb_conf,
-   install: true,
--  install_dir: join_paths(get_option('datadir'), 'gdb/auto-load/' + get_option('libdir'))
-+  install_dir: join_paths(get_option('datadir'), 'gdb/auto-load/' + glib_libdir)
- )
- 
- if enable_systemtap
 diff --git i/gthread/meson.build w/gthread/meson.build
 index 8ccac3369894bda4..2d5913a91525460f 100644
 --- i/gthread/meson.build
@@ -109,10 +91,10 @@ index 8ccac3369894bda4..2d5913a91525460f 100644
 +  link_args : library_link_args,
    c_args : ['-DG_LOG_DOMAIN="GThread"' ] + glib_hidden_visibility_args)
 diff --git i/meson.build w/meson.build
-index 0f3f7917899e93ea..12277e8d327b7a83 100644
+index 208c23087627de1e..dd860592b26c9973 100644
 --- i/meson.build
 +++ w/meson.build
-@@ -1533,6 +1533,13 @@ glib_conf.set('GIO_MODULE_DIR', '${libdir}/gio/modules')
+@@ -1541,6 +1541,13 @@ glib_conf.set('GIO_MODULE_DIR', '${libdir}/gio/modules')
  # @G_MODULE_LIBS@ @SELINUX_LIBS@ @COCOA_LIBS@ @CARBON_LIBS@ @G_LIBS_EXTRA@
  # @PCRE_REQUIRES@ @GLIB_EXTRA_CFLAGS@ @G_THREAD_CFLAGS@