From 9a8c70ffe43a91255459f2897ad4a25d9a6092e3 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 15 Sep 2011 22:06:22 +0100 Subject: [PATCH] Include upstream patch to add guestfs_grub_install into an optional group. --- ...group-grub-for-the-guestfs_grub_inst.patch | 104 ++++++++++++++++++ libguestfs.spec | 8 +- 2 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 0001-Add-an-optional-group-grub-for-the-guestfs_grub_inst.patch 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" +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, C, + C"); + +- ("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"); + ["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, with the root directory being C. + +-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. ++ ++=item * ++ ++This uses C 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 + file first that contains the mapping between grub device names +@@ -3037,7 +3057,9 @@ a file containing: + + (hd0) /dev/vda + +-replacing C with the name of the installation device."); ++replacing C 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 - 1:1.13.12-2 +* Thu Sep 15 2011 Richard W.M. Jones - 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 - 1:1.13.12-1 - New upstream version 1.13.12.