diff --git a/.gitignore b/.gitignore
index 7ce16ce..e0dfa01 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/glib-2.54.2.tar.xz
+SOURCES/glib-2.56.1.tar.xz
diff --git a/.glib2.metadata b/.glib2.metadata
index ab4ad8f..507ea60 100644
--- a/.glib2.metadata
+++ b/.glib2.metadata
@@ -1 +1 @@
-85b5d649fc3d18f8d8197bd971dfbebd94b5f96d SOURCES/glib-2.54.2.tar.xz
+4db098c15b9d57c37bb504a6f58ebe717994e6f2 SOURCES/glib-2.56.1.tar.xz
diff --git a/SOURCES/0001-Build-with-old-libmount-too.patch b/SOURCES/0001-Build-with-old-libmount-too.patch
deleted file mode 100644
index 8e81770..0000000
--- a/SOURCES/0001-Build-with-old-libmount-too.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From a78c36d7f4e0e3038005305efd84f66a7d157f20 Mon Sep 17 00:00:00 2001
-From: Colin Walters <walters@verbum.org>
-Date: Wed, 1 Nov 2017 10:21:34 -0400
-Subject: [PATCH] Build with old libmount too
-
-Downstream: https://bugzilla.redhat.com/show_bug.cgi?id=1508056
-
-This is an easy change, and lets us build with RHEL7's libmount.
-
-See also https://github.com/ostreedev/ostree/commit/cee57a0268334d51cd312c6cdcf367bedfd3e30d
----
- configure.ac      | 6 ++++--
- gio/gunixmounts.c | 4 ++--
- 2 files changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index fcbb62e7d..0beb3898c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1760,8 +1760,10 @@ AS_IF([ test $have_libmount = maybe ], [
-   glib_save_LIBS=$LIBS
-   AC_CHECK_HEADER([libmount/libmount.h], [:], [have_libmount=no])
- 
--  # Check for a recent enough libmount
--  AC_CHECK_LIB([mount], [mnt_unref_table], [:], [have_libmount=no])
-+  # We used to check for mnt_unref_table(), but now for compat with
-+  # e.g. RHEL7 just use mnt_free_table().  Let's keep this check
-+  # anyways.
-+  AC_CHECK_LIB([mount], [mnt_free_table], [:], [have_libmount=no])
-   LIBS=$glib_save_LIBS
- 
-   if test $have_libmount != no; then
-diff --git a/gio/gunixmounts.c b/gio/gunixmounts.c
-index ef7899dff..a3c40f5c1 100644
---- a/gio/gunixmounts.c
-+++ b/gio/gunixmounts.c
-@@ -505,7 +505,7 @@ _g_get_unix_mounts (void)
-   mnt_free_iter (iter);
- 
-  out:
--  mnt_unref_table (table);
-+  mnt_free_table (table);
- 
-   return g_list_reverse (return_list);
- }
-@@ -1029,7 +1029,7 @@ _g_get_unix_mount_points (void)
-   mnt_free_iter (iter);
- 
-  out:
--  mnt_unref_table (table);
-+  mnt_free_table (table);
- 
-   return g_list_reverse (return_list);
- }
--- 
-2.13.6
-
diff --git a/SOURCES/0001-gdbus-codegen-Call-abspath-earlier.patch b/SOURCES/0001-gdbus-codegen-Call-abspath-earlier.patch
deleted file mode 100644
index d04b86b..0000000
--- a/SOURCES/0001-gdbus-codegen-Call-abspath-earlier.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 9d80b0bca3f90e2489aac8e7765081c47e8a66f5 Mon Sep 17 00:00:00 2001
-From: Colin Walters <walters@verbum.org>
-Date: Tue, 31 Oct 2017 12:51:09 -0400
-Subject: [PATCH] gdbus-codegen: Call abspath() earlier
-
-The previous change from https://bugzilla.gnome.org/show_bug.cgi?id=786785
-didn't actually work (for me at least) in the `/bin/gdbus-codegen` case
-as the relative `/bin/../share` path works, but then `os.path.abspath()`
-breaks it (as it's not doing `realpath()`, and let's not go there).
-
-Fix this by doing the `abspath` first.
-
-Downstream: https://bugzilla.redhat.com/show_bug.cgi?id=1507661
----
- gio/gdbus-2.0/codegen/gdbus-codegen.in | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/gio/gdbus-2.0/codegen/gdbus-codegen.in b/gio/gdbus-2.0/codegen/gdbus-codegen.in
-index e3f4f00f8..67d367543 100755
---- a/gio/gdbus-2.0/codegen/gdbus-codegen.in
-+++ b/gio/gdbus-2.0/codegen/gdbus-codegen.in
-@@ -37,6 +37,9 @@ else:
-     # parent directory to the python path.
-     path = os.path.join(filedir, '..')
- 
-+# Canonicalize, then do further testing
-+path = os.path.abspath(path)
-+
- # If the above path detection failed, use the hard-coded datadir. This can
- # happen when, for instance, bindir and datadir are not in the same prefix or
- # on Windows where we cannot make any guarantees about the directory structure.
-@@ -46,7 +49,7 @@ else:
- if not os.path.isfile(os.path.join(path, 'codegen', 'codegen_main.py')):
-     path = os.path.join('@DATADIR@', 'glib-2.0')
- 
--sys.path.insert(0, os.path.abspath(path))
-+sys.path.insert(0, path)
- from codegen import codegen_main
- 
- sys.exit(codegen_main.codegen_main())
--- 
-2.13.6
-
diff --git a/SOURCES/0001-gdbus-codegen-Don-t-assume-bindir-and-datadir-share-.patch b/SOURCES/0001-gdbus-codegen-Don-t-assume-bindir-and-datadir-share-.patch
deleted file mode 100644
index d898468..0000000
--- a/SOURCES/0001-gdbus-codegen-Don-t-assume-bindir-and-datadir-share-.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From b9f2ea423526735f7fe7371fb1339eae91a618c2 Mon Sep 17 00:00:00 2001
-From: Nirbheek Chauhan <nirbheek@centricular.com>
-Date: Tue, 12 Sep 2017 15:46:57 +0530
-Subject: [PATCH] gdbus-codegen: Don't assume bindir and datadir share prefix
-
-This assumption breaks when, for instance:
-
-* Called as /bin/gdbus-codegen
-* Installed on Windows in a directory that is not `bin/`
-
-For such cases, we cannot make any assumptions about the directory
-structure, and must hard-code the datadir.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=786785
----
- gio/gdbus-2.0/codegen/Makefile.am      | 2 +-
- gio/gdbus-2.0/codegen/gdbus-codegen.in | 9 +++++++++
- gio/gdbus-2.0/codegen/meson.build      | 1 +
- 3 files changed, 11 insertions(+), 1 deletion(-)
-
-diff --git a/gio/gdbus-2.0/codegen/Makefile.am b/gio/gdbus-2.0/codegen/Makefile.am
-index b3fb2c292..b4e500cb0 100644
---- a/gio/gdbus-2.0/codegen/Makefile.am
-+++ b/gio/gdbus-2.0/codegen/Makefile.am
-@@ -21,7 +21,7 @@ CLEANFILES += gdbus-codegen
- EXTRA_DIST += gdbus-codegen.in
- 
- gdbus-codegen: gdbus-codegen.in Makefile $(codegen_PYTHON)
--	$(AM_V_GEN) sed -e 's,@datadir\@,$(datadir),' -e 's,@PYTHON\@,$(PYTHON),' $< > $@.tmp && mv $@.tmp $@
-+	$(AM_V_GEN) sed -e 's,@DATADIR\@,$(datadir),' -e 's,@PYTHON\@,$(PYTHON),' $< > $@.tmp && mv $@.tmp $@
- 	@chmod a+x $@
- 
- clean-local:
-diff --git a/gio/gdbus-2.0/codegen/gdbus-codegen.in b/gio/gdbus-2.0/codegen/gdbus-codegen.in
-index 805098188..e3f4f00f8 100644
---- a/gio/gdbus-2.0/codegen/gdbus-codegen.in
-+++ b/gio/gdbus-2.0/codegen/gdbus-codegen.in
-@@ -37,6 +37,15 @@ else:
-     # parent directory to the python path.
-     path = os.path.join(filedir, '..')
- 
-+# If the above path detection failed, use the hard-coded datadir. This can
-+# happen when, for instance, bindir and datadir are not in the same prefix or
-+# on Windows where we cannot make any guarantees about the directory structure.
-+#
-+# In these cases our installation cannot be relocatable, but at least we should
-+# be able to find the codegen module.
-+if not os.path.isfile(os.path.join(path, 'codegen', 'codegen_main.py')):
-+    path = os.path.join('@DATADIR@', 'glib-2.0')
-+
- sys.path.insert(0, os.path.abspath(path))
- from codegen import codegen_main
- 
diff --git a/SOURCES/0001-gio-fix-race-condition-in-GDBusObjectManagerClient.patch b/SOURCES/0001-gio-fix-race-condition-in-GDBusObjectManagerClient.patch
deleted file mode 100644
index 0c91bab..0000000
--- a/SOURCES/0001-gio-fix-race-condition-in-GDBusObjectManagerClient.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From aeecd81dd13e4d8ef609149f82770ad06a8fccdb Mon Sep 17 00:00:00 2001
-From: Beniamino Galvani <bgalvani@redhat.com>
-Date: Sat, 30 Sep 2017 11:26:29 +0200
-Subject: [PATCH] gio: fix race condition in GDBusObjectManagerClient
-
-priv->map_object_path_to_object_proxy must be protected to avoid
-concurrent access by multiple threads. Move the hash table insertion
-into the critical section.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=788368
----
- gio/gdbusobjectmanagerclient.c | 15 +++++++++------
- 1 file changed, 9 insertions(+), 6 deletions(-)
-
-diff --git a/gio/gdbusobjectmanagerclient.c b/gio/gdbusobjectmanagerclient.c
-index 1c00797cd165..08c94d5068ef 100644
---- a/gio/gdbusobjectmanagerclient.c
-+++ b/gio/gdbusobjectmanagerclient.c
-@@ -1542,6 +1542,13 @@ add_interfaces (GDBusObjectManagerClient *manager,
-       g_variant_unref (properties);
-     }
- 
-+  if (added)
-+    {
-+      g_hash_table_insert (manager->priv->map_object_path_to_object_proxy,
-+                           g_strdup (object_path),
-+                           op);
-+    }
-+
-   g_mutex_unlock (&manager->priv->lock);
- 
-   /* now that we don't hold the lock any more, emit signals */
-@@ -1555,12 +1562,8 @@ add_interfaces (GDBusObjectManagerClient *manager,
-   g_list_free (interface_added_signals);
- 
-   if (added)
--    {
--      g_hash_table_insert (manager->priv->map_object_path_to_object_proxy,
--                           g_strdup (object_path),
--                           op);
--      g_signal_emit_by_name (manager, "object-added", op);
--    }
-+    g_signal_emit_by_name (manager, "object-added", op);
-+
-   g_object_unref (manager);
-   g_object_unref (op);
- }
--- 
-2.14.2
-
diff --git a/SPECS/glib2.spec b/SPECS/glib2.spec
index d46ca6b..f648379 100644
--- a/SPECS/glib2.spec
+++ b/SPECS/glib2.spec
@@ -1,33 +1,31 @@
 %global _changelog_trimtime %(date +%s -d "1 year ago")
 
 Name: glib2
