diff --git a/0001-Workaround-removal-of-libio.h.patch b/0001-Workaround-removal-of-libio.h.patch
deleted file mode 100644
index 933568a..0000000
--- a/0001-Workaround-removal-of-libio.h.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 397feba12151bec18ab208bd8fe1d9f12b9989d0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
-Date: Mon, 5 Mar 2018 12:27:52 +0000
-Subject: [PATCH] Workaround removal of libio.h
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
----
- gnulib/lib/fflush.c   | 8 ++++----
- gnulib/lib/fpurge.c   | 2 +-
- gnulib/lib/freading.c | 2 +-
- gnulib/lib/fseeko.c   | 4 ++--
- 4 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/gnulib/lib/fflush.c b/gnulib/lib/fflush.c
-index c52883b..3ebbcae 100644
---- a/gnulib/lib/fflush.c
-+++ b/gnulib/lib/fflush.c
-@@ -32,8 +32,8 @@
- 
- #undef fflush
- 
--
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#define _IO_IN_BACKUP 0x100
-+#if defined _IO_ftrylockfile || __GNU_LIBRARY__ /* GNU libc, BeOS, Haiku, Linux libc5 */
- 
- /* Clear the stream's ungetc buffer, preserving the value of ftello (fp).  */
- static void
-@@ -72,7 +72,7 @@ clear_ungetc_buffer (FILE *fp)
- 
- #endif
- 
--#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */)
-+#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ /* GNU libc, BeOS, Haiku, Linux libc5 */)
- 
- # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT
- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
-@@ -148,7 +148,7 @@ rpl_fflush (FILE *stream)
-   if (stream == NULL || ! freading (stream))
-     return fflush (stream);
- 
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_ftrylockfile || __GNU_LIBRARY__ /* GNU libc, BeOS, Haiku, Linux libc5 */
- 
-   clear_ungetc_buffer_preserving_position (stream);
- 
-diff --git a/gnulib/lib/fpurge.c b/gnulib/lib/fpurge.c
-index b236871..ea8f7f5 100644
---- a/gnulib/lib/fpurge.c
-+++ b/gnulib/lib/fpurge.c
-@@ -62,7 +62,7 @@ fpurge (FILE *fp)
-   /* Most systems provide FILE as a struct and the necessary bitmask in
-      <stdio.h>, because they need it for implementing getc() and putc() as
-      fast macros.  */
--# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+# if defined _IO_ftrylockfile || __GNU_LIBRARY__ /* GNU libc, BeOS, Haiku, Linux libc5 */
-   fp->_IO_read_end = fp->_IO_read_ptr;
-   fp->_IO_write_ptr = fp->_IO_write_base;
-   /* Avoid memory leak when there is an active ungetc buffer.  */
-diff --git a/gnulib/lib/freading.c b/gnulib/lib/freading.c
-index 67a884d..fffda1e 100644
---- a/gnulib/lib/freading.c
-+++ b/gnulib/lib/freading.c
-@@ -31,7 +31,7 @@ freading (FILE *fp)
-   /* Most systems provide FILE as a struct and the necessary bitmask in
-      <stdio.h>, because they need it for implementing getc() and putc() as
-      fast macros.  */
--# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+# if defined _IO_ftrylockfile || __GNU_LIBRARY__ /* GNU libc, BeOS, Haiku, Linux libc5 */
-   return ((fp->_flags & _IO_NO_WRITES) != 0
-           || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0
-               && fp->_IO_read_base != NULL));
-diff --git a/gnulib/lib/fseeko.c b/gnulib/lib/fseeko.c
-index ae9b100..82460e5 100644
---- a/gnulib/lib/fseeko.c
-+++ b/gnulib/lib/fseeko.c
-@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int whence)
- #endif
- 
-   /* These tests are based on fpurge.c.  */
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_ftrylockfile || __GNU_LIBRARY__ /* GNU libc, BeOS, Haiku, Linux libc5 */
-   if (fp->_IO_read_end == fp->_IO_read_ptr
-       && fp->_IO_write_ptr == fp->_IO_write_base
-       && fp->_IO_save_base == NULL)
-@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int whence)
-           return -1;
-         }
- 
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_ftrylockfile || __GNU_LIBRARY__ /* GNU libc, BeOS, Haiku, Linux libc5 */
-       fp->_flags &= ~_IO_EOF_SEEN;
-       fp->_offset = pos;
- #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
--- 
-2.14.3
-
diff --git a/0001-tests-force-use-of-NORMAL-TLS-priority-in-test-suite.patch b/0001-tests-force-use-of-NORMAL-TLS-priority-in-test-suite.patch
deleted file mode 100644
index c0d81b8..0000000
--- a/0001-tests-force-use-of-NORMAL-TLS-priority-in-test-suite.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From ec92abee2851344e4e8c108a26b5cec594561ff4 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
-Date: Mon, 5 Mar 2018 12:46:16 +0000
-Subject: [PATCH] tests: force use of "NORMAL" TLS priority in test suite
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-When generating certificates we rely on GNUTLS' built-in default setup
-for the ciphers used in the certs. We then currently run with the distro
-specific TLS priority setup which can be much stronger, to the extent
-that the certificates we generate are considered untrustworthy. We don't
-care about the quality of the ciphers we use in the test suite, so just
-force the priority to "NORMAL" which should ensure our certs are
-accepted by GNUTLS.
-
-Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
----
- tests/virnettlscontexttest.c | 4 ++--
- tests/virnettlssessiontest.c | 4 ++--
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/tests/virnettlscontexttest.c b/tests/virnettlscontexttest.c
-index 089c10e964..86647f3014 100644
---- a/tests/virnettlscontexttest.c
-+++ b/tests/virnettlscontexttest.c
-@@ -72,7 +72,7 @@ static int testTLSContextInit(const void *opaque)
-                                          data->crt,
-                                          KEYFILE,
-                                          NULL,
--                                         NULL,
-+                                         "NORMAL",
-                                          true,
-                                          true);
-     } else {
-@@ -80,7 +80,7 @@ static int testTLSContextInit(const void *opaque)
-                                          NULL,
-                                          data->crt,
-                                          KEYFILE,
--                                         NULL,
-+                                         "NORMAL",
-                                          true,
-                                          true);
-     }
-diff --git a/tests/virnettlssessiontest.c b/tests/virnettlssessiontest.c
-index 6d639e5b16..7e85607181 100644
---- a/tests/virnettlssessiontest.c
-+++ b/tests/virnettlssessiontest.c
-@@ -113,7 +113,7 @@ static int testTLSSessionInit(const void *opaque)
-                                            data->servercrt,
-                                            KEYFILE,
-                                            data->wildcards,
--                                           NULL,
-+                                           "NORMAL",
-                                            false,
-                                            true);
- 
-@@ -121,7 +121,7 @@ static int testTLSSessionInit(const void *opaque)
-                                            NULL,
-                                            data->clientcrt,
-                                            KEYFILE,
--                                           NULL,
-+                                           "NORMAL",
-                                            false,
-                                            true);
- 
--- 
-2.14.3
-
diff --git a/libvirt.spec b/libvirt.spec
index 0d2d2a1..4afef55 100644
--- a/libvirt.spec
+++ b/libvirt.spec
@@ -202,6 +202,13 @@
     %define with_bash_completion  0%{!?_without_bash_completion:1}
 %endif
 
