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

Re: [Xen-devel] [Qemu-devel] [PATCH RESEND] xen: limit pkg-config to PKG_CONFIG_PATH for xen libraries



> -----Original Message-----
> From: Qemu-devel [mailto:qemu-devel-
> bounces+paul.durrant=citrix.com@xxxxxxxxxx] On Behalf Of Paul Durrant
> Sent: 24 March 2017 19:18
> To: 'Stefano Stabellini' <sstabellini@xxxxxxxxxx>; Juergen Gross
> <jgross@xxxxxxxx>
> Cc: Anthony Perard <anthony.perard@xxxxxxxxxx>; xen-
> devel@xxxxxxxxxxxxxxxxxxxx; qemu-devel@xxxxxxxxxx
> Subject: Re: [Qemu-devel] [PATCH RESEND] xen: limit pkg-config to
> PKG_CONFIG_PATH for xen libraries
> 
> > -----Original Message-----
> > From: Stefano Stabellini [mailto:sstabellini@xxxxxxxxxx]
> > Sent: 24 March 2017 19:12
> > To: Juergen Gross <jgross@xxxxxxxx>
> > Cc: Paul Durrant <Paul.Durrant@xxxxxxxxxx>; qemu-devel@xxxxxxxxxx;
> xen-
> > devel@xxxxxxxxxxxxxxxxxxxx; Anthony Perard
> <anthony.perard@xxxxxxxxxx>;
> > Stefano Stabellini <sstabellini@xxxxxxxxxx>
> > Subject: Re: [PATCH RESEND] xen: limit pkg-config to PKG_CONFIG_PATH
> for
> > xen libraries
> >
> > On Fri, 24 Mar 2017, Juergen Gross wrote:
> > > On 24/03/17 18:20, Paul Durrant wrote:
> > > > The Xen tools Makefile has been modified to set PKG_CONFIG_PATH
> > such that
> > > > use of pkg-config in QEMU configure finds the newly built Xen libraries.
> > > > However, because older versions of Xen do not set
> PKG_CONFIG_PATH
> > in the
> > > > Makefile, the QEMU configure script will pick up any Xen libraries that
> > may
> > > > be installed in the build system rather than the newly built ones. Thus,
> > > > if Xen 4.9 is built and installed it becomes impossible to build tools 
> > > > for
> > > > an older version of Xen on the same system (without manual de-
> > installtion).
> > > >
> > > > This patch modifies configure to set PKG_CONFIG_LIBDIR to empty
> when
> > > > looking for Xen libraries to ensure the search is limited only to
> > > > PKG_CONFIG_PATH. This makes sure that, for versions of Xen prior to
> > 4.9,
> > > > pkg-config fails to find the Xen libraries an approriately falls back to
> > > > previous methods of probing.
> > > >
> > > > Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
> >
> > Paul, thanks for spotting this. I didn't spot it because I don't have
> > Xen installed in my build environment, but we should not rely on that.
> >
> >
> > > NAK. You are breaking normal qemu build with installed Xen pkg-config
> > > files.
> >
> > The normal QEMU build, done as part of the xen-unstable build, is
> > actually done without Xen being installed in the system. So, if I am not
> > mistaken, the current mechanism also breaks the following entirely
> > legitimate scenario:
> >
> > - user has 4.9 installed on her system
> > - user git clones xen 4.10
> > - user build xen 4.10
> >   - as part of the xen build, qemu is cloned and built
> >   - the qemu configure script picks up the pkgconfig file from
> >     /usr/share and misconfigure the xen version, setting it to 4.9
> >     instead of 4.10
> >   - the qemu build fails
> > - the xen build fails
> >
> > Am I right?
> >
> 
> I think the above would actually work because the 4.10 files would be found
> before the 4.9 files. What fails is installing 4.9 and then trying to build 
> 4.8.

I should qualify that with saying 'trying to build 4.8 with a newer QEMU (i.e. 
one that has a configure which knows about pkg-config).
I still think that's a legitimate use-case though.

  Paul

> 
> > Regardless, both cases need to work correctly. A lot of people rely on
> > out of tree builds, including cross-compilations and openembedded. This
> > is a regression.
> >
> > I suggest we set PKG_CONFIG_LIBDIR (or PKG_CONFIG_PATH?) to the
> right
> > place depending on where the configure script is picking up the Xen
> > header files:
> >
> > - If the configure script picks up the Xen header files from /usr/include,
> > then we want the pkgconfig dir to be /usr/share/pkgconfig.
> >
> > - If the configure script picks up the Xen header files from
> > /local/xen-unstable.git/tools/libxc/include, then we want the pkgconfig
> > dir to be local/xen-unstable.git/tools/pkg-config.
> >
> 
> Yes, that's what is needed.
> 
> > If that's too complex, we can always go back to the good old,
> > non-pkgconfig days.
> >
> 
> Unless this can be speedily resolved I think reverting the pkg-config changes
> would be best.
> 
> Another possibility perhaps would be an explicit configure flag for in-tree 
> and
> out-of-tree builds so we can say exactly where QEMU should be getting its
> environment from?
> 
>   Paul
> 
> >
> > > > Cc: Anthony Perard <anthony.perard@xxxxxxxxxx>
> > > > Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> > > > Cc: Juergen Gross <jgross@xxxxxxxx>
> > > > ---
> > > >  configure | 12 ++++++++----
> > > >  1 file changed, 8 insertions(+), 4 deletions(-)
> > > >
> > > > diff --git a/configure b/configure
> > > > index fdf47e4..6ef5980 100755
> > > > --- a/configure
> > > > +++ b/configure
> > > > @@ -1974,6 +1974,10 @@ fi
> > > >  ##########################################
> > > >  # xen probe
> > > >
> > > > +xen_query_pkg_config() {
> > > > +    PKG_CONFIG_LIBDIR= ${pkg_config_exe} "$@"
> > > > +}
> > > > +
> > > >  if test "$xen" != "no" ; then
> > > >    xen_libs="-lxenstore -lxenctrl -lxenguest"
> > > >    xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
> > > > @@ -1997,9 +2001,9 @@ EOF
> > > >      xen=no
> > > >
> > > >    # Xen version via pkg-config (Xen 4.9.0 and newer)
> > > > -  elif $pkg_config --exists xencontrol ; then
> > > > +  elif xen_query_pkg_config --exists xencontrol; then
> > > >      xen_ctrl_version="$(printf '%d%02d%02d' \
> > > > -      $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
> > > > +      $(xen_query_pkg_config --modversion xencontrol | sed 's/\./ /g')
> )"
> > > >      xen=yes
> > > >
> > > >    elif
> > > > @@ -2216,8 +2220,8 @@ EOF
> > > >      if test $xen_ctrl_version -ge 40900 ; then
> > > >        xen_pc="xencontrol xenstore xenguest xenforeignmemory
> > xengnttab xenevtchn"
> > > >        xen_pc="$xen_pc xendevicemodel"
> > > > -      xen_libs="$($pkg_config --libs $xen_pc)"
> > > > -      QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
> > > > +      xen_libs="$(xen_query_pkg_config --libs $xen_pc)"
> > > > +      QEMU_CFLAGS="$QEMU_CFLAGS $(xen_query_pkg_config --
> cflags
> > $xen_pc)"
> > > >      elif test $xen_ctrl_version -ge 40701 ; then
> > > >        libs_softmmu="$xen_stable_libs $libs_softmmu"
> > > >      fi
> > > >
> > >


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

 


Rackspace

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