Add support for nbd+unix:// URIs

resolves: RHEL-33956
This commit is contained in:
Richard W.M. Jones 2024-04-24 16:15:12 +01:00
parent 164bfc174f
commit e0af17cd3e
11 changed files with 399 additions and 3 deletions

View File

@ -0,0 +1,47 @@
From 76080541ae09c6242e0a162009c5faec3ba94b41 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
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);

View File

@ -0,0 +1,42 @@
From dbc179ab026897be96651e7f9ca6026a3ebf540d Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
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).
#---

View File

@ -0,0 +1,43 @@
From 51b0bf74b249ac6646b7e083a678553fc40d44d7 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
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;

View File

@ -0,0 +1,28 @@
From cc0ae4acabfc857f2bcee828e725a9d69dab5735 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
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<sysprep.exe> which is used to unconfigure
-Windows machines in preparation for cloning them. Having said that,
-virt-sysprep does I<not> 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

View File

@ -0,0 +1,63 @@
From a103e367c4fd6bd073c324253833289f6a8ecc3a Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
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:

View File

@ -0,0 +1,28 @@
From 6ea88c2011b02a47058ba6d89af156983bd52a91 Mon Sep 17 00:00:00 2001
From: Jerry James <loganjerry@gmail.com>
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

View File

@ -0,0 +1,42 @@
From 8a942cdd8e6d1aa526844c428660d0bb4ca02770 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
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:

View File

@ -0,0 +1,25 @@
From 80806f5438c769b71e92a7669db029f5f243cfce Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
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 \

View File

@ -0,0 +1,65 @@
From d0b1b1eaaebdff2cee004304e9d498cd2a720e23 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
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 <rjones@redhat.com>
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;

View File

@ -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

View File

@ -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 <rjones@redhat.com> - 1.51.6-3
- Add support for nbd+unix:// URIs
resolves: RHEL-33956
* Fri Jan 19 2024 Richard W.M. Jones <rjones@redhat.com> - 1.51.6-2
- Rebase to guestfs-tools 1.51.6
- Implement --key all:...