-Version: 2.54.2
+Version: 2.56.1
 Release: 2%{?dist}
 Summary: A library of handy utility functions
 
 License: LGPLv2+
 URL: http://www.gtk.org
-Source0: http://download.gnome.org/sources/glib/2.54/glib-%{version}.tar.xz
+Source0: http://download.gnome.org/sources/glib/2.56/glib-%{version}.tar.xz
 
-BuildRequires: git
-BuildRequires: pkgconfig
+BuildRequires: chrpath
 BuildRequires: gettext
-BuildRequires: libattr-devel
-BuildRequires: libmount-devel
-BuildRequires: libselinux-devel
-BuildRequires: pkgconfig(libpcre)
 # for sys/inotify.h
 BuildRequires: glibc-devel
-BuildRequires: zlib-devel
+BuildRequires: libattr-devel
+BuildRequires: libselinux-devel
 # for sys/sdt.h
 BuildRequires: systemtap-sdt-devel
+BuildRequires: pkgconfig(libelf)
+BuildRequires: pkgconfig(libffi)
+BuildRequires: pkgconfig(libpcre)
+BuildRequires: pkgconfig(mount)
+BuildRequires: pkgconfig(zlib)
 # Bootstrap build requirements
 BuildRequires: automake autoconf libtool
 BuildRequires: gtk-doc
 BuildRequires: python-devel
