diff --git a/.gitignore b/.gitignore
index 32c290c..460acbe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/rpm-ostree-2021.14.tar.xz
+SOURCES/rpm-ostree-2022.8.tar.xz
diff --git a/.rpm-ostree.metadata b/.rpm-ostree.metadata
index d0ace46..eb2531e 100644
--- a/.rpm-ostree.metadata
+++ b/.rpm-ostree.metadata
@@ -1 +1 @@
-600773ce823ad028fc3668c9c9c015e98c80d5dc SOURCES/rpm-ostree-2021.14.tar.xz
+2f9c289889f50ee77b2c354f8722e239e5c8d42a SOURCES/rpm-ostree-2022.8.tar.xz
diff --git a/SOURCES/0001-rust-scripts-Ignore-kernel-automotive-core.posttrans.patch b/SOURCES/0001-rust-scripts-Ignore-kernel-automotive-core.posttrans.patch
new file mode 100644
index 0000000..904d6d2
--- /dev/null
+++ b/SOURCES/0001-rust-scripts-Ignore-kernel-automotive-core.posttrans.patch
@@ -0,0 +1,40 @@
+From 34cdfd6e055e79a659364c5c97ee300d1672379a Mon Sep 17 00:00:00 2001
+From: Jonathan Lebon <jonathan@jlebon.com>
+Date: Thu, 2 Jun 2022 11:39:55 -0400
+Subject: [PATCH] rust/scripts: Ignore `kernel-automotive-core.posttrans`
+
+Yet another kernel package variant whose %posttrans we want to ignore.
+
+As mentioned in there, I think we should change the strategy so that we
+detect kernel packages like we do in the core based on its `Provides` to
+know to ignore %posttrans.
+
+Alternatively/additionally, we should work with kernel and systemd teams
+so that e.g. it short-circuits if it detects an "offline" system. That
+would also benefit containers, which AFAIK even today runs dracut on
+kernel installs.
+
+Closes: #3720
+---
+ rust/src/scripts.rs | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/rust/src/scripts.rs b/rust/src/scripts.rs
+index 3b15c629..1f59e390 100644
+--- a/rust/src/scripts.rs
++++ b/rust/src/scripts.rs
+@@ -18,9 +18,11 @@ use phf::phf_set;
+ static IGNORED_PKG_SCRIPTS: phf::Set<&'static str> = phf_set! {
+     "glibc.prein",
+     // We take over depmod/dracut etc.  It's `kernel` in C7 and kernel-core in F25+
++    // XXX: we should probably change this to instead ignore based on the kernel virtual Provides
+     "kernel.posttrans",
+     "kernel-core.posttrans",
+     "kernel-debug-core.posttrans",
++    "kernel-automotive-core.posttrans",
+     // Additionally ignore posttrans scripts for the Oracle Linux `kernel-uek` package
+     "kernel-uek.posttrans",
+     // Legacy workaround
+-- 
+2.36.1
+
diff --git a/SPECS/rpm-ostree.spec b/SPECS/rpm-ostree.spec
index c979f3a..0535e36 100644
--- a/SPECS/rpm-ostree.spec
+++ b/SPECS/rpm-ostree.spec
@@ -3,13 +3,14 @@
 
 Summary: Hybrid image/package system
 Name: rpm-ostree
-Version: 2021.14
+Version: 2022.8
 Release: 3%{?dist}
 License: LGPLv2+
 URL: https://github.com/coreos/rpm-ostree
 # This tarball is generated via "cd packaging && make -f Makefile.dist-packaging dist-snapshot"
 # in the upstream git.  It also contains vendored Rust sources.
 Source0: https://github.com/coreos/rpm-ostree/releases/download/v%{version}/rpm-ostree-%{version}.tar.xz
+Patch0: 0001-rust-scripts-Ignore-kernel-automotive-core.posttrans.patch
 
 ExclusiveArch: %{rust_arches}
 
@@ -24,6 +25,8 @@ BuildRequires: rust
 
 # Enable ASAN + UBSAN
 %bcond_with sanitizers
