[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] tools: adjust --datadir option passed to qemu-upstream's configure script



On Fri, 8 Jun 2012, Jan Beulich wrote:
> >>> On 08.06.12 at 13:11, Stefano Stabellini 
> >>> <stefano.stabellini@xxxxxxxxxxxxx>
> wrote:
> > On Mon, 4 Jun 2012, Jan Beulich wrote:
> >> Passing $(SHAREDIR)/qemu-xen isn't compatible with the way
> >> os-posix.c:os_find_datadir() works. While one would generally expect
> >> that function to honour the --datadir configure option, fixing this is
> >> quite a bit more involved than simply adjusting the configure options
> >> to match the function's behavior (in that, for an installed binary, it
> >> looks in $bindir/../share/qemu). Afaict, so far this can have worked
> >> only by virtue of what CONFIG_QEMU_DATADIR points to being populated
> >> due to (presumably) some other qemu instance being installed on
> >> people's systems (but being absent when running qemu-system-i386 from
> >> the dist/ portion of the build tree).
> >> 
> >> Signed-off-by: Jan Beulich <JBeulich@xxxxxxxx>
> >> 
> >> --- a/tools/Makefile
> >> +++ b/tools/Makefile
> >> @@ -155,7 +155,7 @@ subdir-all-qemu-xen-dir subdir-install-q
> >>            --extra-ldflags="-L$(XEN_ROOT)/tools/libxc \
> >>            -L$(XEN_ROOT)/tools/xenstore" \
> >>            --bindir=$(LIBEXEC) \
> >> -          --datadir=$(SHAREDIR)/qemu-xen \
> >> +          --datadir=$(dir $(LIBEXEC))share/qemu \
> >>            --disable-kvm \
> >>            --python=$(PYTHON) \
> >>            $(IOEMU_CONFIGURE_CROSS); \
> >> 
> >> 
> >> 
> >> 
> > 
> > This is a QEMU bug, so I would rather fix it there.
> 
> That's not as simple as you appear to think, as it would be necessary
> to meaningfully express an arbitrary datadir relative to bindir.
> 
> > In fact the fix could be as simple as the appended patch.
> > Does it work for you?
> > 
> > diff --git a/os-posix.c b/os-posix.c
> > index dc4a6bb..d0c873d 100644
> > --- a/os-posix.c
> > +++ b/os-posix.c
> > @@ -136,6 +136,9 @@ char *os_find_datadir(const char *argv0)
> >              g_free(res);
> >              res = NULL;
> >          }
> > +    } else {
> > +        g_free(res);
> > +        res = NULL;
> 
> How can this work? Afaict it would even break currently working
> cases, as it now makes the function return NULL not only when
> both access() checks failed, but also when the first one succeeded.

Yes, you are right, I misread the error condition of "access".

Like you wrote, os_find_datadir checks for the existence of
$bindir/../share/qemu that normally means /usr/lib/xen/share/qemu, then
it checks for /usr/lib/xen/pc-bios and if they both don't exist return
NULL and data_dir is set to CONFIG_QEMU_DATADIR (that is what we want).

While it is certainly not how I would have written this code, it should
work correctly. How is that you system has /usr/lib/xen/pc-bios or
/usr/lib/xen/share/qemu?

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.