-BuildRequires: libffi-devel
-BuildRequires: elfutils-libelf-devel
-BuildRequires: chrpath
 
 # Patches we're carrying specifically for RHEL7:
 # Avoid deprecating things introduced since the first version of glib
@@ -35,11 +33,6 @@ BuildRequires: chrpath
 Patch0: revert-g-source-remove-critical.patch
 Patch1: add-back-g-memmove.patch
 
-Patch2: 0001-gdbus-codegen-Don-t-assume-bindir-and-datadir-share-.patch
-Patch3: 0001-gdbus-codegen-Call-abspath-earlier.patch
-Patch4: 0001-Build-with-old-libmount-too.patch
-Patch5: 0001-gio-fix-race-condition-in-GDBusObjectManagerClient.patch
-
 # for GIO content-type support
 Requires: shared-mime-info
 
@@ -89,27 +82,30 @@ The glib2-tests package contains tests that can be used to verify
 the functionality of the installed glib2 package.
 
 %prep
-%autosetup -Sgit -n glib-%{version}
+%autosetup -n glib-%{version} -p1
 
 autoreconf -i -f
 
 %build
+# Bug 1324770: Also explicitly remove PCRE sources since we use --with-pcre=system
+rm glib/pcre/*.[ch]
 # Support builds of both git snapshots and tarballs packed with autogoo
 (if ! test -x configure; then NOCONFIGURE=1 ./autogen.sh; CONFIGFLAGS=--enable-gtk-doc; fi;
  %configure $CONFIGFLAGS \
+           --disable-silent-rules \
            --with-pcre=system \
            --enable-systemtap \
            --enable-static \
            --enable-installed-tests
 )
 
-make %{?_smp_mflags}
+%make_build
 
 %install
 # Use -p to preserve timestamps on .py files to ensure
 # they're not recompiled with different timestamps
 # to help multilib: https://bugzilla.redhat.com/show_bug.cgi?id=718404
-make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p -c"
+%make_install INSTALL="install -p"
 # Also since this is a generated .py file, set it to a known timestamp,
 # otherwise it will vary by build time, and thus break multilib -devel
 # installs.
@@ -121,13 +117,6 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/gio/modules/*.{a,la}
 rm -f $RPM_BUILD_ROOT%{_datadir}/glib-2.0/gdb/*.{pyc,pyo}
 rm -f $RPM_BUILD_ROOT%{_datadir}/glib-2.0/codegen/*.{pyc,pyo}
 
-# Multilib fixes for systemtap tapsets; see
-# https://bugzilla.redhat.com/718404
-for f in $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/*.stp; do
-    (dn=$(dirname ${f}); bn=$(basename ${f});
-     mv ${f} ${dn}/%{__isa_bits}-${bn})
-done
-
 mv  $RPM_BUILD_ROOT%{_bindir}/gio-querymodules $RPM_BUILD_ROOT%{_bindir}/gio-querymodules-%{__isa_bits}
 
 touch $RPM_BUILD_ROOT%{_libdir}/gio/modules/giomodule.cache
@@ -189,6 +178,7 @@ gio-querymodules-%{__isa_bits} %{_libdir}/gio/modules
 %{_datadir}/glib-2.0/gdb
 %{_datadir}/glib-2.0/gettext
 %{_datadir}/glib-2.0/schemas/gschema.dtd
+%{_datadir}/glib-2.0/valgrind/glib.supp
 %{_datadir}/bash-completion/completions/gresource
 %{_bindir}/glib-genmarshal
 %{_bindir}/glib-gettextize
@@ -199,7 +189,6 @@ gio-querymodules-%{__isa_bits} %{_libdir}/gio/modules
 %{_bindir}/glib-compile-resources
 %{_bindir}/gresource
 %{_datadir}/glib-2.0/codegen
-%{_datadir}/glib-2.0/valgrind/glib.supp
 %attr (0755, root, root) %{_bindir}/gtester-report
 %{_mandir}/man1/glib-genmarshal.1*
 %{_mandir}/man1/glib-gettextize.1*
@@ -232,6 +221,13 @@ gio-querymodules-%{__isa_bits} %{_libdir}/gio/modules
 %{_datadir}/installed-tests
 
 %changelog
+* Mon Aug 27 2018 Colin Walters <walters@verbum.org> - 2.56.1-2
+- Add --disable-silent-rules
+
+* Sun Apr 08 2018 Kalev Lember <klember@redhat.com> - 2.56.1-1
+- Update to 2.56.1
+- Resolves #1567375
+
 * Fri Nov 10 2017 Kalev Lember <klember@redhat.com> - 2.54.2-2
 - Backport patch to fix race condition in GDBusObjectManagerClient
 - Resolves: #1494065