[libguestfs] Include upstream patch to add guestfs_grub_install into an optional group.

Richard W.M. Jones rjones at fedoraproject.org
Thu Sep 15 21:06:39 UTC 2011


commit 9a8c70ffe43a91255459f2897ad4a25d9a6092e3
Author: Richard W.M. Jones <rjones at redhat.com>
Date:   Thu Sep 15 22:06:22 2011 +0100

    Include upstream patch to add guestfs_grub_install into an optional group.

 ...onal-group-grub-for-the-guestfs_grub_inst.patch |  104 ++++++++++++++++++++
 libguestfs.spec                                    |    8 +-
 2 files changed, 110 insertions(+), 2 deletions(-)
---
diff --git a/0001-Add-an-optional-group-grub-for-the-guestfs_grub_inst.patch b/0001-Add-an-optional-group-grub-for-the-guestfs_grub_inst.patch
new file mode 100644
index 0000000..75464a6
--- /dev/null
+++ b/0001-Add-an-optional-group-grub-for-the-guestfs_grub_inst.patch
@@ -0,0 +1,104 @@
+From 99624d29226ece1abbbdd921183b360f5f80de91 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones at redhat.com>
+Date: Thu, 15 Sep 2011 22:02:43 +0100
+Subject: [PATCH] Add an optional group ("grub") for the guestfs_grub_install
+ API.
+
+This also improves the documentation for this call, pointing out
+several pitfalls in using it.
+
+This unfortunately breaks existing callers that might use
+guestfs_grub_install without checking for this new group.
+---
+ daemon/grub.c                  |    9 ++++++++-
+ generator/generator_actions.ml |   32 +++++++++++++++++++++++++++-----
+ 2 files changed, 35 insertions(+), 6 deletions(-)
+
+diff --git a/daemon/grub.c b/daemon/grub.c
+index f394eef..c61f9df 100644
+--- a/daemon/grub.c
++++ b/daemon/grub.c
+@@ -1,5 +1,5 @@
+ /* libguestfs - the guestfsd daemon
+- * Copyright (C) 2009 Red Hat Inc.
++ * Copyright (C) 2009-2011 Red Hat Inc.
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License as published by
+@@ -24,6 +24,13 @@
+ 
+ #include "daemon.h"
+ #include "actions.h"
++#include "optgroups.h"
++
++int
++optgroup_grub_available (void)
++{
++  return prog_exists ("grub-install");
++}
+ 
+ int
+ do_grub_install (const char *root, const char *device)
+diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml
+index a924d87..49963bc 100644
+--- a/generator/generator_actions.ml
++++ b/generator/generator_actions.ml
+@@ -3013,7 +3013,7 @@ or growing unnecessarily.
+ See also: C<guestfs_zero_device>, C<guestfs_scrub_device>,
+ C<guestfs_is_zero_device>");
+ 
+-  ("grub_install", (RErr, [Pathname "root"; Device "device"], []), 86, [],
++  ("grub_install", (RErr, [Pathname "root"; Device "device"], []), 86, [Optional "grub"],
+    (* See:
+     * https://bugzilla.redhat.com/show_bug.cgi?id=484986
+     * https://bugzilla.redhat.com/show_bug.cgi?id=479760
+@@ -3023,12 +3023,32 @@ C<guestfs_is_zero_device>");
+        ["write"; "/boot/grub/device.map"; "(hd0) /dev/vda"];
+        ["grub_install"; "/"; "/dev/vda"];
+        ["is_dir"; "/boot"]])],
+-   "install GRUB",
++   "install GRUB 1",
+    "\
+-This command installs GRUB (the Grand Unified Bootloader) on
++This command installs GRUB 1 (the Grand Unified Bootloader) on
+ C<device>, with the root directory being C<root>.
+ 
+-Note: If grub-install reports the error
++Notes:
++
++=over 4
++
++=item *
++
++There is currently no way in the API to install grub2, which
++is used by most modern Linux guests.  It is possible to run
++the grub2 command from the guest, although see the
++caveats in L<guestfs(3)/RUNNING COMMANDS>.
++
++=item *
++
++This uses C<grub-install> from the host.  Unfortunately grub is
++not always compatible with itself, so this only works in rather
++narrow circumstances.  Careful testing with each guest version
++is advisable.
++
++=item *
++
++If grub-install reports the error
+ \"No suitable drive was found in the generated device map.\"
+ it may be that you need to create a C</boot/grub/device.map>
+ file first that contains the mapping between grub device names
+@@ -3037,7 +3057,9 @@ a file containing:
+ 
+  (hd0) /dev/vda
+ 
+-replacing C</dev/vda> with the name of the installation device.");
++replacing C</dev/vda> with the name of the installation device.
++
++=back");
+ 
+   ("cp", (RErr, [Pathname "src"; Pathname "dest"], []), 87, [],
+    [InitScratchFS, Always, TestOutput (
+-- 
+1.7.6
+
diff --git a/libguestfs.spec b/libguestfs.spec
index e07e762..afe9e93 100644
--- a/libguestfs.spec
+++ b/libguestfs.spec
@@ -30,7 +30,7 @@ Summary:       Access and modify virtual machine disk images
 Name:          libguestfs
 Epoch:         1
 Version:       1.13.12
-Release:       2%{?dist}
+Release:       3%{?dist}
 License:       LGPLv2+
 Group:         Development/Libraries
 URL:           http://libguestfs.org/
@@ -49,6 +49,9 @@ Patch2:        libguestfs-1.12.0-configure-force-machine-accel-tcg.patch
 # while.
 Patch3:        0001-Fix-qemu-machine-option-for-latest-qemu-thanks-Marku.patch
 
+# Upstream patch to add guestfs_grub_install to an optional group.
+Patch4:        0001-Add-an-optional-group-grub-for-the-guestfs_grub_inst.patch
+
 # Basic build requirements:
 BuildRequires: /usr/bin/pod2man
 BuildRequires: /usr/bin/pod2text
@@ -873,9 +876,10 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
-* Thu Sep 15 2011 Richard W.M. Jones <rjones at redhat.com> - 1:1.13.12-2
+* Thu Sep 15 2011 Richard W.M. Jones <rjones at redhat.com> - 1:1.13.12-3
 - Don't require grub.  See RHBZ#737261.
 - Note this (hopefully temporarily) breaks guestfs_grub_install API.
+- Include upstream patch to add guestfs_grub_install into an optional group.
 
 * Wed Sep 14 2011 Richard W.M. Jones <rjones at redhat.com> - 1:1.13.12-1
 - New upstream version 1.13.12.


More information about the scm-commits mailing list