+# Embedded unit tests
+%bcond_with bin_unit_tests
 
 # RHEL (8,9) doesn't ship zchunk today.  Keep this in sync
 # with libdnf: https://gitlab.com/redhat/centos-stream/rpms/libdnf/-/blob/762f631e36d1e42c63a794882269d26c156b68c1/libdnf.spec#L45
@@ -33,10 +36,6 @@ BuildRequires: rust
 %bcond_without zchunk
 %endif
 
-%if 0%{?fedora} >= 34
-%define sqlite_rpmdb_default "--enable-sqlite-rpmdb-default"
-%endif
-
 # For the autofiles bits below
 BuildRequires: /usr/bin/python3
 # We always run autogen.sh
@@ -51,7 +50,7 @@ BuildRequires: /usr/bin/g-ir-scanner
 BuildRequires: pkgconfig(ostree-1) >= 2021.5
 BuildRequires: pkgconfig(polkit-gobject-1)
 BuildRequires: pkgconfig(json-glib-1.0)
-BuildRequires: pkgconfig(rpm) >= 4.16.0
+BuildRequires: pkgconfig(rpm) >= 4.14.0
 BuildRequires: pkgconfig(libarchive)
 BuildRequires: pkgconfig(libsystemd)
 BuildRequires: libcap-devel
@@ -72,33 +71,57 @@ BuildRequires: pkgconfig(check)
 # but duplicating to be clear)
 BuildRequires: pkgconfig(libsolv)
 
-# We need g++ for libdnf
-BuildRequires: gcc-c++
+# These are build deps which aren't strictly required in Koji/Brew builds, but
+# are required for git builds. Since they're few and tiny, we just add it here
+# to keep it part of `dnf builddep`.
+BuildRequires: jq
+
+#########################################################################
+#                         libdnf build deps                             #
+#                                                                       #
+# Copy/pasted from libdnf/libdnf.spec. Removed the irrelevant bits like #
+# valgrind, rhsm, swig, python, and sanitizer stuff.                    #
+#########################################################################
 
 
-# more libdnf build deps (see libdnf's spec for versions; maintain ordering)
 %global libsolv_version 0.7.17
-%global libmodulemd_version 2.11.2-2
-%global librepo_version 1.13.0
-%global swig_version 3.0.12
-BuildRequires:  swig >= %{swig_version}
-BuildRequires:  pkgconfig(modulemd-2.0) >= %{libmodulemd_version}
-BuildRequires:  pkgconfig(librepo) >= %{librepo_version}
+%global libmodulemd_version 2.13.0
+%global librepo_version 1.13.1
+
+BuildRequires:  cmake
+BuildRequires:  gcc
+BuildRequires:  gcc-c++
 BuildRequires:  libsolv-devel >= %{libsolv_version}
-BuildRequires:  pkgconfig(json-c)
-BuildRequires:  pkgconfig(cppunit)
-BuildRequires:  pkgconfig(sqlite3)
-BuildRequires:  pkgconfig(smartcols)
+BuildRequires:  pkgconfig(librepo) >= %{librepo_version}
+BuildRequires:  pkgconfig(check)
+BuildRequires:  pkgconfig(gio-unix-2.0) >= 2.46.0
+BuildRequires:  pkgconfig(gtk-doc)
+BuildRequires:  rpm-devel >= 4.11.0
 %if %{with zchunk}
 BuildRequires:  pkgconfig(zck) >= 0.9.11
 %endif
+BuildRequires:  pkgconfig(sqlite3)
+BuildRequires:  pkgconfig(json-c)
+BuildRequires:  pkgconfig(cppunit)
+BuildRequires:  pkgconfig(libcrypto)
+BuildRequires:  pkgconfig(modulemd-2.0) >= %{libmodulemd_version}
+BuildRequires:  pkgconfig(smartcols)
+BuildRequires:  gettext
 BuildRequires:  gpgme-devel
+%if 0%{?rhel} <= 8
+# In current Fedora, this is a dependency of gpgme-devel, but
+# not in RHEL8.  Missing this package breaks -znow.
+BuildRequires:  libassuan-devel
+%endif
 
