diff --git a/.gitignore b/.gitignore
index 1d8d3e8..e94c287 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/rpm-ostree-2019.6.tar.xz
+SOURCES/rpm-ostree-2020.2.tar.xz
diff --git a/.rpm-ostree.metadata b/.rpm-ostree.metadata
index bb08118..208b5d4 100644
--- a/.rpm-ostree.metadata
+++ b/.rpm-ostree.metadata
@@ -1 +1 @@
-4394f32b43403577dd738675cbf8e28efbf8866f SOURCES/rpm-ostree-2019.6.tar.xz
+c78822f97ac201db308cd39c8fc7d65b296e570c SOURCES/rpm-ostree-2020.2.tar.xz
diff --git a/SOURCES/0001-app-status-Fix-printf-format-string-for-32-bit.patch b/SOURCES/0001-app-status-Fix-printf-format-string-for-32-bit.patch
deleted file mode 100644
index a48c3ed..0000000
--- a/SOURCES/0001-app-status-Fix-printf-format-string-for-32-bit.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 08c98eda94381f0147af5783960121574043fa5a Mon Sep 17 00:00:00 2001
-From: Jonathan Lebon <jonathan@jlebon.com>
-Date: Wed, 25 Sep 2019 12:42:59 -0400
-Subject: [PATCH] app/status: Fix printf format string for 32-bit
-
-Hit this when compiling in Koji.
----
- src/app/rpmostree-builtin-status.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/app/rpmostree-builtin-status.c b/src/app/rpmostree-builtin-status.c
-index 2bc2c4b5..8b38fc83 100644
---- a/src/app/rpmostree-builtin-status.c
-+++ b/src/app/rpmostree-builtin-status.c
-@@ -1119,7 +1119,7 @@ fetch_history_deployment_gvariant (RORHistoryEntry  *entry,
-                                    GError          **error)
- {
-   g_autofree char *fn =
--    g_strdup_printf ("%s/%lu", RPMOSTREE_HISTORY_DIR, entry->deploy_timestamp);
-+    g_strdup_printf ("%s/%" PRIu64, RPMOSTREE_HISTORY_DIR, entry->deploy_timestamp);
- 
-   *out_deployment = NULL;
- 
-@@ -1165,7 +1165,7 @@ print_history_entry (RORHistoryEntry  *entry,
-       print_timestamp_and_relative ("BootTimestamp", entry->last_boot_timestamp);
-       if (entry->boot_count > 1)
-         {
--          g_print ("%s BootCount: %lu; first booted on ",
-+          g_print ("%s BootCount: %" PRIu64 "; first booted on ",
-                    libsd_special_glyph (TREE_RIGHT), entry->boot_count);
-           print_timestamp_and_relative (NULL, entry->first_boot_timestamp);
-         }
--- 
-2.21.0
-
diff --git a/SOURCES/0001-build-sys-Disable-zchunk-for-libdnf-if-we-don-t-have.patch b/SOURCES/0001-build-sys-Disable-zchunk-for-libdnf-if-we-don-t-have.patch
new file mode 100644
index 0000000..61b4994
--- /dev/null
+++ b/SOURCES/0001-build-sys-Disable-zchunk-for-libdnf-if-we-don-t-have.patch
@@ -0,0 +1,41 @@
+From 0bfd20c900e75d8c4a42d80d7e2c3405141dd90b Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters@verbum.org>
+Date: Thu, 14 May 2020 00:38:48 +0000
+Subject: [PATCH] build-sys: Disable zchunk for libdnf if we don't have it
+
+Going to update rpm-ostree for RHEL 8.3, we did a huge bump
+in libdnf which now defaults to enabling zchunk in its build
+system.  We added the infrastructure before to detect things,
+so propagate that to libdnf.
+---
+ configure.ac | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 684f202b..57d9ae24 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -131,8 +131,9 @@ AS_IF([pkg-config --atleast-version=4.14.2 rpm], [], [AC_MSG_ERROR([librpm 4.14.
+ 
+ dnl We don't *actually* use this ourself, but librepo does, and libdnf gets confused
+ dnl if librepo doesn't support it.
++have_zchunk=no
+ AS_IF([pkg-config --exists zck],
+-  [AC_DEFINE([HAVE_ZCHUNK], 1, [Define if we have zchunk])])
++  [have_zchunk=yes; AC_DEFINE([HAVE_ZCHUNK], 1, [Define if we have zchunk])])
+ 
+ AC_PATH_PROG([XSLTPROC], [xsltproc])
+ 
+@@ -259,6 +260,9 @@ cmake_args=-DCMAKE_BUILD_TYPE=RelWithDebugInfo
+ if test ${debug_release} = debug; then
+   cmake_args="-DCMAKE_BUILD_TYPE=Debug"
+ fi
++if test x${have_zchunk} = xno; then
++  cmake_args="${cmake_args} -DWITH_ZCHUNK:BOOL=0"
++fi
+ export cmake_args
+ 
+ dnl I picked /usr/libexec/rpm-ostree just because we need an
+-- 
+2.18.4
+
diff --git a/SOURCES/0001-initramfs-Fix-using-local-etc-when-also-replacing-ke.patch b/SOURCES/0001-initramfs-Fix-using-local-etc-when-also-replacing-ke.patch
deleted file mode 100644
index fc9b177..0000000
--- a/SOURCES/0001-initramfs-Fix-using-local-etc-when-also-replacing-ke.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From 1675058768263b804148c7a737b00a480d6b32f8 Mon Sep 17 00:00:00 2001
-From: Jonathan Lebon <jonathan@jlebon.com>
-Date: Wed, 26 Feb 2020 11:14:51 -0500
-Subject: [PATCH] initramfs: Fix using local /etc when also replacing kernel
-
-Instead of basing our decision to use the local `/etc` on whether we're
-using `dracut --rebuild`, base it directly on a boolean parameter.
-
-This is relevant in the client-side when initramfs regeneration is
-requested as well as a kernel override. In such cases, we do want to use
-the local `/etc`, but we'd skip that path because we didn't also use
-`dracut --rebuild`.
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1806588
----
- src/daemon/rpmostree-sysroot-upgrader.c | 9 ++++++---
- src/libpriv/rpmostree-kernel.c          | 6 ++----
- src/libpriv/rpmostree-kernel.h          | 1 +
- src/libpriv/rpmostree-postprocess.c     | 2 +-
- tests/vmcheck/test-override-kernel.sh   | 9 +++++++++
- 5 files changed, 19 insertions(+), 8 deletions(-)
-
-diff --git a/src/daemon/rpmostree-sysroot-upgrader.c b/src/daemon/rpmostree-sysroot-upgrader.c
-index e3f5acef..f84e20c6 100644
---- a/src/daemon/rpmostree-sysroot-upgrader.c
-+++ b/src/daemon/rpmostree-sysroot-upgrader.c
-@@ -1097,9 +1097,12 @@ perform_local_assembly (RpmOstreeSysrootUpgrader *self,
-       g_assert (kernel_state && kernel_path);
- 
-       g_auto(GLnxTmpfile) initramfs_tmpf = { 0, };
--      if (!rpmostree_run_dracut (self->tmprootfs_dfd, add_dracut_argv, kver,
--                                 initramfs_path, NULL, &initramfs_tmpf,
--                                 cancellable, error))
-+      /* NB: We only use the real root's /etc if initramfs regeneration is explicitly
-+       * requested. IOW, just replacing the kernel still gets use stock settings, like the
-+       * server side. */
-+      if (!rpmostree_run_dracut (self->tmprootfs_dfd, add_dracut_argv, kver, initramfs_path,
-+                                 rpmostree_origin_get_regenerate_initramfs (self->origin),
-+                                 NULL, &initramfs_tmpf, cancellable, error))
-         return FALSE;
- 
-       if (!rpmostree_finalize_kernel (self->tmprootfs_dfd, bootdir, kver, kernel_path,
-diff --git a/src/libpriv/rpmostree-kernel.c b/src/libpriv/rpmostree-kernel.c
-index d1f0c90c..a1e4546c 100644
---- a/src/libpriv/rpmostree-kernel.c
-+++ b/src/libpriv/rpmostree-kernel.c
-@@ -475,6 +475,7 @@ rpmostree_run_dracut (int     rootfs_dfd,
-                       const char *const* argv,
-                       const char *kver,
-                       const char *rebuild_from_initramfs,
-+                      gboolean     use_root_etc,
-                       GLnxTmpDir  *dracut_host_tmpdir,
-                       GLnxTmpfile *out_initramfs_tmpf,
-                       GCancellable  *cancellable,
-@@ -562,10 +563,7 @@ rpmostree_run_dracut (int     rootfs_dfd,
-                                       &tmpf, error))
-     goto out;
- 
--  /* If we're rebuilding, we use the *current* /etc so we pick up any modified
--   * config files.  Otherwise, we use the usr/etc defaults.
--   */
--  if (rebuild_from_initramfs)
-+  if (use_root_etc)
-     {
-       bwrap = rpmostree_bwrap_new_base (rootfs_dfd, error);
-       if (!bwrap)
-diff --git a/src/libpriv/rpmostree-kernel.h b/src/libpriv/rpmostree-kernel.h
-index fb9d8a1b..32a36511 100644
---- a/src/libpriv/rpmostree-kernel.h
-+++ b/src/libpriv/rpmostree-kernel.h
-@@ -54,6 +54,7 @@ rpmostree_run_dracut (int     rootfs_dfd,
-                       const char *const* argv,
-                       const char *kver,
-                       const char *rebuild_from_initramfs,
-+                      gboolean     use_root_etc,
-                       GLnxTmpDir  *dracut_host_tmpdir,
-                       GLnxTmpfile *out_initramfs_tmpf,
-                       GCancellable  *cancellable,
-diff --git a/src/libpriv/rpmostree-postprocess.c b/src/libpriv/rpmostree-postprocess.c
-index ce7424a1..186817be 100644
---- a/src/libpriv/rpmostree-postprocess.c
-+++ b/src/libpriv/rpmostree-postprocess.c
-@@ -447,7 +447,7 @@ process_kernel_and_initramfs (int            rootfs_dfd,
-       return FALSE;
-     if (!rpmostree_run_dracut (rootfs_dfd,
-                                (const char *const*)dracut_argv->pdata, kver,
--                               NULL, &dracut_host_tmpd,
-+                               NULL, FALSE, &dracut_host_tmpd,
-                                &initramfs_tmpf, cancellable, error))
-       return FALSE;
-     /* No reason to have the initramfs not be world-readable since
-diff --git a/tests/vmcheck/test-override-kernel.sh b/tests/vmcheck/test-override-kernel.sh
-index 0e8c91b7..4bde242a 100755
---- a/tests/vmcheck/test-override-kernel.sh
-+++ b/tests/vmcheck/test-override-kernel.sh
-@@ -60,3 +60,12 @@ assert_streq "$(wc -l < modules-dirs.txt)" "2"
- assert_file_has_content_literal modules-dirs.txt $kernel_release
- 
- echo "ok override kernel"
-+
-+# And check that we can regenerate the initramfs and include files from our /etc
-+vm_cmd touch /etc/foobar.conf
-+vm_rpmostree initramfs --enable --arg=-I --arg=/etc/foobar.conf
-+newroot=$(vm_get_deployment_root 0)
-+vm_cmd lsinitrd ${newroot}/usr/lib/modules/${kernel_release}/initramfs.img > lsinitrd.txt
-+assert_file_has_content_literal lsinitrd.txt etc/foobar.conf
-+
-+echo "ok override kernel with custom initramfs args"
--- 
-2.24.1
-
diff --git a/SOURCES/0001-kargs-Support-append-and-delete-simultaneously.patch b/SOURCES/0001-kargs-Support-append-and-delete-simultaneously.patch
deleted file mode 100644
index e0aa499..0000000
--- a/SOURCES/0001-kargs-Support-append-and-delete-simultaneously.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From f295f543064f1a0b5833fefccd6bb203b3527623 Mon Sep 17 00:00:00 2001
-From: Colin Walters <walters@verbum.org>
-Date: Sun, 17 Nov 2019 15:51:07 +0000
-Subject: [PATCH] kargs: Support --append and --delete simultaneously
-
-Code I wrote for the machine-config-operator expected it to
-work, and I don't see a reason not to support it.
-
-See https://github.com/openshift/machine-config-operator/issues/1265
----
- src/app/rpmostree-builtin-kargs.c         |  6 ------
- src/daemon/rpmostreed-transaction-types.c | 20 ++++++++++----------
- tests/vmcheck/test-kernel-args.sh         |  9 +++++++++
- 3 files changed, 19 insertions(+), 16 deletions(-)
-
-diff --git a/src/app/rpmostree-builtin-kargs.c b/src/app/rpmostree-builtin-kargs.c
-index 359df946..fcfb727a 100644
---- a/src/app/rpmostree-builtin-kargs.c
-+++ b/src/app/rpmostree-builtin-kargs.c
-@@ -196,12 +196,6 @@ rpmostree_builtin_kargs (int            argc,
-                    "Cannot specify both --delete and --replace");
-       return FALSE;
-     }
--  if (opt_kernel_delete_strings && opt_kernel_append_strings)
--    {
--      g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
--                   "Cannot specify both --delete and --append");
--      return FALSE;
--    }
-   if (opt_import_proc_cmdline && opt_deploy_index)
-     {
-       g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
-diff --git a/src/daemon/rpmostreed-transaction-types.c b/src/daemon/rpmostreed-transaction-types.c
-index bc62b6c4..da432b83 100644
---- a/src/daemon/rpmostreed-transaction-types.c
-+++ b/src/daemon/rpmostreed-transaction-types.c
-@@ -2449,20 +2449,20 @@ kernel_arg_transaction_execute (RpmostreedTransaction *transaction,
-             return FALSE;
-         }
-     }
--  else
-+
-+  if (self->kernel_args_replaced)
-     {
--      if (self->kernel_args_replaced)
-+      for (char **iter = self->kernel_args_replaced; iter && *iter; iter++)
-         {
--          for (char **iter = self->kernel_args_replaced; iter && *iter; iter++)
--            {
--              const char *arg = *iter;
--              if (!ostree_kernel_args_new_replace (kargs, arg, error))
--                return FALSE;
--            }
-+          const char *arg = *iter;
-+          if (!ostree_kernel_args_new_replace (kargs, arg, error))
-+            return FALSE;
-         }
-+    }
- 
--      if (self->kernel_args_added)
--        ostree_kernel_args_append_argv (kargs, self->kernel_args_added);
-+  if (self->kernel_args_added)
-+    {
-+      ostree_kernel_args_append_argv (kargs, self->kernel_args_added);
-     }
- 
-   /* After all the arguments are processed earlier, we convert it to a string list*/
-diff --git a/tests/vmcheck/test-kernel-args.sh b/tests/vmcheck/test-kernel-args.sh
-index 570d986a..ca105ae3 100755
---- a/tests/vmcheck/test-kernel-args.sh
-+++ b/tests/vmcheck/test-kernel-args.sh
-@@ -48,6 +48,15 @@ assert_file_has_content_literal kargs.txt 'FOO=BAR'
- assert_file_has_content_literal kargs.txt 'APPENDARG=VALAPPEND APPENDARG=2NDAPPEND'
- echo "ok kargs append"
- 
-+# Ensure the result flows through with rpm-ostree kargs
-+vm_rpmostree kargs --append=APPENDARG=3RDAPPEND --delete=APPENDARG=VALAPPEND
-+vm_rpmostree kargs > kargs.txt
-+assert_not_file_has_content kargs.txt 'APPENDARG=VALAPPEND'
-+assert_file_has_content_literal kargs.txt 'APPENDARG=3RDAPPEND'
-+# And reset to previous state
-+vm_rpmostree cleanup -p
-+echo "ok kargs append and delete"
-+
- # Test for rpm-ostree kargs delete
- vm_kargs_now kargs --delete FOO
- vm_cmd grep ^options /boot/loader/entries/ostree-2-$osname.conf > tmp_conf.txt
--- 
-2.24.1
-
diff --git a/SOURCES/0001-libpriv-kernel-Use-g_build_filename-instead-of-g_str.patch b/SOURCES/0001-libpriv-kernel-Use-g_build_filename-instead-of-g_str.patch
deleted file mode 100644
index 6965c4b..0000000
--- a/SOURCES/0001-libpriv-kernel-Use-g_build_filename-instead-of-g_str.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 6aa496e3128321f911dae10bf1a0f32c5e9a11fd Mon Sep 17 00:00:00 2001
-From: Jonathan Lebon <jonathan@jlebon.com>
-Date: Tue, 29 Oct 2019 16:38:56 -0400
-Subject: [PATCH 1/2] libpriv/kernel: Use g_build_filename instead of
- g_strconcat
-
-It's much easier to mess up with the latter than the former when
-building filenames. There's a bunch more all over the codebase; just did
-this bit to be consistent with the next commit which also uses it.
----
- src/libpriv/rpmostree-kernel.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/libpriv/rpmostree-kernel.c b/src/libpriv/rpmostree-kernel.c
-index 9eb052bd..2266f9c7 100644
---- a/src/libpriv/rpmostree-kernel.c
-+++ b/src/libpriv/rpmostree-kernel.c
-@@ -353,7 +353,7 @@ rpmostree_finalize_kernel (int rootfs_dfd,
-                            GError **error)
- {
-   const char slash_bootdir[] = "boot";
--  g_autofree char *modules_bootdir = g_strconcat ("usr/lib/modules/", kver, NULL);
-+  g_autofree char *modules_bootdir = g_build_filename ("usr/lib/modules", kver, NULL);
- 
-   /* Calculate the sha256sum of the kernel+initramfs (called the "boot
-    * checksum"). We checksum the initramfs from the tmpfile fd (via mmap()) to
-@@ -371,7 +371,7 @@ rpmostree_finalize_kernel (int rootfs_dfd,
-   }
-   const char *boot_checksum_str = g_checksum_get_string (boot_checksum);
- 
--  g_autofree char *kernel_modules_path = g_strconcat (modules_bootdir, "/vmlinuz", NULL);;
-+  g_autofree char *kernel_modules_path = g_build_filename (modules_bootdir, "vmlinuz", NULL);
-   /* It's possible the bootdir is already the modules directory; in that case,
-    * we don't need to rename.
-    */
-@@ -394,7 +394,7 @@ rpmostree_finalize_kernel (int rootfs_dfd,
-     }
- 
-   /* Replace the initramfs */
--  g_autofree char *initramfs_modules_path = g_strconcat (modules_bootdir, "/initramfs.img", NULL);
-+  g_autofree char *initramfs_modules_path = g_build_filename (modules_bootdir, "initramfs.img", NULL);
-   if (unlinkat (rootfs_dfd, initramfs_modules_path, 0) < 0)
-     {
-       if (errno != ENOENT)
--- 
-2.21.0
-
diff --git a/SOURCES/0001-libpriv-kernel-add-cap_mknod-to-dracut-run.patch b/SOURCES/0001-libpriv-kernel-add-cap_mknod-to-dracut-run.patch
deleted file mode 100644
index bbe19f6..0000000
--- a/SOURCES/0001-libpriv-kernel-add-cap_mknod-to-dracut-run.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 3b8a1ec6c400a4e5af0f7f5889b360d2ed16f572 Mon Sep 17 00:00:00 2001
-From: Jonathan Lebon <jonathan@jlebon.com>
-Date: Tue, 3 Dec 2019 21:36:40 -0500
-Subject: [PATCH] libpriv/kernel: add cap_mknod to dracut run
-
-A lot of history with this. But essentially, dracut tries to `mknod` a
-few character devices like `/dev/random` and `/dev/urandom` and fails.
-
-We originally blocked `cap_mknod` because, well, `%post` scripts don't
-really need to do that, and it would get wiped anyway. But there is a
-use case for dracut's CPIO: we want `/dev/*random` to be available in
-early boot *before* systemd even mounts `devtmpfs` because libgcrypt as
-part of its constructor-time selftests in FIPS mode wants to read from
-there.
-
-For more fun, see:
-https://bugzilla.redhat.com/show_bug.cgi?id=1778940
-https://bugzilla.redhat.com/show_bug.cgi?id=1401444
-https://bugzilla.redhat.com/show_bug.cgi?id=1380866
----
- src/libpriv/rpmostree-kernel.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/src/libpriv/rpmostree-kernel.c b/src/libpriv/rpmostree-kernel.c
-index 2bea504c..a7fffcb6 100644
---- a/src/libpriv/rpmostree-kernel.c
-+++ b/src/libpriv/rpmostree-kernel.c
-@@ -564,6 +564,12 @@ rpmostree_run_dracut (int     rootfs_dfd,
-       rpmostree_bwrap_bind_read (bwrap, "usr", "/usr");
-     }
- 
-+  /* Need to let dracut create devices like /dev/urandom:
-+   * https://bugzilla.redhat.com/show_bug.cgi?id=1778940
-+   * https://bugzilla.redhat.com/show_bug.cgi?id=1401444
-+   * https://bugzilla.redhat.com/show_bug.cgi?id=1380866 */
-+  rpmostree_bwrap_append_bwrap_argv (bwrap, "--cap-add", "cap_mknod", NULL);
-+
-   if (dracut_host_tmpdir)
-     rpmostree_bwrap_bind_readwrite (bwrap, dracut_host_tmpdir->path, "/tmp/dracut");
- 
--- 
-2.23.0
-
diff --git a/SOURCES/0001-status-Quote-initramfs-args-if-necessary.patch b/SOURCES/0001-status-Quote-initramfs-args-if-necessary.patch
deleted file mode 100644
index a86da9a..0000000
--- a/SOURCES/0001-status-Quote-initramfs-args-if-necessary.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 14701be788420dcd8b1ed4be0e031bc034627e9c Mon Sep 17 00:00:00 2001
-From: Jonathan Lebon <jonathan@jlebon.com>
-Date: Wed, 26 Feb 2020 11:14:50 -0500
-Subject: [PATCH] status: Quote initramfs args if necessary
-
-E.g. if it contains spaces as is the case when one does
-`rpm-ostree initramfs --arg=-I --arg='/file1 /file2'`.
----
- src/app/rpmostree-builtin-status.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/app/rpmostree-builtin-status.c b/src/app/rpmostree-builtin-status.c
-index 8b38fc83..09dcd94a 100644
---- a/src/app/rpmostree-builtin-status.c
-+++ b/src/app/rpmostree-builtin-status.c
-@@ -856,7 +856,9 @@ print_one_deployment (RPMOSTreeSysroot *sysroot_proxy,
- 
-       for (char **iter = initramfs_args; iter && *iter; iter++)
-         {
--          g_string_append (buf, *iter);
-+          const char *arg = *iter;
-+          g_autofree char *quoted = rpmostree_maybe_shell_quote (arg);
-+          g_string_append (buf, quoted ?: arg);
-           g_string_append_c (buf, ' ');
-         }
-       if (buf->len == 0)
--- 
-2.24.1
-
diff --git a/SOURCES/0001-unpacker-Build-with-older-libarchive-without-zstd.patch b/SOURCES/0001-unpacker-Build-with-older-libarchive-without-zstd.patch
deleted file mode 100644
index 0e993bb..0000000
--- a/SOURCES/0001-unpacker-Build-with-older-libarchive-without-zstd.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 11ee20c1cdcc7a76d9e1047e8063b8349a6c6da6 Mon Sep 17 00:00:00 2001
-From: Colin Walters <walters@verbum.org>
-Date: Tue, 15 Oct 2019 15:16:06 +0000
-Subject: [PATCH] unpacker: Build with older libarchive without zstd
-
-It's not in RHEL8.1, and I'm trying to rebase rpm-ostree.
----
- configure.ac                          | 4 ++++
- src/libpriv/rpmostree-unpacker-core.c | 2 ++
- 2 files changed, 6 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index 873dc6b9..a0c5cce4 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -122,6 +122,10 @@ dnl bundled libdnf
- PKGDEP_RPMOSTREE_CFLAGS="-I $(pwd)/libdnf -I $(pwd)/libdnf-build $PKGDEP_RPMOSTREE_CFLAGS"
- PKGDEP_RPMOSTREE_LIBS="-L$(pwd)/libdnf-build/libdnf -ldnf $PKGDEP_RPMOSTREE_LIBS"
- 
-+dnl RHEL8.1 has old libarchive
-+AS_IF([pkg-config --atleast-version=3.3.3 libarchive],
-+  [AC_DEFINE([HAVE_LIBARCHIVE_ZSTD], 1, [Define if we have libarchive with zstd])])
-+
- dnl This is the current version in Fedora 25.
- AS_IF([pkg-config --atleast-version=4.14.2 rpm], [], [AC_MSG_ERROR([librpm 4.14.2 required])])
- 
-diff --git a/src/libpriv/rpmostree-unpacker-core.c b/src/libpriv/rpmostree-unpacker-core.c
-index 3bd574a4..2d741b1e 100644
---- a/src/libpriv/rpmostree-unpacker-core.c
-+++ b/src/libpriv/rpmostree-unpacker-core.c
-@@ -74,7 +74,9 @@ rpmostree_unpack_rpm2cpio (int fd, GError **error)
-         archive_read_support_filter_gzip,
-         archive_read_support_filter_xz,
-         archive_read_support_filter_bzip2,
-+#ifdef HAVE_LIBARCHIVE_ZSTD
-         archive_read_support_filter_zstd,
-+#endif
-         archive_read_support_format_cpio };
- 
-     for (i = 0; i < G_N_ELEMENTS (archive_setup_funcs); i++)
--- 
-2.21.0
-
diff --git a/SOURCES/0002-libpriv-kernel-Hack-around-vmlinuz-path-in-HMAC-file.patch b/SOURCES/0002-libpriv-kernel-Hack-around-vmlinuz-path-in-HMAC-file.patch
deleted file mode 100644
index c797777..0000000
--- a/SOURCES/0002-libpriv-kernel-Hack-around-vmlinuz-path-in-HMAC-file.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From fec61ce5778910bac7779191ee8deeb0a24593c8 Mon Sep 17 00:00:00 2001
-From: Jonathan Lebon <jonathan@jlebon.com>
-Date: Tue, 29 Oct 2019 16:40:39 -0400
-Subject: [PATCH 2/2] libpriv/kernel: Hack around vmlinuz path in HMAC file
-
-As mentioned in the comment block:
-
-```
-If there's an HMAC file, fix the path to the kernel in it to be
-relative. Right now, the kernel spec encodes `/boot/vmlinux-$kver`,
-which of course not going to work for us. We should work towards making
-this change directly into the kernel spec.
-```
-
-For background, see this comment and following:
-https://github.com/ostreedev/ostree/pull/1962#issuecomment-547488164
----
- src/libpriv/rpmostree-kernel.c | 32 ++++++++++++++++++++++++++++++++
- 1 file changed, 32 insertions(+)
-
-diff --git a/src/libpriv/rpmostree-kernel.c b/src/libpriv/rpmostree-kernel.c
-index 2266f9c7..2bea504c 100644
---- a/src/libpriv/rpmostree-kernel.c
-+++ b/src/libpriv/rpmostree-kernel.c
-@@ -393,6 +393,38 @@ rpmostree_finalize_kernel (int rootfs_dfd,
-         return glnx_throw_errno_prefix (error, "linkat(%s)", kernel_modules_path);
-     }
- 
-+  /* If there's an HMAC file, fix the path to the kernel in it to be relative. Right now,
-+   * the kernel spec encodes `/boot/vmlinux-$kver`, which of course not going to work for
-+   * us. We should work towards making this change directly into the kernel spec. */
-+  g_autofree char *hmac_path = g_build_filename (modules_bootdir, ".vmlinuz.hmac", NULL);
-+  if (!glnx_fstatat_allow_noent (rootfs_dfd, hmac_path, NULL, 0, error))
-+    return FALSE;
-+  if (errno == 0)
-+    {
-+      g_autofree char *contents = glnx_file_get_contents_utf8_at (rootfs_dfd, hmac_path,
-+                                                                  NULL, cancellable, error);
-+      if (contents == NULL)
-+        return FALSE;
-+
-+      /* rather than trying to parse and understand the *sum format, just hackily replace */
-+      g_autofree char *old_path = g_strconcat ("  /boot/vmlinuz-", kver, NULL);
-+      g_autofree char *new_path = g_strconcat ("  vmlinuz-", kver, NULL);
-+      g_autofree char *new_contents =
-+        rpmostree_str_replace (contents, old_path, new_path, error);
-+      if (!new_contents)
-+        return FALSE;
-+
-+      /* sanity check there are no '/' in there; that way too we just error out if the path
-+       * or format changes (but really, this should be a temporary hack...) */
-+      if (strchr (new_contents, '/') != 0)
-+        return glnx_throw (error, "Unexpected / in .vmlinuz.hmac: %s", new_contents);
-+
-+      if (!glnx_file_replace_contents_at (rootfs_dfd, hmac_path,
-+                                          (guint8*)new_contents, -1, 0,
-+                                          cancellable, error))
-+        return FALSE;
-+    }
-+
-   /* Replace the initramfs */
-   g_autofree char *initramfs_modules_path = g_build_filename (modules_bootdir, "initramfs.img", NULL);
-   if (unlinkat (rootfs_dfd, initramfs_modules_path, 0) < 0)
--- 
-2.21.0
-
diff --git a/SPECS/rpm-ostree.spec b/SPECS/rpm-ostree.spec
index 105be69..6c85498 100644
--- a/SPECS/rpm-ostree.spec
+++ b/SPECS/rpm-ostree.spec
@@ -3,8 +3,8 @@
 
 Summary: Hybrid image/package system
 Name: rpm-ostree
-Version: 2019.6
-Release: 8%{?dist}
+Version: 2020.2
+Release: 2%{?dist}
 #VCS: https://github.com/cgwalters/rpm-ostree
 # This tarball is generated via "cd packaging && make -f Makefile.dist-packaging dist-snapshot"
 # in the upstream git.  If rust is enabled, it contains vendored sources.
@@ -12,15 +12,6 @@ Source0: rpm-ostree-%{version}.tar.xz
 License: LGPLv2+
 URL: https://github.com/projectatomic/rpm-ostree
 
-Patch0: 0001-app-status-Fix-printf-format-string-for-32-bit.patch
-Patch1: 0001-unpacker-Build-with-older-libarchive-without-zstd.patch
-Patch2: 0001-libpriv-kernel-Use-g_build_filename-instead-of-g_str.patch
-Patch3: 0002-libpriv-kernel-Hack-around-vmlinuz-path-in-HMAC-file.patch
-Patch4: 0001-libpriv-kernel-add-cap_mknod-to-dracut-run.patch
-Patch5: 0001-kargs-Support-append-and-delete-simultaneously.patch
-Patch6: 0001-status-Quote-initramfs-args-if-necessary.patch
-Patch7: 0001-initramfs-Fix-using-local-etc-when-also-replacing-ke.patch 
-
 %if !%{defined rust_arches}
 # It's not defined yet in the base CentOS7 root
 %define rust_arches x86_64 i686 armv7hl aarch64 ppc64 ppc64le s390x
@@ -28,6 +19,8 @@ Patch7: 0001-initramfs-Fix-using-local-etc-when-also-replacing-ke.patch
 
 ExclusiveArch: %{rust_arches}
 
+Patch0: 0001-build-sys-Disable-zchunk-for-libdnf-if-we-don-t-have.patch
+
 %if 0%{?fedora}
 BuildRequires: cargo
 BuildRequires: rust
@@ -81,16 +74,15 @@ BuildRequires: gcc-c++
 
 # more libdnf build deps (see libdnf's spec for versions)
 %global swig_version 3.0.12
-%global libmodulemd_version 1.6.1
 BuildRequires:  swig >= %{swig_version}
-BuildRequires:  pkgconfig(modulemd) >= %{libmodulemd_version}
+BuildRequires:  pkgconfig(modulemd-2.0)
 BuildRequires:  pkgconfig(json-c)
 BuildRequires:  pkgconfig(cppunit)
 BuildRequires:  pkgconfig(sqlite3)
 BuildRequires:  pkgconfig(smartcols)
 BuildRequires:  gpgme-devel
 
-Requires:       libmodulemd1%{?_isa} >= %{libmodulemd_version}
+Requires:       libmodulemd1%{?_isa}
 
 # For now...see https://github.com/projectatomic/rpm-ostree/pull/637
 # and https://github.com/fedora-infra/fedmsg-atomic-composer/pull/17
@@ -193,6 +185,10 @@ $PYTHON autofiles.py > files.devel \
 %files devel -f files.devel
 
 %changelog
+* Fri May 15 2020 Colin Walters <walters@verbum.org> - 2020.2-2
+- https://github.com/coreos/rpm-ostree/releases/tag/v2020.2
+  Resolves: #1827712
+
 * Tue Mar 03 2020 Colin Walters <walters@verbum.org> - 2019.6-8
 - Backport patches for initramfs /etc
   Resolves: #1808459