[Libguestfs] [PATCH] builder: complete architecture handling

Richard W.M. Jones rjones at redhat.com
Tue Mar 11 10:09:45 UTC 2014


On Mon, Mar 10, 2014 at 02:28:20PM +0100, Pino Toscano wrote:
> Add the possibility to choose which architecture use to build the wanted
> image (--arch). Since this implies that running commands on the guest is
> usually not possible when the architecture is different than the host
> one, another new option (--allow-foreign-arch-ops) allows to run
> commands nevertheless.

[..]
> +let filter_arch = function
> +  | "amd64" | "x86_64" | "x64" -> "x86_64"
> +  | "powerpc" | "ppc" -> "ppc"
> +  | "armhfp" | "armhf" -> "armhf"

I don't think "armhf" is a thing.  AFAIK all ARM hard float architectures
would be ARM v7 (or ARM v8, but that's separate).

For reference, RPM's architectures are:

$ rpm --eval %{arm}
armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv7l armv7hl armv7hnl

(Of which no one cares about anything < armv7, and by the end of next
year no one will care about anything < armv8).

> diff --git a/builder/cmdline.ml b/builder/cmdline.ml
> index 6e8bfd8..0dd0ad2 100644
> --- a/builder/cmdline.ml
> +++ b/builder/cmdline.ml
> @@ -44,6 +44,9 @@ let parse_cmdline () =
>    let print_cache_mode () = mode := `Print_cache in
>    let delete_cache_mode () = mode := `Delete_cache in
>  
> +  let arch = ref "" in
> +  let allow_foreign_arch_ops = ref false in

Can't we detect allow_foreign_arch_ops automatically?

For normal uses of libguestfs, the only case that matters is a 32 bit
requested guest architecture on a compatible 64 bit host (eg. ppc on
ppc64 host).  So a simple mapping table of host architecture ->
compatible guest architectures, and drop the option.

> diff --git a/builder/uname-c.c b/builder/uname-c.c

I would have just done:

  List.hd (external_command "uname -m")

but now you've written the FFI code, that's fine :-)

The rest of the patch looks OK to me.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v




More information about the Libguestfs mailing list