diff --git a/SOURCES/0001-Grub-support-in-kernel-command-line-option-names-647.patch b/SOURCES/0001-Grub-support-in-kernel-command-line-option-names-647.patch
index 7b60bff..fae00df 100644
--- a/SOURCES/0001-Grub-support-in-kernel-command-line-option-names-647.patch
+++ b/SOURCES/0001-Grub-support-in-kernel-command-line-option-names-647.patch
@@ -1,7 +1,8 @@
-From 800b8bb56b983e00f2c95183d0ff226172545d35 Mon Sep 17 00:00:00 2001
+From e666bf968071a9976bd44e1eb65645eb9d51b5cb Mon Sep 17 00:00:00 2001
 From: Pino Toscano <ptoscano@redhat.com>
 Date: Wed, 23 Oct 2019 11:35:57 +0200
-Subject: [PATCH] Grub: support '+' in kernel command line option names (#647)
+Subject: [PATCH 1/9] Grub: support '+' in kernel command line option names
+ (#647)
 
 This way it is possible to parse files that pass options with '+' in the
 name to the kernel.
@@ -54,5 +55,5 @@ index 75657203..e50bdc4f 100644
    test Grub.lns get "default=0\ncrud=no\n" =
    { "default" = "0" }
 -- 
-2.29.2
+2.31.1
 
diff --git a/SOURCES/0002-Rsyslog-support-multiple-actions-in-filters-and-sele.patch b/SOURCES/0002-Rsyslog-support-multiple-actions-in-filters-and-sele.patch
index 1746c94..a8a678f 100644
--- a/SOURCES/0002-Rsyslog-support-multiple-actions-in-filters-and-sele.patch
+++ b/SOURCES/0002-Rsyslog-support-multiple-actions-in-filters-and-sele.patch
@@ -1,8 +1,8 @@
-From 612010470f4217b447b5ed5fe964fce1d895566a Mon Sep 17 00:00:00 2001
+From eb2dc4ec0879290f42e35a7facc345ca1c70ba69 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Rapha=C3=ABl=20Pinson?= <raphael.pinson@camptocamp.com>
 Date: Tue, 12 Nov 2019 13:33:26 +0100
-Subject: [PATCH] Rsyslog: support multiple actions in filters and selectors
- (#653)
+Subject: [PATCH 2/9] Rsyslog: support multiple actions in filters and
+ selectors (#653)
 
 (cherry picked from commit 5181105bae84dc7819a00886f068ad0bb4e6d05a)
 ---
@@ -90,5 +90,5 @@ index 9011a2b3..e83613a2 100644
 +  {  }
 +
 -- 
-2.29.2
+2.31.1
 
diff --git a/SOURCES/0003-src-augrun.c-nexttoken-add-more-escape-characters.patch b/SOURCES/0003-src-augrun.c-nexttoken-add-more-escape-characters.patch
index 892159e..0f13f1b 100644
--- a/SOURCES/0003-src-augrun.c-nexttoken-add-more-escape-characters.patch
+++ b/SOURCES/0003-src-augrun.c-nexttoken-add-more-escape-characters.patch
@@ -1,7 +1,7 @@
-From d37c8aabc29c3989d5f961d8b742b246a5f64cdf Mon Sep 17 00:00:00 2001
+From 5218c2997b7b77752511ebc61ffa743fd2d8fcbf Mon Sep 17 00:00:00 2001
 From: Pino Toscano <ptoscano@redhat.com>
 Date: Fri, 17 May 2019 13:47:20 +0200
-Subject: [PATCH] * src/augrun.c (nexttoken): add more escape characters
+Subject: [PATCH 3/9] * src/augrun.c (nexttoken): add more escape characters
 
 Synchonize the list of "pass-through" characters with the set in the
 'name_follow' variable in pathx.c: as pathx_escape_name() escapes them,
@@ -33,5 +33,5 @@ index 07f865a9..fd710c5f 100644
                      break;
                  case 't':  /* insert tab */
 -- 
-2.29.2
+2.31.1
 
diff --git a/SOURCES/0004-src-augtool.c-hopefully-fix-readline-quoting-issues.patch b/SOURCES/0004-src-augtool.c-hopefully-fix-readline-quoting-issues.patch
index a6c425b..e08ef90 100644
--- a/SOURCES/0004-src-augtool.c-hopefully-fix-readline-quoting-issues.patch
+++ b/SOURCES/0004-src-augtool.c-hopefully-fix-readline-quoting-issues.patch
@@ -1,7 +1,7 @@
-From f224dd99c7dc4d2ce4340b2d16cae6b1e0ed7c8d Mon Sep 17 00:00:00 2001
+From fc2b84a2ecd9a403cb602d2de26d6c1804a3ceac Mon Sep 17 00:00:00 2001
 From: Pino Toscano <ptoscano@redhat.com>
 Date: Fri, 17 May 2019 15:18:50 +0200
-Subject: [PATCH] * src/augtool.c: hopefully fix readline quoting issues
+Subject: [PATCH 4/9] * src/augtool.c: hopefully fix readline quoting issues
 
 Configure the quoting (also using a detector) and word break characters,
 so it is possible to autocomplete paths with special characters (like
@@ -38,5 +38,5 @@ index b42ef630..31a991eb 100644
      /* Set up persistent history */
      char *home_dir = get_home_dir(getuid());
 -- 
-2.29.2
+2.31.1
 
diff --git a/SOURCES/0005-Krb5-improve-dbmodules-and-includes-630.patch b/SOURCES/0005-Krb5-improve-dbmodules-and-includes-630.patch
index b310c8b..502b4e1 100644
--- a/SOURCES/0005-Krb5-improve-dbmodules-and-includes-630.patch
+++ b/SOURCES/0005-Krb5-improve-dbmodules-and-includes-630.patch
@@ -1,7 +1,7 @@
-From 63786a83b2e4b14772ee8742fa95d70063ba7b6c Mon Sep 17 00:00:00 2001
+From 1b4d6a9918b8bcbc06af4ce99a48cd66fed97196 Mon Sep 17 00:00:00 2001
 From: Pino Toscano <ptoscano@redhat.com>
 Date: Tue, 4 Feb 2020 17:54:22 +0100
-Subject: [PATCH] Krb5: improve [dbmodules] and includes (#630)
+Subject: [PATCH 5/9] Krb5: improve [dbmodules] and includes (#630)
 
 * Krb5: fix/revamp parsing of [dbmodules] subsection
 
@@ -129,5 +129,5 @@ index f746543b..10b87605 100644
 +    { "db_module_dir" = "/some/path" }
 +  }
 -- 
-2.29.2
+2.31.1
 
diff --git a/SOURCES/0006-Systemd-fix-parsing-of-envvars-with-spaces-659.patch b/SOURCES/0006-Systemd-fix-parsing-of-envvars-with-spaces-659.patch
index cfb0439..ac8a0c0 100644
--- a/SOURCES/0006-Systemd-fix-parsing-of-envvars-with-spaces-659.patch
+++ b/SOURCES/0006-Systemd-fix-parsing-of-envvars-with-spaces-659.patch
@@ -1,7 +1,7 @@
-From 472a143b427afc89ab2fd843cea1f1f97193ceef Mon Sep 17 00:00:00 2001
+From eb7c72cfffa5360a65be270c5554abf36739e382 Mon Sep 17 00:00:00 2001
 From: Pino Toscano <ptoscano@redhat.com>
 Date: Tue, 4 Feb 2020 18:05:05 +0100
-Subject: [PATCH] Systemd: fix parsing of envvars with spaces (#659)
+Subject: [PATCH 6/9] Systemd: fix parsing of envvars with spaces (#659)
 
 Allow spaces inside of values quoted with single or double quotes.
 
@@ -55,5 +55,5 @@ index 3397456e..19c57075 100644
  
  (* Variable: unit *)
 -- 
-2.29.2
+2.31.1
 
diff --git a/SOURCES/0007-Ssh-add-Match-keyword-support-695.patch b/SOURCES/0007-Ssh-add-Match-keyword-support-695.patch
index cd6178f..7b4a698 100644
--- a/SOURCES/0007-Ssh-add-Match-keyword-support-695.patch
+++ b/SOURCES/0007-Ssh-add-Match-keyword-support-695.patch
@@ -1,7 +1,7 @@
-From 0880cf38e5c9a6a9ddb3ce4cae372dec5ad34cbe Mon Sep 17 00:00:00 2001
+From efd61b77563489ca0fa21904cc1fecfc482afd06 Mon Sep 17 00:00:00 2001
 From: granquet <ranquet.guillaume@gmail.com>
 Date: Tue, 6 Oct 2020 23:03:18 +0200
-Subject: [PATCH] Ssh: add Match keyword support (#695)
+Subject: [PATCH 7/9] Ssh: add Match keyword support (#695)
 
 Signed-off-by: Guillaume Ranquet <guillaume-externe.ranquet@edf.fr>
 ---
@@ -81,5 +81,5 @@ index f5fca252..456624e4 100644
  	{ "ForwardAgent"  = "yes" }
  	{ "SendEnv"
 -- 
-2.29.2
+2.31.1
 
diff --git a/SOURCES/0008-Include-mke2fs-lens-and-test-from-upstream.patch b/SOURCES/0008-Include-mke2fs-lens-and-test-from-upstream.patch
new file mode 100644
index 0000000..5502abc
--- /dev/null
+++ b/SOURCES/0008-Include-mke2fs-lens-and-test-from-upstream.patch
@@ -0,0 +1,251 @@
+From 59fb794a4c47b811998273323cd49cc91f9db7e2 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones@redhat.com>
+Date: Wed, 12 Jan 2022 16:11:22 +0000
+Subject: [PATCH 8/9] Include mke2fs lens and test from upstream
+
+Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1807010
+---
+ lenses/mke2fs.aug            | 108 ++++++++++++++++++++++++++---------
+ lenses/tests/test_mke2fs.aug |  46 ++++++++++++++-
+ 2 files changed, 124 insertions(+), 30 deletions(-)
+
+diff --git a/lenses/mke2fs.aug b/lenses/mke2fs.aug
+index dc895490..46a7136e 100644
+--- a/lenses/mke2fs.aug
++++ b/lenses/mke2fs.aug
+@@ -34,6 +34,14 @@ let sep = IniFile.sep /=[ \t]*/ "="
+ (* View: empty *)
+ let empty = IniFile.empty
+ 
++(* View: boolean
++    The configuration parser of e2fsprogs recognizes different values
++    for booleans, so list all the recognized values *)
++let boolean = ("y"|"yes"|"true"|"t"|"1"|"on"|"n"|"no"|"false"|"nil"|"0"|"off")
++
++(* View: fspath *)
++let fspath = /[^ \t\n"]+/
++
+ 
+ (************************************************************************
+  * Group:                 RECORD TYPES
+@@ -47,27 +55,59 @@ let entry (kw:regexp) (lns:lens) = Build.key_value_line kw sep lns
+ 
+ (* View: list_sto
+     A list of values with given lens *)
+-let list_sto (kw:regexp) (lns:lens) = counter "item" .
+-                                          entry kw
+-                                            (Build.opt_list 
+-                                              [lns]
+-                                              Sep.comma)
++let list_sto (kw:regexp) (lns:lens) =
++  entry kw (Quote.do_dquote_opt_nil (Build.opt_list [lns] Sep.comma))
+ 
+ (* View: entry_sto
+     Store a regexp as entry value *)
+-let entry_sto (kw:regexp) (val:regexp) = entry kw (store val)
++let entry_sto (kw:regexp) (val:regexp) =
++  entry kw (Quote.do_dquote_opt_nil (store val))
++  | entry kw (Util.del_str "\"\"")
+ 
+ 
+ (************************************************************************
+  * Group:                 COMMON ENTRIES
+  *************************************************************************)
++
++(* View: common_entries_list
++    Entries with a list value *)
++let common_entries_list = ("base_features"|"default_features"|"default_mntopts")
++
++(* View: common_entries_int
++    Entries with an integer value *)
++let common_entries_int = ("cluster_size"|"flex_bg_size"|"force_undo"
++                         |"inode_ratio"|"inode_size"|"num_backup_sb")
++
++(* View: common_entries_bool
++    Entries with a boolean value *)
++let common_entries_bool = ("auto_64-bit_support"|"discard"
++                          |"enable_periodic_fsck"|"lazy_itable_init"
++                          |"lazy_journal_init"|"packed_meta_blocks")
++
++(* View: common_entries_string
++    Entries with a string value *)
++let common_entries_string = ("encoding"|"journal_location")
++
++(* View: common_entries_double
++    Entries with a double value *)
++let common_entries_double = ("reserved_ratio")
++
+ (* View: common_entry
+      Entries shared between <defaults> and <fs_types> sections *)
+-let common_entry   = list_sto ("base_features"|"default_features")
+-                        (key Rx.word)
++let common_entry   = list_sto common_entries_list (key Rx.word)
++                   | entry_sto common_entries_int Rx.integer
++                   | entry_sto common_entries_bool boolean
++                   | entry_sto common_entries_string Rx.word
++                   | entry_sto common_entries_double Rx.decimal
+                    | entry_sto "blocksize" ("-"? . Rx.integer)
+                    | entry_sto "hash_alg" ("legacy"|"half_md4"|"tea")
+-                   | entry_sto ("inode_ratio"|"inode_size") Rx.integer
++                   | entry_sto "errors" ("continue"|"remount-ro"|"panic")
++                   | list_sto "features"
++                        ([del /\^/ "^" . label "disable"]?
++                                           . key Rx.word)
++                   | list_sto "options"
++                        (key Rx.word . Util.del_str "="
++                       . store Rx.word)
+ 
+ (************************************************************************
+  * Group:                 DEFAULTS SECTION
+@@ -75,11 +115,8 @@ let common_entry   = list_sto ("base_features"|"default_features")
+ 
+ (* View: defaults_entry
+     Possible entries under the <defaults> section *)
+-let defaults_entry = entry_sto "force_undo" ("true"|"false")
+-                   | entry_sto "fs_type" Rx.word
+-                   | entry_sto "undo_dir" Rx.fspath
+-                   | list_sto "default_mntopts" (key Rx.word)
+-                   | entry_sto "enable_periodic_fsck" Rx.integer
++let defaults_entry = entry_sto "fs_type" Rx.word
++                   | entry_sto "undo_dir" fspath
+                    
+ (* View: defaults_title
+     Title for the <defaults> section *)
+@@ -95,24 +132,12 @@ let defaults = IniFile.record defaults_title
+  * Group:                 FS_TYPES SECTION
+  *************************************************************************)
+ 
+-(* View: fs_types_entry
+-    Possible entries under a <fs_types_record> group *)
+-let fs_types_entry =list_sto "features"
+-                        ([del /\^/ "^" . label "disable"]?
+-                                           . key Rx.word)
+-                   | list_sto "options"
+-                        (key Rx.word . Util.del_str "="
+-                       . store Rx.word)
+-                   | entry_sto "lazy_itable_init" ("true"|"false")
+-                   | entry_sto ("flex_bg_size"|"auto_64-bit_support")
+-                       Rx.integer
+-
+ (* View: fs_types_record
+      Fs group records under the <fs_types> section *)
+ let fs_types_record = [ label "filesystem"
+                      . Util.indent . store Rx.word
+                      . del /[ \t]*=[ \t]*\{[ \t]*\n/ " = {\n"
+-                     . ((Util.indent . (fs_types_entry|common_entry)) | empty | comment)*
++                     . ((Util.indent . common_entry) | empty | comment)*
+                      . del /[ \t]*\}[ \t]*\n/ " }\n" ]
+ 
+ (* View: fs_types_title
+@@ -125,6 +150,33 @@ let fs_types = IniFile.record fs_types_title
+                   (fs_types_record | comment)
+ 
+ 
++(************************************************************************
++ * Group:                 OPTIONS SECTION
++ *************************************************************************)
++
++(* View: options_entries_int
++    Entries with an integer value *)
++let options_entries_int = ("proceed_delay"|"sync_kludge")
++
++(* View: options_entries_bool
++    Entries with a boolean value *)
++let options_entries_bool = ("old_bitmaps")
++
++(* View: options_entry
++    Possible entries under the <options> section *)
++let options_entry = entry_sto options_entries_int Rx.integer
++                  | entry_sto options_entries_bool boolean
++
++(* View: defaults_title
++    Title for the <options> section *)
++let options_title  = IniFile.title "options"
++
++(* View: options
++    A options section *)
++let options = IniFile.record options_title
++                  ((Util.indent . options_entry) | comment)
++
++
+ (************************************************************************
+  * Group:                 LENS AND FILTER
+  *************************************************************************)
+@@ -132,7 +184,7 @@ let fs_types = IniFile.record fs_types_title
+ (* View: lns
+      The mke2fs lens
+ *)
+-let lns = (empty|comment)* . (defaults|fs_types)*
++let lns = (empty|comment)* . (defaults|fs_types|options)*
+ 
+ (* Variable: filter *)
+ let filter = incl "/etc/mke2fs.conf"
+diff --git a/lenses/tests/test_mke2fs.aug b/lenses/tests/test_mke2fs.aug
+index f1ddbe9e..bcf2fe61 100644
+--- a/lenses/tests/test_mke2fs.aug
++++ b/lenses/tests/test_mke2fs.aug
+@@ -33,6 +33,10 @@ module Test_mke2fs =
+ 		inode_ratio = 1048576
+ 		blocksize = -1
+ 	}
++
++[options]
++	proceed_delay = 1
++	sync_kludge = 1
+ "
+ 
+    test Mke2fs.lns get conf =
+@@ -74,10 +78,48 @@ module Test_mke2fs =
+              { "inode_ratio" = "4096" } }
+         { "filesystem" = "largefile"
+              { "inode_ratio" = "1048576" }
+-             { "blocksize" = "-1" } } }
++             { "blocksize" = "-1" } }
++        {} }
++     { "options"
++        { "proceed_delay" = "1" }
++        { "sync_kludge" = "1" } }
+ 
+ 
+-test Mke2fs.fs_types_entry
++   let quoted_conf = "[defaults]
++	base_features = \"sparse_super,filetype,resize_inode,dir_index,ext_attr\"
++
++[fs_types]
++	ext4dev = {
++		features = \"has_journal,^extent\"
++		default_mntopts = \"user_xattr\"
++		encoding = \"utf8\"
++		encoding = \"\"
++	}
++"
++
++   test Mke2fs.lns get quoted_conf =
++     { "defaults"
++        { "base_features"
++             { "sparse_super" }
++             { "filetype" }
++             { "resize_inode" }
++             { "dir_index" }
++             { "ext_attr" } }
++        {} }
++     { "fs_types"
++        { "filesystem" = "ext4dev"
++             { "features"
++                { "has_journal" }
++                { "extent"
++                   { "disable" } } }
++             { "default_mntopts"
++                { "user_xattr" } }
++             { "encoding" = "utf8" }
++             { "encoding" }
++             } }
++
++
++test Mke2fs.common_entry
+    put "features = has_journal,^extent\n"
+    after set "/features/has_journal/disable" "";
+    rm "/features/extent/disable" = "features = ^has_journal,extent\n"
+-- 
+2.31.1
+
diff --git a/SOURCES/0009-semanage-Fix-parsing-of-ignoredirs-758.patch b/SOURCES/0009-semanage-Fix-parsing-of-ignoredirs-758.patch
new file mode 100644
index 0000000..826e620
--- /dev/null
+++ b/SOURCES/0009-semanage-Fix-parsing-of-ignoredirs-758.patch
@@ -0,0 +1,148 @@
+From f1480aa0c228107a22664e6302c6f2b388536ece Mon Sep 17 00:00:00 2001
+From: rwmjones <rjones@redhat.com>
+Date: Thu, 6 Oct 2022 12:15:56 +0100
+Subject: [PATCH 9/9] semanage: Fix parsing of ignoredirs (#758)
+
+From /etc/selinux/semanage.conf from a RHEL 9.1 system, this line
+caused problems:
+
+  ignoredirs=/root;/bin;/boot;/dev;/etc [...]
+
+Parse this as a list of modified Rx.fspath, generating a tree like:
+
+  /files/etc/selinux/semanage.conf/ignoredirs/1 = /root
+  /files/etc/selinux/semanage.conf/ignoredirs/2 = /bin
+  /files/etc/selinux/semanage.conf/ignoredirs/3 = /dev
+  /files/etc/selinux/semanage.conf/ignoredirs/4 = /etc
+  [...]
+
+Also this adds the RHEL 9 file as another test case and adjusts the
+output of the existing test case.
+
+Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2077120
+Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
+
+Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
+(cherry picked from commit a3ba6e2d32b95507e2474a219e788ac3d54bc4a1)
+---
+ lenses/semanage.aug                  |  7 +++-
+ lenses/tests/test_semanage.aug       |  4 +-
+ tests/root/etc/selinux/semanage.conf | 60 ++++++++++++++++++++++++++++
+ tests/xpath.tests                    |  1 +
+ 4 files changed, 70 insertions(+), 2 deletions(-)
+ create mode 100644 tests/root/etc/selinux/semanage.conf
+
+diff --git a/lenses/semanage.aug b/lenses/semanage.aug
+index 46f93b32..edd97131 100644
+--- a/lenses/semanage.aug
++++ b/lenses/semanage.aug
+@@ -23,7 +23,12 @@ let sep = IniFile.sep "=" "="
+ let empty = IniFile.empty
+ let eol = IniFile.eol
+ 
+-let entry = IniFile.entry IniFile.entry_re sep comment
++let list_keys = "ignoredirs"
++let scl = del ";" ";"
++let fspath = /[^ \t\n;#]+/ (* Rx.fspath without ; or # *)
++
++let entry = IniFile.entry_list list_keys sep fspath scl comment
++          | IniFile.entry (IniFile.entry_re - list_keys) sep comment
+           | empty
+ 
+ let title = IniFile.title_label "@group" (IniFile.record_re - /^end$/)
+diff --git a/lenses/tests/test_semanage.aug b/lenses/tests/test_semanage.aug
+index a6ceaca0..f76b95f3 100644
+--- a/lenses/tests/test_semanage.aug
++++ b/lenses/tests/test_semanage.aug
+@@ -68,7 +68,9 @@ test Semanage.lns get conf =
+    { "usepasswd" = "False" }
+    { "bzip-small" = "true" }
+    { "bzip-blocksize" = "5" }
+-   { "ignoredirs" = "/root" }
++   { "ignoredirs"
++     { "1" = "/root" }
++   }
+    { }
+    { "@group" = "sefcontext_compile"
+      { "path" = "/usr/sbin/sefcontext_compile" }
+diff --git a/tests/root/etc/selinux/semanage.conf b/tests/root/etc/selinux/semanage.conf
+new file mode 100644
+index 00000000..406f16f1
+--- /dev/null
++++ b/tests/root/etc/selinux/semanage.conf
+@@ -0,0 +1,60 @@
++# Authors: Jason Tang <jtang@tresys.com>
++#
++# Copyright (C) 2004-2005 Tresys Technology, LLC
++#
++#  This library is free software; you can redistribute it and/or
++#  modify it under the terms of the GNU Lesser General Public
++#  License as published by the Free Software Foundation; either
++#  version 2.1 of the License, or (at your option) any later version.
++#
++#  This library is distributed in the hope that it will be useful,
++#  but WITHOUT ANY WARRANTY; without even the implied warranty of
++#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++#  Lesser General Public License for more details.
++#
++#  You should have received a copy of the GNU Lesser General Public
++#  License along with this library; if not, write to the Free Software
++#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
++#
++# Specify how libsemanage will interact with a SELinux policy manager.
++# The four options are:
++#
++#  "source"     - libsemanage manipulates a source SELinux policy
++#  "direct"     - libsemanage will write directly to a module store.
++#  /foo/bar     - Write by way of a policy management server, whose
++#                 named socket is at /foo/bar.  The path must begin
++#                 with a '/'.
++#  foo.com:4242 - Establish a TCP connection to a remote policy
++#                 management server at foo.com.  If there is a colon
++#                 then the remainder is interpreted as a port number;
++#                 otherwise default to port 4242.
++module-store = direct
++
++# When generating the final linked and expanded policy, by default
++# semanage will set the policy version to POLICYDB_VERSION_MAX, as
++# given in <sepol/policydb.h>.  Change this setting if a different
++# version is necessary.
++#policy-version = 19
++
++# expand-check check neverallow rules when executing all semanage
++# commands. There might be a penalty in execution time if this
++# option is enabled.
++expand-check=0
++
++# usepasswd check tells semanage to scan all pass word records for home directories
++# and setup the labeling correctly. If this is turned off, SELinux will label only /home
++# and home directories of users with SELinux login mappings defined, see
++# semanage login -l for the list of such users.
++# If you want to use a different home directory, you will need to use semanage fcontext command.
++# For example, if you had home dirs in /althome directory you would have to execute
++# semanage fcontext -a -e /home /althome
++usepasswd=False
++bzip-small=true
++bzip-blocksize=5
++ignoredirs=/root;/bin;/boot;/dev;/etc;/lib;/lib64;/proc;/run;/sbin;/sys;/tmp;/usr;/var
++optimize-policy=true
++
++[sefcontext_compile]
++path = /usr/sbin/sefcontext_compile
++args = -r $@
++[end]
+diff --git a/tests/xpath.tests b/tests/xpath.tests
+index a7db8d83..feab7584 100644
+--- a/tests/xpath.tests
++++ b/tests/xpath.tests
+@@ -109,6 +109,7 @@ test descendant-or-self /files/descendant-or-self :: 4
+      /files/etc/ssh/ssh_config/Host/SendEnv[1]/4 = LC_TIME
+      /files/etc/ssh/ssh_config/Host/SendEnv[2]/4 = LC_TELEPHONE
+      /files/etc/aliases/4
++     /files/etc/selinux/semanage.conf/ignoredirs/4 = /dev
+      /files/etc/fstab/4
+      /files/etc/pam.d/login/4
+      /files/etc/pam.d/newrole/4
+-- 
+2.31.1
+
diff --git a/SPECS/augeas.spec b/SPECS/augeas.spec
index b8456a0..26a379b 100644
--- a/SPECS/augeas.spec
+++ b/SPECS/augeas.spec
@@ -1,12 +1,16 @@
 Name:           augeas
 Version:        1.12.0
-Release:        6%{?dist}
+Release:        8%{?dist}
 Summary:        A library for changing configuration files
 
 Group:          System Environment/Libraries
 License:        LGPLv2+
 URL:            http://augeas.net/
 Source0:        http://download.augeas.net/%{name}-%{version}.tar.gz
+
+# Patches are stored here:
+# https://github.com/rwmjones/augeas/tree/rhel-8.8
+
 Patch1:         0001-Grub-support-in-kernel-command-line-option-names-647.patch
 Patch2:         0002-Rsyslog-support-multiple-actions-in-filters-and-sele.patch
 Patch3:         0003-src-augrun.c-nexttoken-add-more-escape-characters.patch
@@ -14,6 +18,8 @@ Patch4:         0004-src-augtool.c-hopefully-fix-readline-quoting-issues.patch
 Patch5:         0005-Krb5-improve-dbmodules-and-includes-630.patch
 Patch6:         0006-Systemd-fix-parsing-of-envvars-with-spaces-659.patch
 Patch7:         0007-Ssh-add-Match-keyword-support-695.patch
+Patch8:         0008-Include-mke2fs-lens-and-test-from-upstream.patch
+Patch9:         0009-semanage-Fix-parsing-of-ignoredirs-758.patch
 
 BuildRequires:  readline-devel libselinux-devel libxml2-devel
 BuildRequires:  autoconf, automake
@@ -120,6 +126,14 @@ rm -rf $RPM_BUILD_ROOT
 %{_libdir}/pkgconfig/augeas.pc
 
 %changelog
+* Wed Oct 12 2022 Richard W.M. Jones <rjones@redhat.com> - 1.12.0-8
+- Fix parsing of semanage.conf ignoredirs
+  resolves: rhbz#1931058
+
+* Wed Jan 12 2022 Richard W.M. Jones <rjones@redhat.com> - 1.12.0-7
+- Fix parsing of mke2fs.conf files
+  resolves: rhbz#1807010
+
 * Tue Jan 05 2021 Pino Toscano <ptoscano@redhat.com> - 1.12.0-6
 - Ssh: parse Match options (RHBZ#1716359)