[Libguestfs] [PATCH 2/2] v2v: ilnux: detect name of grub2-mkconfig
Pino Toscano
ptoscano at redhat.com
Thu Aug 11 09:51:20 UTC 2016
On Thursday, 11 August 2016 00:35:55 CEST Tomáš Golembiovský wrote:
> On Debian family of OSes Grub2 tools are prefixed with 'grub-', not with
> 'grub2-'. We have to detect the correct name of the tool to use it.
>
> Signed-off-by: Tomáš Golembiovský <tgolembi at redhat.com>
> ---
> v2v/convert_linux.ml | 21 +++++++++++++++++++--
> 1 file changed, 19 insertions(+), 2 deletions(-)
>
> diff --git a/v2v/convert_linux.ml b/v2v/convert_linux.ml
> index 103728b..1f5f12c 100644
> --- a/v2v/convert_linux.ml
> +++ b/v2v/convert_linux.ml
> @@ -109,6 +109,23 @@ let rec convert ~keep_serial_console (g : G.guestfs) inspect source rcaps =
> Not_found ->
> error (f_"no grub1/grub-legacy or grub2 configuration file was found") in
>
> + let grub2_mkconfig_cmd =
> + if grub = `Grub2 then
> + try
> + (* Red Hat and Suse families *)
> + ignore (g#command [| "grub2-mkconfig"; "--version" |]);
> + "grub2-mkconfig"
> + with G.Error _ ->
> + try
> + (* Debian family *)
> + ignore (g#command [| "grub-mkconfig"; "--version" |]);
> + "grub-mkconfig"
> + with G.Error _ ->
> + error (f_"failed to find grub2-mkconfig binary (but Grub2 was detected on guest)")
> + else
> + ""
> + in
Maybe it would be worth to put the elements in a list, and iterate
using List.find:
let elems = [ "grub2-mkconfig"; "grub-mkconfig" ] in
let elem =
try
List.find (
let e ->
try ignore (g#command [| e; "--version" |]); true
with G.Error _ -> false
) elems
with Not_found ->
error "not found" in
Also, what I've seen usually done is checking for the existance of the
executable, eg: if g#file_exists "/usr/sbin/grub2-mkconfig" then ...
this way, even if requiring to specify the exact locations of the tools,
would avoid ignoring a tool just because it cannot run for some reason,
while we need to fail because of that.
--
Pino Toscano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20160811/d50eb1db/attachment.sig>
More information about the Libguestfs
mailing list