From 241920c6d843fcf53bb5465ada6bbdce8cfc9a04 Mon Sep 17 00:00:00 2001 From: AlmaLinux RelEng Bot Date: Tue, 18 Aug 2026 08:39:01 -0400 Subject: [PATCH] import Oracle_OSS virt-v2v-2.10.0-20.0.1.el10_2 --- 0049-common-update-submodule.patch | 24 ++ ...dd-new-selinux-relabel-excludes-flag.patch | 273 ++++++++++++++ 0051-common-update-submodule.patch | 67 ++++ ...sh.in-Fix-podcheck-to-ignore-new-vir.patch | 28 ++ ...dd-selinux-relabel-at-boot-parameter.patch | 297 +++++++++++++++ 1001-replaced-upstream-references.patch | 351 ++++++++++++++++++ virt-v2v.spec | 26 +- 7 files changed, 1063 insertions(+), 3 deletions(-) create mode 100644 0049-common-update-submodule.patch create mode 100644 0050-mlcustomize-Add-new-selinux-relabel-excludes-flag.patch create mode 100644 0051-common-update-submodule.patch create mode 100644 0052-tests-functions.sh.in-Fix-podcheck-to-ignore-new-vir.patch create mode 100644 0053-Add-selinux-relabel-at-boot-parameter.patch create mode 100644 1001-replaced-upstream-references.patch diff --git a/0049-common-update-submodule.patch b/0049-common-update-submodule.patch new file mode 100644 index 0000000..e605f7f --- /dev/null +++ b/0049-common-update-submodule.patch @@ -0,0 +1,24 @@ +From 4f3a2f0fee6ccec8e50682c2d05c23333ec99ab6 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Thu, 21 May 2026 10:16:41 +0100 +Subject: [PATCH] common: update submodule + + Richard W.M. Jones (1): + mlcustomize: Drop setfiles -F flag + +(cherry picked from commit 85c3a1989733879381456d71d716619160539d5b) +--- + common | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Submodule common a901c174..9584c82f: +diff --git a/common/mlcustomize/SELinux_relabel.ml b/common/mlcustomize/SELinux_relabel.ml +index f1729e3f..62450e41 100644 +--- a/common/mlcustomize/SELinux_relabel.ml ++++ b/common/mlcustomize/SELinux_relabel.ml +@@ -122,4 +122,4 @@ and use_setfiles g = + Array.of_list in + + (* Relabel everything. *) +- g#setfiles ~force:true specfile mps ++ g#setfiles specfile mps diff --git a/0050-mlcustomize-Add-new-selinux-relabel-excludes-flag.patch b/0050-mlcustomize-Add-new-selinux-relabel-excludes-flag.patch new file mode 100644 index 0000000..9393405 --- /dev/null +++ b/0050-mlcustomize-Add-new-selinux-relabel-excludes-flag.patch @@ -0,0 +1,273 @@ +From 7ccdb828aeeab8ed6b24e37d22efd40f1a7c96d7 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Mon, 3 Aug 2026 13:35:08 +0100 +Subject: [PATCH] mlcustomize: Add new --selinux-relabel-excludes flag + +https://github.com/libguestfs/libguestfs/commit/f5ad08415182cd7ecac376aad19ffaa81bec7503 + +Update m4/guestfs-libraries.m4 to make libguestfs 1.61.1 required. +This is for the new guestfs_setfiles 'excludes' parameter, added in: + +https://github.com/libguestfs/libguestfs/commit/5364e6abbcd1ee42f23b26306225269329e7c663 + +Update the common submodule, bringing in: + + Richard W.M. Jones (3): + mlcustomize/customize_cmdline.mli: Fix differences in generated code + mlcustomize: Update generated files + mlcustomize: Pass --selinux-relabel-excludes through to setfiles + +(cherry picked from commit 4dcf8ea13ca2516005cdb64edbbb2534fe612d49) +--- + common | 2 +- + m4/guestfs-libraries.m4 | 5 +++-- + 2 files changed, 4 insertions(+), 3 deletions(-) + +Submodule common 9584c82f..9c02b103: +diff --git a/common/mlcustomize/SELinux_relabel.ml b/common/mlcustomize/SELinux_relabel.ml +index 62450e41..3fd97221 100644 +--- a/common/mlcustomize/SELinux_relabel.ml ++++ b/common/mlcustomize/SELinux_relabel.ml +@@ -28,11 +28,11 @@ module G = Guestfs + * [libguestfs.git/daemon/selinux.ml]. + *) + +-let rec relabel (g : G.guestfs) = ++let rec relabel (g : G.guestfs) excludes = + (* Is the guest using SELinux? (Otherwise this is a no-op). *) + if is_selinux_guest g then ( + try +- use_setfiles g; ++ use_setfiles g excludes; + (* That worked, so we don't need to autorelabel. *) + g#rm_f "/.autorelabel" + with Failure _ -> +@@ -47,7 +47,7 @@ and is_selinux_guest g = + g#is_file ~followsymlinks:true "/usr/sbin/load_policy" && + g#is_file ~followsymlinks:true "/etc/selinux/config" + +-and use_setfiles g = ++and use_setfiles g excludes = + (* Is setfiles / SELinux relabelling functionality available? *) + if not (g#feature_available [| "selinuxrelabel" |]) then + failwith "no selinux relabel feature"; +@@ -121,5 +121,8 @@ and use_setfiles g = + List.sort compare |> (* sort them for consistency *) + Array.of_list in + ++ (* Excludes is actually a string array, not string list. *) ++ let excludes = Array.of_list excludes in ++ + (* Relabel everything. *) +- g#setfiles specfile mps ++ g#setfiles ~excludes specfile mps +diff --git a/common/mlcustomize/SELinux_relabel.mli b/common/mlcustomize/SELinux_relabel.mli +index 7b4f7ff2..5f1ae7ff 100644 +--- a/common/mlcustomize/SELinux_relabel.mli ++++ b/common/mlcustomize/SELinux_relabel.mli +@@ -18,12 +18,19 @@ + + (** SELinux-relabel the filesystem. *) + +-val relabel : Guestfs.guestfs -> unit ++val relabel : Guestfs.guestfs -> string list -> unit + (** Relabel the mounted guestfs filesystem using the current SELinux + policy that applies to the guest. + + If the guest does not look like it uses SELinux, this does nothing. + ++ The parameters are the guestfs handle and a list of directories ++ that may be excluded (by passing I<--selinux-relabel-exclude> ++ one or more times). ++ + In case relabelling is not possible (since it is an optional + feature which requires the setfiles(8) program), instead we +- fall back to touching [/.autorelabel]. *) ++ fall back to touching [/.autorelabel]. ++ ++ The excludes list only affects setfiles relabelling, ++ not [/.autorelabel] since we do not control how that works. *) +diff --git a/common/mlcustomize/customize-options.pod b/common/mlcustomize/customize-options.pod +index 95767cc7..f6e68f1e 100644 +--- a/common/mlcustomize/customize-options.pod ++++ b/common/mlcustomize/customize-options.pod +@@ -386,6 +386,22 @@ It cannot delete directories, only regular files. + + This is a compatibility option that does nothing. + ++=item B<--selinux-relabel-exclude> DIR ++ ++Exclude directories from being relabelled. ++ ++This advanced option lets you list directories in the guest which ++should not be relabelled, even when SELinux relabelling is ++enabled. Use this carefully, as any changes that are made ++inside these directories during customization will have incorrect ++SELinux labels, leading to potential failures later, so you must ++be sure that the directories do not need relabelling. ++ ++If in doubt, do not use this option. ++ ++You can pass the option multiple times, eg. ++I<--selinux-relabel-exclude=/foo> I<--selinux-relabel-exclude=/bar> ++ + =item B<--ssh-inject> USER[:SELECTOR] + + Inject an ssh key so the given C will be able to log in over +diff --git a/common/mlcustomize/customize-synopsis.pod b/common/mlcustomize/customize-synopsis.pod +index f5eeb69d..d6c4a280 100644 +--- a/common/mlcustomize/customize-synopsis.pod ++++ b/common/mlcustomize/customize-synopsis.pod +@@ -14,4 +14,4 @@ + [--truncate-recursive PATH] [--uninstall PKG,PKG..] [--update] + [--upload FILE:DEST] [--write FILE:CONTENT] [--no-logfile] + [--password-crypto md5|sha256|sha512] [--no-selinux-relabel] +- [--selinux-relabel] ++ [--selinux-relabel] [--selinux-relabel-exclude DIR] +diff --git a/common/mlcustomize/customize_cmdline.ml b/common/mlcustomize/customize_cmdline.ml +index b8eda519..24e05dc9 100644 +--- a/common/mlcustomize/customize_cmdline.ml ++++ b/common/mlcustomize/customize_cmdline.ml +@@ -115,6 +115,8 @@ and flags = { + (* --no-selinux-relabel *) + selinux_relabel_ignored : bool; + (* --selinux-relabel *) ++ selinux_relabel_excludes : string list; ++ (* --selinux-relabel-exclude *) + } + + type argspec = Getopt.keys * Getopt.spec * Getopt.doc +@@ -125,6 +127,7 @@ let rec argspec ?(v2v = false) () = + let password_crypto = ref None in + let no_selinux_relabel = ref false in + let selinux_relabel_ignored = ref false in ++ let selinux_relabel_excludes = ref [] in + + let rec get_ops () = { + ops = List.rev !ops; +@@ -135,6 +138,7 @@ let rec argspec ?(v2v = false) () = + password_crypto = !password_crypto; + no_selinux_relabel = !no_selinux_relabel; + selinux_relabel_ignored = !selinux_relabel_ignored; ++ selinux_relabel_excludes = !selinux_relabel_excludes; + } + in + +@@ -488,6 +492,15 @@ let rec argspec ?(v2v = false) () = + s_"Compatibility option doing nothing" + ), + None, "This is a compatibility option that does nothing.", false; ++ ( ++ [ L"selinux-relabel-exclude" ], ++ Getopt.String ( ++ s_"DIR", ++ List.push_back selinux_relabel_excludes ++ ), ++ s_"Exclude directories from SELinux relabelling" ++ ), ++ Some "DIR", "Exclude directories from being relabelled.\n\nThis advanced option lets you list directories in the guest which\nshould not be relabelled, even when SELinux relabelling is\nenabled. Use this carefully, as any changes that are made\ninside these directories during customization will have incorrect\nSELinux labels, leading to potential failures later, so you must\nbe sure that the directories do not need relabelling.\n\nIf in doubt, do not use this option.\n\nYou can pass the option multiple times, eg.\nI<--selinux-relabel-exclude=/foo> I<--selinux-relabel-exclude=/bar>", false; + ] + and customize_read_from_file filename = + let forbidden_commands = [ +diff --git a/common/mlcustomize/customize_cmdline.mli b/common/mlcustomize/customize_cmdline.mli +index baacda9d..abe10953 100644 +--- a/common/mlcustomize/customize_cmdline.mli ++++ b/common/mlcustomize/customize_cmdline.mli +@@ -107,17 +107,24 @@ and flags = { + (* --no-selinux-relabel *) + selinux_relabel_ignored : bool; + (* --selinux-relabel *) ++ selinux_relabel_excludes : string list; ++ (* --selinux-relabel-exclude *) + } + + type argspec = Getopt.keys * Getopt.spec * Getopt.doc + val argspec : ?v2v:bool -> unit -> (argspec * string option * string) list * (unit -> ops) +-(** This returns a pair [(list, get_ops)]. ++(** Return the argspec (a list of arguments, see {!Getopt} module) ++ with the full list of virt-customize options. ++ ++ If the parameter [~v2v] is true then this excludes parameters ++ that should be excluded from virt-v2v. For example ++ [--inject-qemu-ga] is excluded from the list because virt-v2v ++ decides itself whether and how to inject the QEMU guest agent. ++ ++ This returns a pair [(list, get_ops)]. + + [list] is a list of the command line arguments, plus some extra data. + + [get_ops] is a function you can call {i after} command line parsing + which will return the actual operations specified by the user on the +- command line. +- +- If the parameter [~v2v] is true then this excludes parameters +- that should be excluded from virt-v2v. *) +\ No newline at end of file ++ command line. This can be passed to {!Customize_run.run} *) +\ No newline at end of file +diff --git a/common/mlcustomize/customize_run.ml b/common/mlcustomize/customize_run.ml +index 1baf0f3c..4878c00f 100644 +--- a/common/mlcustomize/customize_run.ml ++++ b/common/mlcustomize/customize_run.ml +@@ -361,7 +361,7 @@ let run (g : G.guestfs) root (ops : ops) = + + if not ops.flags.no_selinux_relabel then ( + message (f_"SELinux relabelling"); +- SELinux_relabel.relabel g ++ SELinux_relabel.relabel g ops.flags.selinux_relabel_excludes + ); + + (* Clean up the log file: +diff --git a/common/mlcustomize/v2v-customize-options.pod b/common/mlcustomize/v2v-customize-options.pod +index 6252ffe9..fee5f984 100644 +--- a/common/mlcustomize/v2v-customize-options.pod ++++ b/common/mlcustomize/v2v-customize-options.pod +@@ -332,6 +332,22 @@ It cannot delete directories, only regular files. + + This is a compatibility option that does nothing. + ++=item B<--selinux-relabel-exclude> DIR ++ ++Exclude directories from being relabelled. ++ ++This advanced option lets you list directories in the guest which ++should not be relabelled, even when SELinux relabelling is ++enabled. Use this carefully, as any changes that are made ++inside these directories during customization will have incorrect ++SELinux labels, leading to potential failures later, so you must ++be sure that the directories do not need relabelling. ++ ++If in doubt, do not use this option. ++ ++You can pass the option multiple times, eg. ++I<--selinux-relabel-exclude=/foo> I<--selinux-relabel-exclude=/bar> ++ + =item B<--ssh-inject> USER[:SELECTOR] + + Inject an ssh key so the given C will be able to log in over +diff --git a/common/mlcustomize/v2v-customize-synopsis.pod b/common/mlcustomize/v2v-customize-synopsis.pod +index 4c1a1547..5a1bc009 100644 +--- a/common/mlcustomize/v2v-customize-synopsis.pod ++++ b/common/mlcustomize/v2v-customize-synopsis.pod +@@ -12,4 +12,4 @@ + [--truncate-recursive PATH] [--uninstall PKG,PKG..] [--update] + [--upload FILE:DEST] [--write FILE:CONTENT] [--no-logfile] + [--password-crypto md5|sha256|sha512] [--no-selinux-relabel] +- [--selinux-relabel] ++ [--selinux-relabel] [--selinux-relabel-exclude DIR] +diff --git a/m4/guestfs-libraries.m4 b/m4/guestfs-libraries.m4 +index 22af5db7..6334647f 100644 +--- a/m4/guestfs-libraries.m4 ++++ b/m4/guestfs-libraries.m4 +@@ -19,8 +19,9 @@ dnl Any C libraries required by virt-v2v. + + dnl Of course we need libguestfs. + dnl +-dnl We need libguestfs >= 1.58.1-6.el10 for guestfs_xfs_info2 +-dnl and for text: and base64: prefix in LUKS funcs. ++dnl We need libguestfs >= 1.58.1-9.el10 for guestfs_xfs_info2 ++dnl and for text: and base64: prefix in LUKS funcs ++dnl and for guestfs_setfiles excludes parameter. + PKG_CHECK_MODULES([LIBGUESTFS], [libguestfs >= 1.58.1]) + printf "libguestfs version is "; $PKG_CONFIG --modversion libguestfs + diff --git a/0051-common-update-submodule.patch b/0051-common-update-submodule.patch new file mode 100644 index 0000000..2430a9e --- /dev/null +++ b/0051-common-update-submodule.patch @@ -0,0 +1,67 @@ +From bab129f11a61f5b12329778d0324879ded6744ba Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Sat, 8 Aug 2026 08:08:18 +0100 +Subject: [PATCH] common: update submodule + + Richard W.M. Jones (2): + mlcustomize/firstboot.ml: Print the version of Windows + mlcustomize/firstboot.ml: Use rem for comments (instead of '::') + +(cherry picked from commit da0c19d25df40e31d6bf7c8f349478ddf616e02b) +--- + common | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Submodule common 9c02b103..877c8ca0: +diff --git a/common/mlcustomize/firstboot.ml b/common/mlcustomize/firstboot.ml +index fc3b7a69..1e019ecf 100644 +--- a/common/mlcustomize/firstboot.ml ++++ b/common/mlcustomize/firstboot.ml +@@ -299,12 +299,13 @@ exit /b + :main + echo starting firstboot service + echo effective user: %%USERNAME%% domain: %%USERDOMAIN%% ++ver + + if not exist "%%scripts_done%%" ( + mkdir "%%scripts_done%%" + ) + +-:: Pick the next script to run. ++rem Pick the next script to run. + for %%%%f in ("%%scripts%%"\*.bat) do ( + echo running "%%%%f" + pushd "%%scripts%%" +@@ -320,23 +321,23 @@ for %%%%f in ("%%scripts%%"\*.bat) do ( + echo Script failed, will retry on next boot + ) + +- :: Reboot the computer only if exit code indicates. +- :: Exit code 250 means do not reboot, otherwise reboot +- :: Reboot is necessary to free any locked files which +- :: may prevent later scripts from running. ++ rem Reboot the computer only if exit code indicates. ++ rem Exit code 250 means do not reboot, otherwise reboot. ++ rem Reboot is necessary to free any locked files which ++ rem may prevent later scripts from running. + if !elvl! NEQ 250 ( + shutdown /r /t 0 /y + +- :: Exit the script (in case shutdown returns before rebooting). +- :: On next boot, the whole firstboot service will be called again. +- ++ rem Exit the script (in case shutdown returns before ++ rem rebooting). On next boot, the whole firstboot ++ rem service will be called again. + exit /b + ) + ) + +-:: Fallthrough here if there are no scripts. ++rem Fallthrough here if there are no scripts. + +-:: Touch a sentinel file to say we have finished. ++rem Touch a sentinel file to say we have finished. + type nul > "%%firstboot%%\complete" + + echo uninstalling firstboot service diff --git a/0052-tests-functions.sh.in-Fix-podcheck-to-ignore-new-vir.patch b/0052-tests-functions.sh.in-Fix-podcheck-to-ignore-new-vir.patch new file mode 100644 index 0000000..964a50c --- /dev/null +++ b/0052-tests-functions.sh.in-Fix-podcheck-to-ignore-new-vir.patch @@ -0,0 +1,28 @@ +From c1f7d15cd370b29b00eca206751d6ad8e5585a15 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Thu, 6 Aug 2026 08:09:10 +0100 +Subject: [PATCH] tests/functions.sh.in: Fix podcheck to ignore new + virt-customize option + +The error from (eg) inspector/test-docs.sh was: + + podcheck.pl: virt-v2v-inspector.pod does not define --selinux-relabel-exclude + +Fixes: commit 4dcf8ea13ca2516005cdb64edbbb2534fe612d49 +(cherry picked from commit 47443bd5787701b75b513b985e48a5bb481f3750) +--- + tests/functions.sh.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tests/functions.sh.in b/tests/functions.sh.in +index e70c7028..f3911c07 100644 +--- a/tests/functions.sh.in ++++ b/tests/functions.sh.in +@@ -77,6 +77,7 @@ virt_customize_options=\ + --run-command,\ + --scrub,\ + --selinux-relabel,\ ++--selinux-relabel-exclude,\ + --ssh-inject,\ + --tar-in,\ + --timezone,\ diff --git a/0053-Add-selinux-relabel-at-boot-parameter.patch b/0053-Add-selinux-relabel-at-boot-parameter.patch new file mode 100644 index 0000000..1851623 --- /dev/null +++ b/0053-Add-selinux-relabel-at-boot-parameter.patch @@ -0,0 +1,297 @@ +From 3247b03c92f133916ff486c118a05a058523dc28 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Fri, 14 Aug 2026 07:38:58 +0100 +Subject: [PATCH] Add --selinux-relabel-at-boot parameter + + Richard W.M. Jones (5): + mlcustomize: Update generated files for --selinux-relabel-at-boot + mlcustomize: Turn excludes parameter into a labelled parameter + mlcustomize/SELinux_relabel.ml: Refactor touch /.autorelabel + mlcustomize: Add --selinux-relabel-at-boot functionality + mlcustomize/SELinux_relabel.ml: Set SELinux label on /.autorelabel + +(cherry picked from commit a690b4a1fa9d8d0444e0bdeb39f0a274293ff80f) +--- + common | 2 +- + tests/functions.sh.in | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +Submodule common 877c8ca0..fbcd2ef6: +diff --git a/common/mlcustomize/SELinux_relabel.ml b/common/mlcustomize/SELinux_relabel.ml +index 3fd97221..08c05600 100644 +--- a/common/mlcustomize/SELinux_relabel.ml ++++ b/common/mlcustomize/SELinux_relabel.ml +@@ -28,19 +28,26 @@ module G = Guestfs + * [libguestfs.git/daemon/selinux.ml]. + *) + +-let rec relabel (g : G.guestfs) excludes = ++let rec relabel ?(at_boot = false) ?(excludes = []) (g : G.guestfs) = + (* Is the guest using SELinux? (Otherwise this is a no-op). *) + if is_selinux_guest g then ( +- try +- use_setfiles g excludes; +- (* That worked, so we don't need to autorelabel. *) +- g#rm_f "/.autorelabel" +- with Failure _ -> +- (* This is the fallback in case something in the setfiles +- * method didn't work. That includes the case where a non-SELinux +- * host is processing an SELinux guest, and other things. +- *) +- g#touch "/.autorelabel" ++ if not at_boot then ( ++ try ++ (* Try to relabel during customization/conversion. *) ++ use_setfiles g excludes; ++ (* That worked, so we don't need to autorelabel. *) ++ g#rm_f "/.autorelabel" ++ with Failure _ -> ++ (* This is the fallback in case something in the setfiles ++ * method didn't work. That includes the case where a non-SELinux ++ * host is processing an SELinux guest, and other things. ++ *) ++ touch_autorelabel g ++ ) ++ else ( ++ (* Always do it at boot. *) ++ touch_autorelabel g ++ ) + ) + + and is_selinux_guest g = +@@ -126,3 +133,19 @@ and use_setfiles g excludes = + + (* Relabel everything. *) + g#setfiles ~excludes specfile mps ++ ++and touch_autorelabel g = ++ let path = "/.autorelabel" in ++ g#touch path; ++ ++ (* You cannot just touch /.autorelabel because SELinux itself ++ * will prevent this file from being read and prevent the ++ * autorelabel service from running(!) Therefore we have to ++ * guess at the correct label here. Ugh. ++ * ++ * This label name has been stable from at least RHEL 7 up to ++ * Fedora 45. ++ *) ++ let label = "system_u:object_r:etc_runtime_t:s0" in ++ let len = String.length label in ++ g#setxattr "security.selinux" label len path +diff --git a/common/mlcustomize/SELinux_relabel.mli b/common/mlcustomize/SELinux_relabel.mli +index 5f1ae7ff..eaee76c2 100644 +--- a/common/mlcustomize/SELinux_relabel.mli ++++ b/common/mlcustomize/SELinux_relabel.mli +@@ -18,15 +18,20 @@ + + (** SELinux-relabel the filesystem. *) + +-val relabel : Guestfs.guestfs -> string list -> unit ++val relabel : ?at_boot : bool -> ?excludes : string list -> ++ Guestfs.guestfs -> unit + (** Relabel the mounted guestfs filesystem using the current SELinux + policy that applies to the guest. + + If the guest does not look like it uses SELinux, this does nothing. + +- The parameters are the guestfs handle and a list of directories +- that may be excluded (by passing I<--selinux-relabel-exclude> +- one or more times). ++ The required parameter is the guestfs handle. ++ ++ Optional [?at_boot] (if true) defers labelling to boot ++ (I<--selinux-relabel-at-boot>). ++ ++ Optional [?excludes] is a list of directories that may be excluded ++ (by passing I<--selinux-relabel-exclude> one or more times). + + In case relabelling is not possible (since it is an optional + feature which requires the setfiles(8) program), instead we +diff --git a/common/mlcustomize/customize-options.pod b/common/mlcustomize/customize-options.pod +index f6e68f1e..cd3cb8b9 100644 +--- a/common/mlcustomize/customize-options.pod ++++ b/common/mlcustomize/customize-options.pod +@@ -386,6 +386,36 @@ It cannot delete directories, only regular files. + + This is a compatibility option that does nothing. + ++=item B<--selinux-relabel-at-boot> ++ ++This advanced option lets you defer ++SELinux relabelling until the first time the guest boots ++after conversion. ++ ++The advantage of doing this is that conversion is quicker ++and uses less memory. ++ ++The disadvantages are: ++ ++=over 4 ++ ++=item * ++ ++The guest will take I longer to boot up and become ready ++the first time it boots. ++ ++=item * ++ ++The guest will reboot at least once. ++ ++=item * ++ ++SELinux relabelling problems cannot be detected during conversion. ++ ++=back ++ ++If in doubt, do not use this option. ++ + =item B<--selinux-relabel-exclude> DIR + + Exclude directories from being relabelled. +diff --git a/common/mlcustomize/customize-synopsis.pod b/common/mlcustomize/customize-synopsis.pod +index d6c4a280..2484b317 100644 +--- a/common/mlcustomize/customize-synopsis.pod ++++ b/common/mlcustomize/customize-synopsis.pod +@@ -15,3 +15,4 @@ + [--upload FILE:DEST] [--write FILE:CONTENT] [--no-logfile] + [--password-crypto md5|sha256|sha512] [--no-selinux-relabel] + [--selinux-relabel] [--selinux-relabel-exclude DIR] ++ [--selinux-relabel-at-boot] +diff --git a/common/mlcustomize/customize_cmdline.ml b/common/mlcustomize/customize_cmdline.ml +index 24e05dc9..7a79f546 100644 +--- a/common/mlcustomize/customize_cmdline.ml ++++ b/common/mlcustomize/customize_cmdline.ml +@@ -117,6 +117,8 @@ and flags = { + (* --selinux-relabel *) + selinux_relabel_excludes : string list; + (* --selinux-relabel-exclude *) ++ selinux_relabel_at_boot : bool; ++ (* --selinux-relabel-at-boot *) + } + + type argspec = Getopt.keys * Getopt.spec * Getopt.doc +@@ -128,6 +130,7 @@ let rec argspec ?(v2v = false) () = + let no_selinux_relabel = ref false in + let selinux_relabel_ignored = ref false in + let selinux_relabel_excludes = ref [] in ++ let selinux_relabel_at_boot = ref false in + + let rec get_ops () = { + ops = List.rev !ops; +@@ -139,6 +142,7 @@ let rec argspec ?(v2v = false) () = + no_selinux_relabel = !no_selinux_relabel; + selinux_relabel_ignored = !selinux_relabel_ignored; + selinux_relabel_excludes = !selinux_relabel_excludes; ++ selinux_relabel_at_boot = !selinux_relabel_at_boot; + } + in + +@@ -501,6 +505,12 @@ let rec argspec ?(v2v = false) () = + s_"Exclude directories from SELinux relabelling" + ), + Some "DIR", "Exclude directories from being relabelled.\n\nThis advanced option lets you list directories in the guest which\nshould not be relabelled, even when SELinux relabelling is\nenabled. Use this carefully, as any changes that are made\ninside these directories during customization will have incorrect\nSELinux labels, leading to potential failures later, so you must\nbe sure that the directories do not need relabelling.\n\nIf in doubt, do not use this option.\n\nYou can pass the option multiple times, eg.\nI<--selinux-relabel-exclude=/foo> I<--selinux-relabel-exclude=/bar>", false; ++ ( ++ [ L"selinux-relabel-at-boot" ], ++ Getopt.Set selinux_relabel_at_boot, ++ s_"Defer SELinux relabelling until boot" ++ ), ++ None, "This advanced option lets you defer\nSELinux relabelling until the first time the guest boots\nafter conversion.\n\nThe advantage of doing this is that conversion is quicker\nand uses less memory.\n\nThe disadvantages are:\n\n=over 4\n\n=item *\n\nThe guest will take I longer to boot up and become ready\nthe first time it boots.\n\n=item *\n\nThe guest will reboot at least once.\n\n=item *\n\nSELinux relabelling problems cannot be detected during conversion.\n\n=back\n\nIf in doubt, do not use this option.", false; + ] + and customize_read_from_file filename = + let forbidden_commands = [ +diff --git a/common/mlcustomize/customize_cmdline.mli b/common/mlcustomize/customize_cmdline.mli +index abe10953..7770d5d4 100644 +--- a/common/mlcustomize/customize_cmdline.mli ++++ b/common/mlcustomize/customize_cmdline.mli +@@ -109,6 +109,8 @@ and flags = { + (* --selinux-relabel *) + selinux_relabel_excludes : string list; + (* --selinux-relabel-exclude *) ++ selinux_relabel_at_boot : bool; ++ (* --selinux-relabel-at-boot *) + } + + type argspec = Getopt.keys * Getopt.spec * Getopt.doc +diff --git a/common/mlcustomize/customize_run.ml b/common/mlcustomize/customize_run.ml +index 4878c00f..73585a53 100644 +--- a/common/mlcustomize/customize_run.ml ++++ b/common/mlcustomize/customize_run.ml +@@ -360,8 +360,13 @@ let run (g : G.guestfs) root (ops : ops) = + ); + + if not ops.flags.no_selinux_relabel then ( +- message (f_"SELinux relabelling"); +- SELinux_relabel.relabel g ops.flags.selinux_relabel_excludes ++ let at_boot = ops.flags.selinux_relabel_at_boot in ++ if not at_boot then ++ message (f_"SELinux relabelling") ++ else ++ message (f_"SELinux relabelling deferred to first boot"); ++ let excludes = ops.flags.selinux_relabel_excludes in ++ SELinux_relabel.relabel ~at_boot ~excludes g + ); + + (* Clean up the log file: +diff --git a/common/mlcustomize/v2v-customize-options.pod b/common/mlcustomize/v2v-customize-options.pod +index fee5f984..c91c1491 100644 +--- a/common/mlcustomize/v2v-customize-options.pod ++++ b/common/mlcustomize/v2v-customize-options.pod +@@ -332,6 +332,36 @@ It cannot delete directories, only regular files. + + This is a compatibility option that does nothing. + ++=item B<--selinux-relabel-at-boot> ++ ++This advanced option lets you defer ++SELinux relabelling until the first time the guest boots ++after conversion. ++ ++The advantage of doing this is that conversion is quicker ++and uses less memory. ++ ++The disadvantages are: ++ ++=over 4 ++ ++=item * ++ ++The guest will take I longer to boot up and become ready ++the first time it boots. ++ ++=item * ++ ++The guest will reboot at least once. ++ ++=item * ++ ++SELinux relabelling problems cannot be detected during conversion. ++ ++=back ++ ++If in doubt, do not use this option. ++ + =item B<--selinux-relabel-exclude> DIR + + Exclude directories from being relabelled. +diff --git a/common/mlcustomize/v2v-customize-synopsis.pod b/common/mlcustomize/v2v-customize-synopsis.pod +index 5a1bc009..04d02024 100644 +--- a/common/mlcustomize/v2v-customize-synopsis.pod ++++ b/common/mlcustomize/v2v-customize-synopsis.pod +@@ -13,3 +13,4 @@ + [--upload FILE:DEST] [--write FILE:CONTENT] [--no-logfile] + [--password-crypto md5|sha256|sha512] [--no-selinux-relabel] + [--selinux-relabel] [--selinux-relabel-exclude DIR] ++ [--selinux-relabel-at-boot] +diff --git a/tests/functions.sh.in b/tests/functions.sh.in +index f3911c07..143d3d0f 100644 +--- a/tests/functions.sh.in ++++ b/tests/functions.sh.in +@@ -77,6 +77,7 @@ virt_customize_options=\ + --run-command,\ + --scrub,\ + --selinux-relabel,\ ++--selinux-relabel-at-boot,\ + --selinux-relabel-exclude,\ + --ssh-inject,\ + --tar-in,\ diff --git a/1001-replaced-upstream-references.patch b/1001-replaced-upstream-references.patch new file mode 100644 index 0000000..d25ccac --- /dev/null +++ b/1001-replaced-upstream-references.patch @@ -0,0 +1,351 @@ +From 9bd7e17d0b34f939eab0c18cef7fd4bb74269c20 Mon Sep 17 00:00:00 2001 +From: Darren Archibald +Date: Tue, 9 Sep 2025 04:07:35 -0700 +Subject: [PATCH] replaced upstream references + +Signed-off-by: Darren Archibald +Signed-off-by: Akshata Konala +--- + po/Makefile.am | 2 +- + po/cs.po | 3 +-- + po/de.po | 3 +-- + po/es.po | 3 +-- + po/fi.po | 3 +-- + po/fr.po | 3 +-- + po/gu.po | 3 +-- + po/hi.po | 3 +-- + po/ja.po | 3 +-- + po/ka.po | 3 +-- + po/kn.po | 3 +-- + po/ml.po | 3 +-- + po/mr.po | 3 +-- + po/nl.po | 3 +-- + po/or.po | 3 +-- + po/pa.po | 3 +-- + po/pl.po | 3 +-- + po/si.po | 3 +-- + po/uk.po | 3 +-- + po/virt-v2v.pot | 3 +-- + podwrapper.pl.in | 4 ++-- + website/index.html.in | 6 +++--- + 22 files changed, 25 insertions(+), 44 deletions(-) + +diff --git a/po/Makefile.am b/po/Makefile.am +index 08d9dbe..61f472b 100644 +--- a/po/Makefile.am ++++ b/po/Makefile.am +@@ -19,7 +19,7 @@ include $(top_srcdir)/subdir-rules.mk + + DOMAIN = $(PACKAGE_NAME) + COPYRIGHT_HOLDER = Red Hat Inc. +-MSGID_BUGS_ADDRESS = https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools ++MSGID_BUGS_ADDRESS = https://github.com/oracle/oracle-linux + + # Languages. + # Don't use LINGUAS (uppercase) as Gentoo defines it (RHBZ#804464). +diff --git a/po/cs.po b/po/cs.po +index 55c4fdc..5003e14 100644 +--- a/po/cs.po ++++ b/po/cs.po +@@ -2,8 +2,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: libguestfs 1.39.12\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2023-04-08 18:20+0000\n" + "Last-Translator: Pavel Borecki \n" +diff --git a/po/de.po b/po/de.po +index e8d9053..835535e 100644 +--- a/po/de.po ++++ b/po/de.po +@@ -9,8 +9,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: libguestfs 1.39.12\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2015-02-21 10:48+0000\n" + "Last-Translator: Copied by Zanata \n" +diff --git a/po/es.po b/po/es.po +index 1a63337..8800235 100644 +--- a/po/es.po ++++ b/po/es.po +@@ -10,8 +10,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: libguestfs 1.39.12\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2015-03-16 07:04+0000\n" + "Last-Translator: Alex Puchades \n" +diff --git a/po/fi.po b/po/fi.po +index 56f9917..b077010 100644 +--- a/po/fi.po ++++ b/po/fi.po +@@ -6,8 +6,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: virt-v2v 1.43.4\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2025-01-09 11:33+0000\n" + "Last-Translator: Ricky Tigg \n" +diff --git a/po/fr.po b/po/fr.po +index 2db1ae1..2ba25d0 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -10,8 +10,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: libguestfs 1.39.12\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2023-03-21 09:20+0000\n" + "Last-Translator: grimst \n" +diff --git a/po/gu.po b/po/gu.po +index 5b4e798..9c540cd 100644 +--- a/po/gu.po ++++ b/po/gu.po +@@ -8,8 +8,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: libguestfs 1.39.12\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2015-02-21 10:49+0000\n" + "Last-Translator: Copied by Zanata \n" +diff --git a/po/hi.po b/po/hi.po +index a3983ed..0364d75 100644 +--- a/po/hi.po ++++ b/po/hi.po +@@ -8,8 +8,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: libguestfs 1.39.12\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2015-02-21 10:49+0000\n" + "Last-Translator: Copied by Zanata \n" +diff --git a/po/ja.po b/po/ja.po +index 23d34f2..c14299e 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -9,8 +9,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: libguestfs 1.39.12\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2017-02-24 07:33+0000\n" + "Last-Translator: Copied by Zanata \n" +diff --git a/po/ka.po b/po/ka.po +index 78ebee4..b116e86 100644 +--- a/po/ka.po ++++ b/po/ka.po +@@ -6,8 +6,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: virt-v2v 2.1.1\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2025-01-09 09:27+0000\n" + "Last-Translator: Weblate Translation Memory \n" +diff --git a/po/ml.po b/po/ml.po +index 7a3f071..7de8c16 100644 +--- a/po/ml.po ++++ b/po/ml.po +@@ -7,8 +7,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: libguestfs 1.39.12\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2015-02-21 10:50+0000\n" + "Last-Translator: Copied by Zanata \n" +diff --git a/po/mr.po b/po/mr.po +index 8222d63..7f55091 100644 +--- a/po/mr.po ++++ b/po/mr.po +@@ -8,8 +8,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: libguestfs 1.39.12\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2015-02-21 10:51+0000\n" + "Last-Translator: Copied by Zanata \n" +diff --git a/po/nl.po b/po/nl.po +index 06df912..b25b908 100644 +--- a/po/nl.po ++++ b/po/nl.po +@@ -9,8 +9,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: libguestfs 1.39.12\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2015-02-21 10:51+0000\n" + "Last-Translator: Copied by Zanata \n" +diff --git a/po/or.po b/po/or.po +index 2422cc3..92a2500 100644 +--- a/po/or.po ++++ b/po/or.po +@@ -7,8 +7,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: libguestfs 1.39.12\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2015-02-21 10:51+0000\n" + "Last-Translator: Copied by Zanata \n" +diff --git a/po/pa.po b/po/pa.po +index e2465b6..73a8db6 100644 +--- a/po/pa.po ++++ b/po/pa.po +@@ -8,8 +8,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: libguestfs 1.39.12\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2015-02-21 10:52+0000\n" + "Last-Translator: Copied by Zanata \n" +diff --git a/po/pl.po b/po/pl.po +index 77f4651..16c7459 100644 +--- a/po/pl.po ++++ b/po/pl.po +@@ -11,8 +11,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: libguestfs 1.39.12\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2025-02-27 18:15+0000\n" + "PO-Revision-Date: 2024-01-15 13:36+0000\n" + "Last-Translator: Weblate Translation Memory \n" +diff --git a/podwrapper.pl.in b/podwrapper.pl.in +index d7973fc..0a196f3 100755 +--- a/podwrapper.pl.in ++++ b/podwrapper.pl.in +@@ -432,10 +432,10 @@ my $reporting_bugs = + "=head1 BUGS + + To get a list of bugs against libguestfs, use this link: +-L ++L + + To report a new bug against libguestfs, use this link: +-L ++L + + When reporting a bug, please supply: + +diff --git a/website/index.html.in b/website/index.html.in +index f578523..e1e1592 100644 +--- a/website/index.html.in ++++ b/website/index.html.in +@@ -160,12 +160,12 @@ For testers: +

