On Tue, Aug 11, 2015 at 04:20:54PM +0200, Pino Toscano wrote:
On Tuesday 11 August 2015 15:05:04 Richard W.M. Jones wrote:
> On Tue, Aug 11, 2015 at 03:45:11PM +0200, Pino Toscano wrote:
> > Small helper to normalize an architecture string, so it is easier to
> > compare them and check for compatibilities.
> >
> > Make use of it in guest_arch_compatible, simplifying it.
>
> Have a look at:
> 8864c47b94cf44ac2d0d8d4b5019073ad1da121b
Yes, this is what patch #2 partially reverts (and it's mentioned
there).
> > mllib/common_utils.ml | 12 ++++++++++--
> > mllib/common_utils.mli | 5 +++++
> > 2 files changed, 15 insertions(+), 2 deletions(-)
> >
> > diff --git a/mllib/common_utils.ml b/mllib/common_utils.ml
> > index f9e8996..ca6d470 100644
> > --- a/mllib/common_utils.ml
> > +++ b/mllib/common_utils.ml
> > @@ -730,13 +730,21 @@ let rec mkdir_p path permissions =
> > mkdir_p (Filename.dirname path) permissions;
> > Unix.mkdir path permissions
> >
> > +let normalize_arch = function
> > + | "i386" | "i486" | "i586" | "i686"
-> "i386"
> > + | "amd64" | "x86_64" -> "x86_64"
>
> Commit 8864c47b had "x64" also (added by you in b1cf6246).
IIRC x64 was for 64bit Windows guests, but for now that is not needed.
> > + | "powerpc" | "ppc" -> "ppc"
> > + | arch -> arch
> > +
> > (* Are guest arch and host_cpu compatible, in terms of being able
> > * to run commands in the libguestfs appliance?
> > *)
> > let guest_arch_compatible guest_arch =
> > - match Config.host_cpu, guest_arch with
> > + let own = normalize_arch Config.host_cpu in
> > + let guest_arch = normalize_arch guest_arch in
> > + match own, guest_arch with
> > | x, y when x = y -> true
> > - | "x86_64",
("i386"|"i486"|"i586"|"i686") -> true
> > + | "x86_64", "i386" -> true
> > | _ -> false
>
> Commit 8864c47b may have got this wrong. You cannot, for example, run
> 'dnf install' in an i686 guest, as it tries to install x86_64
> packages. Try this command for example:
>
> virt-builder --arch i686 fedora-22 --install net-tools
>
> There doesn't seem to be a way to force dnf to use another basearch.
I would say that this is not a problem of guest_arch_compatible itself
(running programs is possible as it is supposed to be), but more like
some dnf behaviour. Maybe we should pass the architecture when
installing using yum/dnf and the appliance and guest architecture are
not the same?
> I wonder also if instead of a normalize function, we want a compare
> function. Or maybe we want both? A compare function is safer, maybe,
> since it preserves the actual arch string.
I guess it depends on how it is used. In the way patch #2 uses it in
virt-builder, the target architecture does not need to be preserved
exactly -- it is used only for checking among the templates, whose
architecture is normalized on the fly when searching, not changing what
is the actual value coming from the index.
Well OK then, ACK.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/