From e0af17cd3ed8aa4b43cf75a19c4e51628b28fa99 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 24 Apr 2024 16:15:12 +0100 Subject: [PATCH] Add support for nbd+unix:// URIs resolves: RHEL-33956 --- ...tor.c-Remove-extra-cases-covered-by-.patch | 47 ++++++++++++++ ....m4-Re-add-.-configure-enable-werror.patch | 42 ++++++++++++ 0007-make-fs-Use-S-option-with-z.patch | 43 ++++++++++++ ...earer-that-we-do-not-support-Windows.patch | 28 ++++++++ ...EANFILES-for-a-generated-but-few-rar.patch | 63 ++++++++++++++++++ ...pilation-to-output-whole-exe-instead.patch | 28 ++++++++ ...-translate-and-sed-commands-separate.patch | 42 ++++++++++++ ...irt-dib-from-list-of-translated-man-.patch | 25 +++++++ 0013-Update-common-submodule.patch | 65 +++++++++++++++++++ copy-patches.sh | 2 +- guestfs-tools.spec | 17 ++++- 11 files changed, 399 insertions(+), 3 deletions(-) create mode 100644 0005-inspector-inspector.c-Remove-extra-cases-covered-by-.patch create mode 100644 0006-m4-guestfs-c.m4-Re-add-.-configure-enable-werror.patch create mode 100644 0007-make-fs-Use-S-option-with-z.patch create mode 100644 0008-sysprep-Make-clearer-that-we-do-not-support-Windows.patch create mode 100644 0009-build-Use-DISTCLEANFILES-for-a-generated-but-few-rar.patch create mode 100644 0010-Fix-bytecode-compilation-to-output-whole-exe-instead.patch create mode 100644 0011-po-docs-Run-po4a-translate-and-sed-commands-separate.patch create mode 100644 0012-po-docs-Remove-virt-dib-from-list-of-translated-man-.patch create mode 100644 0013-Update-common-submodule.patch diff --git a/0005-inspector-inspector.c-Remove-extra-cases-covered-by-.patch b/0005-inspector-inspector.c-Remove-extra-cases-covered-by-.patch new file mode 100644 index 0000000..1bc04da --- /dev/null +++ b/0005-inspector-inspector.c-Remove-extra-cases-covered-by-.patch @@ -0,0 +1,47 @@ +From 76080541ae09c6242e0a162009c5faec3ba94b41 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Thu, 29 Feb 2024 21:27:47 +0000 +Subject: [PATCH] inspector/inspector.c: Remove extra cases covered by default +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In GCC 14: + +inspector.c: In function ‘do_xpath’: +inspector.c:770:3: error: case value ‘5’ not in enumerated type ‘xmlXPathObjectType’ [-Werror=switch] + 770 | case XPATH_POINT: + | ^~~~ +inspector.c:771:3: error: case value ‘6’ not in enumerated type ‘xmlXPathObjectType’ [-Werror=switch] + 771 | case XPATH_RANGE: + | ^~~~ +inspector.c:772:3: error: case value ‘7’ not in enumerated type ‘xmlXPathObjectType’ [-Werror=switch] + 772 | case XPATH_LOCATIONSET: + | ^~~~ + +We already have a default case here, remove the other cases. + +(cherry picked from commit 9d2ac9c9b48bf34f5fc3485303143302ead4cb4f) +--- + inspector/inspector.c | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/inspector/inspector.c b/inspector/inspector.c +index 73357c7d7..01abfae0c 100644 +--- a/inspector/inspector.c ++++ b/inspector/inspector.c +@@ -764,14 +764,6 @@ do_xpath (const char *query) + printf ("\n"); + break; + +- case XPATH_UNDEFINED: /* grrrrr ... switch-enum is a useless warning */ +- case XPATH_BOOLEAN: +- case XPATH_NUMBER: +- case XPATH_POINT: +- case XPATH_RANGE: +- case XPATH_LOCATIONSET: +- case XPATH_USERS: +- case XPATH_XSLT_TREE: + default: + r = (char *) xmlXPathCastToString (xpathObj); + printf ("%s\n", r); diff --git a/0006-m4-guestfs-c.m4-Re-add-.-configure-enable-werror.patch b/0006-m4-guestfs-c.m4-Re-add-.-configure-enable-werror.patch new file mode 100644 index 0000000..ae13179 --- /dev/null +++ b/0006-m4-guestfs-c.m4-Re-add-.-configure-enable-werror.patch @@ -0,0 +1,42 @@ +From dbc179ab026897be96651e7f9ca6026a3ebf540d Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Thu, 29 Feb 2024 21:20:59 +0000 +Subject: [PATCH] m4/guestfs-c.m4: Re-add ./configure --enable-werror + +Somewhere during removal of gnulib and splitting guestfs-tools from +libguestfs, this option was lost. Re-add it simply by copying the +configure fragment over from libguestfs. + +(cherry picked from commit 42426992a292b45611b00fcff42160854db09922) +--- + m4/guestfs-c.m4 | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/m4/guestfs-c.m4 b/m4/guestfs-c.m4 +index bc7e3b2aa..67004d0a1 100644 +--- a/m4/guestfs-c.m4 ++++ b/m4/guestfs-c.m4 +@@ -29,6 +29,23 @@ test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant]) + + AM_PROG_CC_C_O + ++AC_ARG_ENABLE([werror], ++ [AS_HELP_STRING([--enable-werror], ++ [turn on lots of GCC warnings (for developers)])], ++ [case $enableval in ++ yes|no) ;; ++ *) AC_MSG_ERROR([bad value $enableval for werror option]) ;; ++ esac ++ gcc_warnings=$enableval], ++ [gcc_warnings=no] ++) ++WARN_CFLAGS="-Wall" ++AC_SUBST([WARN_CFLAGS]) ++if test "x$gcc_warnings" = "xyes"; then ++ WERROR_CFLAGS="-Werror" ++fi ++AC_SUBST([WERROR_CFLAGS]) ++ + # Provide a global place to set CFLAGS. (Note that setting AM_CFLAGS + # is no use because it doesn't override target_CFLAGS). + #--- diff --git a/0007-make-fs-Use-S-option-with-z.patch b/0007-make-fs-Use-S-option-with-z.patch new file mode 100644 index 0000000..71ac342 --- /dev/null +++ b/0007-make-fs-Use-S-option-with-z.patch @@ -0,0 +1,43 @@ +From 51b0bf74b249ac6646b7e083a678553fc40d44d7 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Thu, 7 Mar 2024 12:00:45 +0000 +Subject: [PATCH] make-fs: Use -S option with -z + +Basically the file -z option is broken for distributions that enable +seccomp support in the 'file' command. Turn off seccomp when we know +we'll be using -z. + +We hit this before in the libguestfs daemon: +https://github.com/libguestfs/libguestfs/issues/100 + +It was reported upstream but the fix was rejected: +https://bugs.astron.com/view.php?id=406 + +See also libguestfs commit 23986d3c4f4d1f9cbac44cc743d3e6af721e4237 +("file: Use -S option with -z"). + +Note this requires file > 5.32. We could make it work for earlier +versions of file with some extra work: +https://listman.redhat.com/archives/libguestfs/2023-September/032613.html +& libguestfs commit c95d8c4cf64142bb707b42c32cf3e1ba3c4a5eb1 + +Reported-by: Jax Young +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2266201 +(cherry picked from commit a706f6f55345b06578fd1ca4af531524dc2131fb) +--- + make-fs/make-fs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/make-fs/make-fs.c b/make-fs/make-fs.c +index 7837b61be..b8aebccfb 100644 +--- a/make-fs/make-fs.c ++++ b/make-fs/make-fs.c +@@ -457,7 +457,7 @@ estimate_input (const char *input, uint64_t *estimate_rtn, char **ifmt_rtn) + } + else { + argv[0] = "file"; +- argv[1] = "-bsLz"; ++ argv[1] = "-bsSLz"; + argv[2] = input; + argv[3] = NULL; + diff --git a/0008-sysprep-Make-clearer-that-we-do-not-support-Windows.patch b/0008-sysprep-Make-clearer-that-we-do-not-support-Windows.patch new file mode 100644 index 0000000..54314af --- /dev/null +++ b/0008-sysprep-Make-clearer-that-we-do-not-support-Windows.patch @@ -0,0 +1,28 @@ +From cc0ae4acabfc857f2bcee828e725a9d69dab5735 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Tue, 12 Mar 2024 09:42:30 +0000 +Subject: [PATCH] sysprep: Make clearer that we do not support Windows + +Thanks: Dan Kenigsberg +(cherry picked from commit 82c0fb1231c1a9250104cff278f1c67ab482fa4b) +--- + sysprep/virt-sysprep.pod | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/sysprep/virt-sysprep.pod b/sysprep/virt-sysprep.pod +index 0bcdc4dec..b48ac55c1 100644 +--- a/sysprep/virt-sysprep.pod ++++ b/sysprep/virt-sysprep.pod +@@ -30,10 +30,8 @@ disk image to be writable as the non-root user running virt-sysprep. + + "Sysprep" stands for "system preparation" tool. The name comes from + the Microsoft program F which is used to unconfigure +-Windows machines in preparation for cloning them. Having said that, +-virt-sysprep does I currently work on Microsoft Windows guests. +-We plan to support Windows sysprepping in a future version, and we +-already have code to do it. ++Windows machines in preparation for cloning them. (Virt-sysprep does ++not work on Microsoft Windows guests.) + + =head1 OPTIONS + diff --git a/0009-build-Use-DISTCLEANFILES-for-a-generated-but-few-rar.patch b/0009-build-Use-DISTCLEANFILES-for-a-generated-but-few-rar.patch new file mode 100644 index 0000000..0299109 --- /dev/null +++ b/0009-build-Use-DISTCLEANFILES-for-a-generated-but-few-rar.patch @@ -0,0 +1,63 @@ +From a103e367c4fd6bd073c324253833289f6a8ecc3a Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Tue, 12 Mar 2024 10:04:34 +0000 +Subject: [PATCH] build: Use DISTCLEANFILES for a generated but few rarely + updated files + +We rarely change the generated test scripts or the sysprep mli files, +so we only need to delete them in 'make distclean', not 'make clean'. + +(cherry picked from commit 35e15c68ac9c4e5361e4cf8a49a60a4bc2708d89) +--- + builder/Makefile.am | 4 +++- + customize/Makefile.am | 6 ++++-- + sysprep/Makefile.am | 2 +- + 3 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/builder/Makefile.am b/builder/Makefile.am +index 42606aaf3..b474f0c9d 100644 +--- a/builder/Makefile.am ++++ b/builder/Makefile.am +@@ -412,8 +412,10 @@ test-console-%.sh: + chmod 0755 $@-t + mv $@-t $@ + ++DISTCLEANFILES += \ ++ $(console_test_scripts) ++ + CLEANFILES += \ +- $(console_test_scripts) \ + console-*.img \ + console-*.out + +diff --git a/customize/Makefile.am b/customize/Makefile.am +index 3a974590f..461629062 100644 +--- a/customize/Makefile.am ++++ b/customize/Makefile.am +@@ -285,9 +285,11 @@ test-settings-%.sh: + chmod 0755 $@-t + mv $@-t $@ + ++DISTCLEANFILES += \ ++ $(password_test_scripts) \ ++ $(settings_test_scripts) ++ + CLEANFILES += \ +- $(password_test_scripts) \ +- $(settings_test_scripts) \ + password-*.img \ + password-*.log \ + settings-*.img +diff --git a/sysprep/Makefile.am b/sysprep/Makefile.am +index 4b29d4e10..4b1c23ce0 100644 +--- a/sysprep/Makefile.am ++++ b/sysprep/Makefile.am +@@ -179,7 +179,7 @@ virt_sysprep_LINK = \ + $(OBJECTS) -o $@ + + # The sysprep_operation_*.mli files are all empty and autogenerated. +-CLEANFILES += \ ++DISTCLEANFILES += \ + $(patsubst %,sysprep_operation_%.mli,$(operations)) + + sysprep_operation_%.mli: diff --git a/0010-Fix-bytecode-compilation-to-output-whole-exe-instead.patch b/0010-Fix-bytecode-compilation-to-output-whole-exe-instead.patch new file mode 100644 index 0000000..b4241da --- /dev/null +++ b/0010-Fix-bytecode-compilation-to-output-whole-exe-instead.patch @@ -0,0 +1,28 @@ +From 6ea88c2011b02a47058ba6d89af156983bd52a91 Mon Sep 17 00:00:00 2001 +From: Jerry James +Date: Fri, 12 Apr 2024 20:11:50 +0100 +Subject: [PATCH] Fix bytecode compilation to output whole exe instead of using + -custom + +These binaries are more resistant to being stripped. + +Reported-by: Ilya Leoshkevich +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2274708 +(cherry picked from commit c249fd5caca8f1eed439f83e2bb1af46c8a28a27) +--- + subdir-rules.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/subdir-rules.mk b/subdir-rules.mk +index 6bd62b653..051dc9d5a 100644 +--- a/subdir-rules.mk ++++ b/subdir-rules.mk +@@ -49,7 +49,7 @@ LOG_DRIVER = env $(SHELL) $(top_srcdir)/build-aux/guestfs-test-driver + + if !HAVE_OCAMLOPT + MLARCHIVE = cma +-LINK_CUSTOM_OCAMLC_ONLY = -custom ++LINK_CUSTOM_OCAMLC_ONLY = -output-complete-exe + BEST = c + else + MLARCHIVE = cmxa diff --git a/0011-po-docs-Run-po4a-translate-and-sed-commands-separate.patch b/0011-po-docs-Run-po4a-translate-and-sed-commands-separate.patch new file mode 100644 index 0000000..de72f45 --- /dev/null +++ b/0011-po-docs-Run-po4a-translate-and-sed-commands-separate.patch @@ -0,0 +1,42 @@ +From 8a942cdd8e6d1aa526844c428660d0bb4ca02770 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Thu, 4 Apr 2024 09:38:28 +0100 +Subject: [PATCH] po-docs: Run po4a-translate and sed commands separately + +I noticed that 1-byte translated POD files were being generated in the +output directory (po-docs/ja/). This seems to have happened because +po4a-translate was generating an error, but because we were +immediately pipeing the output into sed the error was suppressed. + +By running them as two separate commands this cannot happen. + +Fixes: commit bd896d68c06d7f66303bd77daa666367b0de5f3a +(cherry picked from libguestfs commit d755070346c0498672517c844d7ced52e9263197) + +(cherry picked from commit 8c8da80adf8a9e3c350b010b5724a5ae7d9875b6) +--- + po-docs/language.mk | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/po-docs/language.mk b/po-docs/language.mk +index b4e3544ca..ba2e36998 100644 +--- a/po-docs/language.mk ++++ b/po-docs/language.mk +@@ -101,13 +101,16 @@ virt-sysprep.1: virt-sysprep.pod sysprep-extra-options.pod sysprep-operations.po + # Remove both. + # XXX Fix po4a so it doesn't do this. + %.pod: $(srcdir)/../$(LINGUA).po ++ rm -f $@ $@-t + $(guestfs_am_v_po4a_translate)$(PO4A_TRANSLATE) \ + -f pod \ + -M utf-8 -L utf-8 \ + -k 0 \ + -m $(top_srcdir)/$(shell grep -E '/$(basename $@)(\.|$$)' $(top_srcdir)/po-docs/podfiles) \ + -p $< \ +- | $(SED) '0,/^=encoding/d' > $@ ++ -l $@-t ++ $(SED) '0,/^=encoding/d' < $@-t > $@ ++ rm $@-t + + # XXX Can automake do this properly? + install-data-hook: diff --git a/0012-po-docs-Remove-virt-dib-from-list-of-translated-man-.patch b/0012-po-docs-Remove-virt-dib-from-list-of-translated-man-.patch new file mode 100644 index 0000000..40e65be --- /dev/null +++ b/0012-po-docs-Remove-virt-dib-from-list-of-translated-man-.patch @@ -0,0 +1,25 @@ +From 80806f5438c769b71e92a7669db029f5f243cfce Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Fri, 12 Apr 2024 22:06:55 +0100 +Subject: [PATCH] po-docs: Remove virt-dib from list of translated man pages + +This page no longer exists. + +Fixes: commit 57423d907270526ea664ff15601cce956353820e +(cherry picked from commit 2e797d3bb4c8a13305a948e3d87e4eabfd692e17) +--- + po-docs/language.mk | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/po-docs/language.mk b/po-docs/language.mk +index ba2e36998..7328265e6 100644 +--- a/po-docs/language.mk ++++ b/po-docs/language.mk +@@ -30,7 +30,6 @@ MANPAGES = \ + virt-cat.1 \ + virt-customize.1 \ + virt-df.1 \ +- virt-dib.1 \ + virt-diff.1 \ + virt-edit.1 \ + virt-filesystems.1 \ diff --git a/0013-Update-common-submodule.patch b/0013-Update-common-submodule.patch new file mode 100644 index 0000000..7b86099 --- /dev/null +++ b/0013-Update-common-submodule.patch @@ -0,0 +1,65 @@ +From d0b1b1eaaebdff2cee004304e9d498cd2a720e23 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Wed, 24 Apr 2024 12:23:34 +0100 +Subject: [PATCH] Update common submodule + +In particular pick this: + + commit 93a7f3af5c23ece6a8e092827ed5928a8973fd3c + Author: Richard W.M. Jones + Date: Wed Apr 24 12:08:01 2024 +0100 + + options: Allow nbd+unix:// URIs + +(cherry picked from commit 21a507d8aeb2d264863e1fbdfadc0ff44455ffb4) +--- + common | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Submodule common 54869c987..93a7f3af5: +diff --git a/common/options/uri.c b/common/options/uri.c +index 84d393c1e..9180d6a27 100644 +--- a/common/options/uri.c ++++ b/common/options/uri.c +@@ -99,7 +99,7 @@ is_uri (const char *arg) + return 0; + + for (p--; p >= arg; p--) { +- if (!c_islower (*p)) ++ if (! (c_islower (*p) || *p == '+')) + return 0; + } + +@@ -148,7 +148,10 @@ parse (const char *arg, char **path_ret, char **protocol_ret, + } + */ + +- *protocol_ret = strdup (uri->scheme); ++ if (STREQ (uri->scheme, "nbd+unix")) ++ *protocol_ret = strdup ("nbd"); ++ else ++ *protocol_ret = strdup (uri->scheme); + if (*protocol_ret == NULL) { + perror ("strdup: protocol"); + return -1; +@@ -194,7 +197,7 @@ parse (const char *arg, char **path_ret, char **protocol_ret, + if (path && path[0] == '/' && + (STREQ (uri->scheme, "gluster") || + STREQ (uri->scheme, "iscsi") || +- STREQ (uri->scheme, "nbd") || ++ STRPREFIX (uri->scheme, "nbd") || + STREQ (uri->scheme, "rbd") || + STREQ (uri->scheme, "sheepdog"))) + path++; +diff --git a/common/progress/progress.c b/common/progress/progress.c +index e4b30663f..5848abd70 100644 +--- a/common/progress/progress.c ++++ b/common/progress/progress.c +@@ -123,6 +123,7 @@ progress_bar_init (unsigned flags) + bar->machine_readable = 1; + bar->utf8_mode = 0; + bar->have_terminfo = 0; ++ bar->fp = NULL; + } else { + bar->machine_readable = 0; + diff --git a/copy-patches.sh b/copy-patches.sh index b40867c..13343e8 100755 --- a/copy-patches.sh +++ b/copy-patches.sh @@ -7,7 +7,7 @@ set -e # ./copy-patches.sh project=guestfs-tools -rhel_version=9.4 +rhel_version=9.5 # Check we're in the right directory. if [ ! -f $project.spec ]; then diff --git a/guestfs-tools.spec b/guestfs-tools.spec index 6a5f7a2..c572b82 100644 --- a/guestfs-tools.spec +++ b/guestfs-tools.spec @@ -19,7 +19,7 @@ Summary: Tools to access and modify virtual machine disk images Name: guestfs-tools Version: 1.51.6 -Release: 2%{?dist} +Release: 3%{?dist} License: GPL-2.0-or-later AND LGPL-2.0-or-later # Build only for architectures that have a kernel @@ -45,13 +45,22 @@ Source2: libguestfs.keyring Source3: copy-patches.sh # Patches are maintained in the following repository: -# https://github.com/rwmjones/guestfs-tools/commits/rhel-9.4 +# https://github.com/rwmjones/guestfs-tools/commits/rhel-9.5 # Patches. Patch0001: 0001-Update-common-submodule.patch Patch0002: 0002-builder-Add-a-test-of-the-chown-parameter.patch Patch0003: 0003-RHEL-Reject-use-of-libguestfs-winsupport-features-ex.patch Patch0004: 0004-RHEL-builder-Disable-opensuse-repository.patch +Patch0005: 0005-inspector-inspector.c-Remove-extra-cases-covered-by-.patch +Patch0006: 0006-m4-guestfs-c.m4-Re-add-.-configure-enable-werror.patch +Patch0007: 0007-make-fs-Use-S-option-with-z.patch +Patch0008: 0008-sysprep-Make-clearer-that-we-do-not-support-Windows.patch +Patch0009: 0009-build-Use-DISTCLEANFILES-for-a-generated-but-few-rar.patch +Patch0010: 0010-Fix-bytecode-compilation-to-output-whole-exe-instead.patch +Patch0011: 0011-po-docs-Run-po4a-translate-and-sed-commands-separate.patch +Patch0012: 0012-po-docs-Remove-virt-dib-from-list-of-translated-man-.patch +Patch0013: 0013-Update-common-submodule.patch %if 0%{patches_touch_autotools} BuildRequires: autoconf, automake, libtool, gettext-devel @@ -410,6 +419,10 @@ end %changelog +* Wed Apr 24 2024 Richard W.M. Jones - 1.51.6-3 +- Add support for nbd+unix:// URIs + resolves: RHEL-33956 + * Fri Jan 19 2024 Richard W.M. Jones - 1.51.6-2 - Rebase to guestfs-tools 1.51.6 - Implement --key all:...