Bug reports

+ +

+-List of bugs in libguestfs and +-in Fedora packaging of libguestfs ++List of bugs in libguestfs and ++in Community packaging of libguestfs +

+ +

+-Enter a new bug report ++Enter a new bug report +

+ + +diff --git a/po/virt-v2v.pot b/po/virt-v2v.pot +index 7b7d7b7..fba74c8 100644 +--- a/po/virt-v2v.pot ++++ b/po/virt-v2v.pot +@@ -7,8 +7,7 @@ + msgid "" + msgstr "" + "Project-Id-Version: virt-v2v 2.10.0\n" +-"Report-Msgid-Bugs-To: https://bugzilla.redhat.com/enter_bug.cgi?" +-"component=libguestfs&product=Virtualization+Tools\n" ++"Report-Msgid-Bugs-To: https://github.com/oracle/oracle-linux\n" + "POT-Creation-Date: 2026-01-06 11:03+0000\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" +-- +2.31.1 + diff --git a/virt-v2v.spec b/virt-v2v.spec index 0404c82..93704aa 100644 --- a/virt-v2v.spec +++ b/virt-v2v.spec @@ -45,7 +45,7 @@ ExclusiveArch: x86_64 Name: virt-v2v Epoch: 1 Version: 2.10.0 -Release: 18%{?dist} +Release: 20.0.1%{?dist} Summary: Convert a virtual machine to run on KVM License: GPL-2.0-or-later AND LGPL-2.0-or-later @@ -113,6 +113,12 @@ Patch0045: 0045-convert-fix-ubuntu-conversion-regression.patch Patch0046: 0046-common-update-submodule.patch Patch0047: 0047-Add-new-collect-option-to-collect-pre-conversion-Win.patch Patch0048: 0048-inspector-in-place-Add-disk-boot-order-boot-order-to.patch +Patch0049: 0049-common-update-submodule.patch +Patch0050: 0050-mlcustomize-Add-new-selinux-relabel-excludes-flag.patch +Patch0051: 0051-common-update-submodule.patch +Patch0052: 0052-tests-functions.sh.in-Fix-podcheck-to-ignore-new-vir.patch +Patch0053: 0053-Add-selinux-relabel-at-boot-parameter.patch +Patch1001: 1001-replaced-upstream-references.patch BuildRequires: autoconf, automake, libtool BuildRequires: make @@ -123,7 +129,7 @@ BuildRequires: perl(IPC::Run3) BuildRequires: gcc BuildRequires: ocaml >= 4.08 -BuildRequires: libguestfs-devel >= 1:1.58.1-6 +BuildRequires: libguestfs-devel >= 1:1.58.1-9 BuildRequires: augeas-devel BuildRequires: bash-completion %if 0%{?fedora} || 0%{?rhel} >= 11 @@ -169,7 +175,7 @@ BuildRequires: glibc-static BuildRequires: gnupg2 %endif -Requires: libguestfs%{?_isa} >= 1:1.58.1-6 +Requires: libguestfs%{?_isa} >= 1:1.58.1-9 Requires: guestfs-tools >= 1.54 # XFS is the default filesystem in Fedora and RHEL. @@ -418,6 +424,20 @@ done %changelog +* Mon Aug 17 2026 EL Errata - 2.10.0-20.0.1 +- Replaced bugzilla.oracle.com references [Orabug: 34202300] +- replaced upstream references [Orabug:34089586] + +* Fri Aug 14 2026 Richard W.M. Jones - 1:2.10.0-20 +- Fix SELinux relabelling of podman rootless containers + resolves: RHEL-239852 +- Add --selinux-relabel-exclude parameter + resolves: RHEL-239809 +- Add --selinux-relabel-at-boot parameter + resolves: RHEL-RHEL-240649 +- Change '::' to 'REM' in Windows batch files for improved reliability + resolves: RHEL-239810 + * Tue Jul 07 2026 Richard W.M. Jones - 1:2.10.0-18 - Add # to XML output resolves: RHEL-193138