-# Runtime libdnf deps
 Requires:       libmodulemd%{?_isa} >= %{libmodulemd_version}
 Requires:       libsolv%{?_isa} >= %{libsolv_version}
 Requires:       librepo%{?_isa} >= %{librepo_version}
 
+#########################################################################
+#                     end of libdnf build deps                          #
+#########################################################################
+
 # For now...see https://github.com/projectatomic/rpm-ostree/pull/637
 # and https://github.com/fedora-infra/fedmsg-atomic-composer/pull/17
 # etc.  We'll drop this dependency at some point in the future when
@@ -107,6 +130,10 @@ Requires: ostree
 Requires: bubblewrap
 Requires: fuse
 
+# For container functionality
+# https://github.com/coreos/rpm-ostree/issues/3286
+Recommends: skopeo
+
 Requires: %{name}-libs%{?_isa} = %{version}-%{release}
 
 %description
@@ -132,10 +159,8 @@ The %{name}-devel package includes the header files for %{name}-libs.
 
 %prep
 %autosetup -Sgit -n %{name}-%{version}
-# We hit "LLVM ERROR: out of memory" with LTO on 32 bit 
-# https://bugzilla.redhat.com/show_bug.cgi?id=1974927
 %if 0%{?__isa_bits} == 32
-sed -ie 's,^lto = true,# disabled: lto = true,' Cargo.toml
+sed -ie 's,^lto = true,lto = false,' Cargo.toml
 %endif
 
 %build
@@ -146,7 +171,7 @@ env NOCONFIGURE=1 ./autogen.sh
 %if 0%{?build_rustflags:1}
 export RUSTFLAGS="%{build_rustflags}"
 %endif
-%configure --disable-silent-rules --enable-gtk-doc %{?sqlite_rpmdb_default} %{?with_sanitizers:--enable-sanitizers}
+%configure --disable-silent-rules --enable-gtk-doc %{?rpmdb_default} %{?with_sanitizers:--enable-sanitizers}  %{?with_bin_unit_tests:--enable-bin-unit-tests}
 
 %make_build
 
@@ -188,8 +213,9 @@ $PYTHON autofiles.py > files \
   '%{_sysconfdir}/rpm-ostreed.conf' \
   '%{_prefix}/lib/systemd/system/*' \
   '%{_libexecdir}/rpm-ostree*' \
+  '%{_libexecdir}/libostree/ext/*' \
   '%{_datadir}/polkit-1/actions/*.policy' \
-  '%{_datadir}/dbus-1/system-services' \
+  '%{_datadir}/dbus-1/system-services/*' \
   '%{_datadir}/bash-completion/completions/*'
 
 $PYTHON autofiles.py > files.lib \
@@ -210,8 +236,26 @@ $PYTHON autofiles.py > files.devel \
 %files libs -f files.lib
 
 %files devel -f files.devel
-
 %changelog
+* Thu Jun 09 2022 Jonathan Lebon <jonathan@jlebon.com> - 2022.8-3
+- Backport https://github.com/coreos/rpm-ostree/pull/3721
+  Resolves: rhbz#2094085
+
+* Thu Apr 21 2022 Colin Walters <walters@verbum.org> - 2022.8-2
+- https://github.com/coreos/rpm-ostree/releases/tag/v2022.8
+  Resolves: rhbz#2077062
+  Resolves: rhbz#2023325
+
+* Mon Apr 11 2022 Colin Walters <walters@verbum.org> - 2022.7-2
+- https://github.com/coreos/rpm-ostree/releases/tag/v2022.7
+
+* Mon Feb 07 2022 Colin Walters <walters@verbum.org> - 2022.2-2
+- Rebase to 2022.2
+
+* Mon Jan 10 2022 Colin Walters <walters@verbum.org> - 2022.1-2
+- Rebase to 2022.1
+  Resolves: rhbz#2027476
+
 * Wed Dec 01 2021 Colin Walters <walters@verbum.org> - 2021.14-3
 - Drop zchunk dependency
   Resolves: rhbz#2028167