Compare commits

...

No commits in common. "c9-beta" and "c9s" have entirely different histories.
c9-beta ... c9s

23 changed files with 640 additions and 24 deletions

5
.gitignore vendored
View File

@ -1,2 +1,3 @@
SOURCES/guestfs-tools-1.51.6.tar.gz
SOURCES/libguestfs.keyring
*~
/guestfs-tools-*.tar.gz
/guestfs-tools-*.tar.gz.sig

View File

@ -1,2 +1,2 @@
7a64ba52bca3a3591d2e639a6bc9002d61e7d374 SOURCES/guestfs-tools-1.51.6.tar.gz
1bbc40f501a7fef9eef2a39b701a71aee2fea7c4 SOURCES/libguestfs.keyring
7a64ba52bca3a3591d2e639a6bc9002d61e7d374 guestfs-tools-1.51.6.tar.gz
b15f24873be9b9c35184d09e15a4230bef8e550e guestfs-tools-1.51.6.tar.gz.sig

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

@ -0,0 +1,222 @@
From d326f1080aafe32d47b49064099f2e9d7759b2a0 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 16 May 2024 12:49:24 +0100
Subject: [PATCH] customize: Implement --inject-blnsvr operation
Also updates the common submodule with the generated changes from
libguestfs, and the implementation of Inject_virtio_win.inject_blnsvr.
(cherry picked from commit 80d258baa49214c8e59b91d6085595c9b989fc0d)
---
common | 2 +-
customize/customize_run.ml | 13 +++++++++++--
2 files changed, 12 insertions(+), 3 deletions(-)
Submodule common 93a7f3af5..830cbdcf4:
diff --git a/common/mlcustomize/customize-options.pod b/common/mlcustomize/customize-options.pod
index ff93630d8..b2ac57526 100644
--- a/common/mlcustomize/customize-options.pod
+++ b/common/mlcustomize/customize-options.pod
@@ -193,6 +193,18 @@ L<virt-builder(1)/INSTALLING PACKAGES>.
Set the hostname of the guest to C<HOSTNAME>. You can use a
dotted hostname.domainname (FQDN) if you want.
+=item B<--inject-blnsvr> METHOD
+
+Inject the Balloon Server (F<blnsvr.exe>) into a Windows guest.
+This operation also injects a firstboot script so that the Balloon
+Server is installed when the guest boots.
+
+The parameter is the same as used by the I<--inject-virtio-win> operation.
+
+Note that to do a full conversion of a Windows guest from a
+foreign hypervisor like VMware (which involves many other operations)
+you should use the L<virt-v2v(1)> tool instead of this.
+
=item B<--inject-qemu-ga> METHOD
Inject the QEMU Guest Agent into a Windows guest. The guest
diff --git a/common/mlcustomize/customize-synopsis.pod b/common/mlcustomize/customize-synopsis.pod
index bb0ce1255..957de8cf2 100644
--- a/common/mlcustomize/customize-synopsis.pod
+++ b/common/mlcustomize/customize-synopsis.pod
@@ -3,16 +3,16 @@
[--copy SOURCE:DEST] [--copy-in LOCALPATH:REMOTEDIR]
[--delete PATH] [--edit FILE:EXPR] [--firstboot SCRIPT]
[--firstboot-command 'CMD+ARGS'] [--firstboot-install PKG,PKG..]
- [--hostname HOSTNAME] [--inject-qemu-ga METHOD]
- [--inject-virtio-win METHOD] [--install PKG,PKG..]
- [--link TARGET:LINK[:LINK..]] [--mkdir DIR] [--move SOURCE:DEST]
- [--password USER:SELECTOR] [--root-password SELECTOR]
- [--run SCRIPT] [--run-command 'CMD+ARGS'] [--scrub FILE]
- [--sm-attach SELECTOR] [--sm-register] [--sm-remove]
- [--sm-unregister] [--ssh-inject USER[:SELECTOR]]
- [--tar-in TARFILE:REMOTEDIR] [--timezone TIMEZONE] [--touch FILE]
- [--truncate FILE] [--truncate-recursive PATH]
- [--uninstall PKG,PKG..] [--update] [--upload FILE:DEST]
- [--write FILE:CONTENT] [--no-logfile]
+ [--hostname HOSTNAME] [--inject-blnsvr METHOD]
+ [--inject-qemu-ga METHOD] [--inject-virtio-win METHOD]
+ [--install PKG,PKG..] [--link TARGET:LINK[:LINK..]] [--mkdir DIR]
+ [--move SOURCE:DEST] [--password USER:SELECTOR]
+ [--root-password SELECTOR] [--run SCRIPT]
+ [--run-command 'CMD+ARGS'] [--scrub FILE] [--sm-attach SELECTOR]
+ [--sm-register] [--sm-remove] [--sm-unregister]
+ [--ssh-inject USER[:SELECTOR]] [--tar-in TARFILE:REMOTEDIR]
+ [--timezone TIMEZONE] [--touch FILE] [--truncate FILE]
+ [--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] [--sm-credentials SELECTOR]
diff --git a/common/mlcustomize/customize_cmdline.ml b/common/mlcustomize/customize_cmdline.ml
index 48ee33445..c4d6a77d5 100644
--- a/common/mlcustomize/customize_cmdline.ml
+++ b/common/mlcustomize/customize_cmdline.ml
@@ -61,6 +61,8 @@ and op = [
(* --firstboot-install PKG,PKG.. *)
| `Hostname of string
(* --hostname HOSTNAME *)
+ | `InjectBalloonServer of string
+ (* --inject-blnsvr METHOD *)
| `InjectQemuGA of string
(* --inject-qemu-ga METHOD *)
| `InjectVirtioWin of string
@@ -286,6 +288,12 @@ let rec argspec () =
s_"Set the hostname"
),
Some "HOSTNAME", "Set the hostname of the guest to C<HOSTNAME>. You can use a\ndotted hostname.domainname (FQDN) if you want.";
+ (
+ [ L"inject-blnsvr" ],
+ Getopt.String (s_"METHOD", fun s -> List.push_front (`InjectBalloonServer s) ops),
+ s_"Inject the Balloon Server into a Windows guest"
+ ),
+ Some "METHOD", "Inject the Balloon Server (F<blnsvr.exe>) into a Windows guest.\nThis operation also injects a firstboot script so that the Balloon\nServer is installed when the guest boots.\n\nThe parameter is the same as used by the I<--inject-virtio-win> operation.\n\nNote that to do a full conversion of a Windows guest from a\nforeign hypervisor like VMware (which involves many other operations)\nyou should use the L<virt-v2v(1)> tool instead of this.";
(
[ L"inject-qemu-ga" ],
Getopt.String (s_"METHOD", fun s -> List.push_front (`InjectQemuGA s) ops),
diff --git a/common/mlcustomize/customize_cmdline.mli b/common/mlcustomize/customize_cmdline.mli
index 51a156eae..ee62961a1 100644
--- a/common/mlcustomize/customize_cmdline.mli
+++ b/common/mlcustomize/customize_cmdline.mli
@@ -53,6 +53,8 @@ and op = [
(* --firstboot-install PKG,PKG.. *)
| `Hostname of string
(* --hostname HOSTNAME *)
+ | `InjectBalloonServer of string
+ (* --inject-blnsvr METHOD *)
| `InjectQemuGA of string
(* --inject-qemu-ga METHOD *)
| `InjectVirtioWin of string
diff --git a/common/mlcustomize/inject_virtio_win.ml b/common/mlcustomize/inject_virtio_win.ml
index 2a30b2008..4e0ed0e0e 100644
--- a/common/mlcustomize/inject_virtio_win.ml
+++ b/common/mlcustomize/inject_virtio_win.ml
@@ -24,6 +24,8 @@ open Common_gettext.Gettext
open Regedit
+let re_blnsvr = PCRE.compile ~caseless:true "\\bblnsvr\\.exe$"
+
type t = {
g : Guestfs.guestfs; (** guestfs handle *)
@@ -267,6 +269,18 @@ and inject_qemu_ga t =
configure_qemu_ga t msi_files;
msi_files <> [] (* return true if we found some qemu-ga MSI files *)
+and inject_blnsvr t =
+ let files = copy_blnsvr t in
+ match files with
+ | [] -> false (* Didn't find or install anything. *)
+
+ (* We usually find blnsvr.exe in two locations (drivers/by-os and
+ * drivers/by-driver). Pick the first.
+ *)
+ | blnsvr :: _ ->
+ configure_blnsvr t blnsvr;
+ true
+
and add_guestor_to_registry t ((g, root) as reg) drv_name drv_pciid =
let ddb_node = g#hivex_node_get_child root "DriverDatabase" in
@@ -351,6 +365,11 @@ and copy_qemu_ga t =
(fun () ->
error (f_"root directory / is missing from the virtio-win directory or ISO.\n\nThis should not happen and may indicate that virtio-win or virt-v2v is broken in some way. Please report this as a bug with a full debug log."))
+and copy_blnsvr t =
+ copy_from_virtio_win t "/" "/" (virtio_iso_path_matches_blnsvr t)
+ (fun () ->
+ error (f_"root directory / is missing from the virtio-win directory or ISO.\n\nThis should not happen and may indicate that virtio-win or virt-v2v is broken in some way. Please report this as a bug with a full debug log."))
+
(* Copy all files from virtio_win directory/ISO located in [srcdir]
* subdirectory and all its subdirectories to the [destdir]. The directory
* hierarchy is not preserved, meaning all files will be directly in [destdir].
@@ -513,6 +532,10 @@ and virtio_iso_path_matches_qemu_ga t path =
| ("x86_64", "rhev-qga64.msi") -> true
| _ -> false
+(* Find blnsvr for the current Windows version. *)
+and virtio_iso_path_matches_blnsvr t path =
+ virtio_iso_path_matches_guest_os t path && PCRE.matches re_blnsvr path
+
(* Look up in libosinfo for the OS, and copy all the locally
* available files specified as drivers for that OS to the [destdir].
*
@@ -586,3 +609,10 @@ and configure_qemu_ga t files =
Firstboot.add_firstboot_powershell t.g t.root
(sprintf "install-%s.ps1" msi_path) !psh_script;
) files
+
+and configure_blnsvr t blnsvr =
+ let cmd = sprintf "\
+ @echo off\n\
+ echo Installing %s\n\
+ c:\\%s -i\n" blnsvr blnsvr in
+ Firstboot.add_firstboot_script t.g t.root (sprintf "install-%s" blnsvr) cmd
diff --git a/common/mlcustomize/inject_virtio_win.mli b/common/mlcustomize/inject_virtio_win.mli
index d14f04973..d273c4dd3 100644
--- a/common/mlcustomize/inject_virtio_win.mli
+++ b/common/mlcustomize/inject_virtio_win.mli
@@ -93,3 +93,11 @@ val inject_qemu_ga : t -> bool
the MSI(s).
Returns [true] iff we were able to inject qemu-ga. *)
+
+val inject_blnsvr : t -> bool
+(** Inject the Balloon Server ([blnsvr.exe]) into a Windows guest.
+
+ A firstboot script is also injected which should install
+ the server by running [blnsvr -i].
+
+ Returns [true] iff we were able to inject the Balloon Server. *)
diff --git a/customize/customize_run.ml b/customize/customize_run.ml
index 1314d6e30..1d7c13eaf 100644
--- a/customize/customize_run.ml
+++ b/customize/customize_run.ml
@@ -113,8 +113,8 @@ let run (g : G.guestfs) root (ops : ops) =
Hashtbl.replace passwords user pw
in
- (* Helper function to convert --inject-qemu-ga/--inject-virtio-win
- * method parameter into a virtio-win handle.
+ (* Helper function to convert --inject-blnsvr/--inject-qemu-ga/
+ * --inject-virtio-win method parameter into a virtio-win handle.
*)
let get_virtio_win_handle op meth =
if g#inspect_get_type root <> "windows" then (
@@ -216,6 +216,15 @@ let run (g : G.guestfs) root (ops : ops) =
if not (Hostname.set_hostname g root hostname) then
warning (f_"hostname could not be set for this type of guest")
+ | `InjectBalloonServer meth ->
+ (match get_virtio_win_handle "--inject-blnsvr" meth with
+ | None -> ()
+ | Some t ->
+ if not (Inject_virtio_win.inject_blnsvr t) then
+ warning (f_"--inject-blnsvr: blnsvr.exe not found in \
+ virtio-win source that you specified")
+ )
+
| `InjectQemuGA meth ->
(match get_virtio_win_handle "--inject-qemu-ga" meth with
| None -> ()

3
README.md Normal file
View File

@ -0,0 +1,3 @@
# guestfs-tools
The guestfs-tools package

View File

@ -1,17 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQJFBAABCAAvFiEE93dPsa0HSn6Mh2fqkXOPc+G3aKAFAmV0UtkRHHJpY2hAYW5u
ZXhpYS5vcmcACgkQkXOPc+G3aKArQQ/8DR2NMjDy8zyXfLSAoSPcChx+wS36RRhj
rYGSNzD2aNhMzB+WGZHomiW4ahLqj7OAuXQlmpUMjLVsAfyja8aNW7rsnfTM1l5u
p6GS3DFTk34XgVrZO01pEBLWk9blr+xhAFP+qNIwWKv76+xO0QjNa0D5gJvBojZf
J3ct9l1ibKqDh4eG9ReSSUh76WOxm97JwP80ZRBKCpcNJe+fceJGHdBhl5UJFw/N
lAKY+d7MESk9aKZCNy6BRrls6IeIlsOBB8HbG5mXqMv4IfwarB91zZTG9NJRpmSN
MzZ/GIwSCJy9U9hmG3dA/70xFu3HQkshaCisXb4FrzCnlTHZFNCvwdhY2k3qIzZr
PuvsA3ETQqYUj66AlOOD/3TqAu36kFEeeateH75cIiOYfkUUmrO7FF76hY2jNs+q
puTm14dg/MA0OROQv5ykcuN2ukvfsyEsCFao+76am5MG8CViy1tSnL/ZSBN0itLl
jalFbag3GbDCwVt+lpPQbrLDTWNVabAEeN9LlMMcsciIGWDiz99Ntmwe1yxwLLl3
kk8f9xFiWXU7C0yrPY4HzPGNjzklsaNlpzVnqgkWpR1gzpLr37HWx0E1Ct6OlJBJ
7vllv9L9bZErUwyvlSuGcY/6rHd+KnWSS0IBvEfE/eveQErzwgiuGiBUnvGB6NUT
l868E59pb84=
=cEbV
-----END PGP SIGNATURE-----

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

6
gating.yaml Executable file
View File

@ -0,0 +1,6 @@
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: xen-ci.brew-build.tier1.functional}

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: 4%{?dist}
License: GPL-2.0-or-later AND LGPL-2.0-or-later
# Build only for architectures that have a kernel
@ -45,13 +45,23 @@ 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
Patch0014: 0014-customize-Implement-inject-blnsvr-operation.patch
%if 0%{patches_touch_autotools}
BuildRequires: autoconf, automake, libtool, gettext-devel
@ -410,6 +420,12 @@ end
%changelog
* Thu May 16 2024 Richard W.M. Jones <rjones@redhat.com> - 1.51.6-4
- Add support for nbd+unix:// URIs
resolves: RHEL-33956
- customize: Implement --inject-blnsvr operation
resolves: RHEL-36634
* 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:...

BIN
libguestfs.keyring Normal file

Binary file not shown.

2
sources Normal file
View File

@ -0,0 +1,2 @@
SHA512 (guestfs-tools-1.51.6.tar.gz) = 48e6d5bb7c8b1e6b7b9b7e59b3122b287d321d3e8e435fa65f84aab594d8cf91b0d6d50a4dde7f9265ccabc73bb3b67a8593bfd86a4fbf6b17323fe8496fc8c5
SHA512 (guestfs-tools-1.51.6.tar.gz.sig) = 341e5220a3251e019dbca20997d478f2ea49008e488f9cfa309a636502902eb3e84dbcadea5f9993e19b1066766a6e1afd1aaf2b22e74212699da66c0a9266ab