+# Use Python 3 when possible, Python 2 otherwise
+%if 0%{?fedora} || 0%{?rhel} > 7
+    %define python python3
+%else
+    %define python python2
+%endif
+
 
 %if %{with_qemu} || %{with_lxc} || %{with_uml}
 # numad is used to manage the CPU and memory placement dynamically,
@@ -246,8 +253,8 @@
 
 Summary: Library providing a simple virtualization API
 Name: libvirt
-Version: 4.1.0
-Release: 3%{?dist}%{?extra_release}
+Version: 4.2.0
+Release: 1%{?dist}%{?extra_release}
 License: LGPLv2+
 Group: Development/Libraries
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
@@ -257,8 +264,6 @@ URL: https://libvirt.org/
     %define mainturl stable_updates/
 %endif
 Source: https://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.xz
-Patch1: 0001-Workaround-removal-of-libio.h.patch
-Patch2: 0001-tests-force-use-of-NORMAL-TLS-priority-in-test-suite.patch
 
 Requires: libvirt-daemon = %{version}-%{release}
 Requires: libvirt-daemon-config-network = %{version}-%{release}
@@ -300,13 +305,14 @@ BuildRequires: gettext-devel
 BuildRequires: libtool
 BuildRequires: /usr/bin/pod2man
 %endif
+BuildRequires: gcc
 BuildRequires: git
 %if 0%{?fedora} >= 27 || 0%{?rhel} > 7
 BuildRequires: perl-interpreter
 %else
 BuildRequires: perl
 %endif
-BuildRequires: python2
+BuildRequires: %{python}
 %if %{with_systemd}
 BuildRequires: systemd-units
 %endif
@@ -359,11 +365,9 @@ BuildRequires: ebtables
 BuildRequires: module-init-tools
 BuildRequires: cyrus-sasl-devel
 %if 0%{?fedora} || 0%{?rhel} >= 7
-# F22 polkit-devel doesn't pull in polkit anymore, which we need for pkcheck
 BuildRequires: polkit >= 0.112
-BuildRequires: polkit-devel >= 0.112
 %else
-BuildRequires: polkit-devel >= 0.93
+BuildRequires: polkit >= 0.93
 %endif
 # For mount/umount in FS driver
 BuildRequires: util-linux
@@ -2193,6 +2197,9 @@ exit 0
 
 
 %changelog
+* Tue Apr  3 2018 Daniel P. Berrangé <berrange@redhat.com> - 4.2.0-1
+- Update to 4.2.0 release
+
 * Fri Mar 23 2018 Iryna Shcherbina <ishcherb@redhat.com> - 4.1.0-3
 - Update Python 2 dependency declarations to new packaging standards
   (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
diff --git a/sources b/sources
index f821932..b5f692e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (libvirt-4.1.0.tar.xz) = 62d1a228adf3270cc6defe3cbf92dac8c4ce2c434c4d97219571ccef799a4f6304cfd1ba9938338356641285f53ac71145d7b398523021c5ea1dc8e3d49cf894
+SHA512 (libvirt-4.2.0.tar.xz) = ced3a7408e95f1663deec03b095780d0f805126506a064a11063d1f313f923eb0ff0ea95f99826514d8cb4e51c850f6f02904e06e5ef8106c38898a0cfe7f9ed