Message ID | 1320762230-14134-1-git-send-email-avi@redhat.com |
---|---|
State | New |
Headers | show |
On Tue, 8 Nov 2011 16:23:50 +0200, Avi Kivity <avi@redhat.com> wrote: > Modern distributions place xattr.h in /usr/include/sys, and fold > libattr.so into libc. They also don't have an ENOATTR. > > Make configure detect this, and add a qemu-xattr.h file that > directs the #include to the right place. > > Signed-off-by: Avi Kivity <avi@redhat.com> > --- > configure | 8 ++++++++ > hw/9pfs/virtio-9p-handle.c | 2 +- > hw/9pfs/virtio-9p-local.c | 2 +- > hw/9pfs/virtio-9p-posix-acl.c | 2 +- > hw/9pfs/virtio-9p-xattr.h | 2 +- > linux-user/syscall.c | 2 +- > qemu-xattr.h | 30 ++++++++++++++++++++++++++++++ > 7 files changed, 43 insertions(+), 5 deletions(-) > create mode 100644 qemu-xattr.h > > diff --git a/configure b/configure > index 9e5da44..5158015 100755 > --- a/configure > +++ b/configure > @@ -129,6 +129,7 @@ xen="" > xen_ctrl_version="" > linux_aio="" > attr="" > +attr_in_sys="" > xfs="" > > vhost_net="no" > @@ -1967,6 +1968,10 @@ EOF > if compile_prog "" "-lattr" ; then > attr=yes > LIBS="-lattr $LIBS" > + # On Fedora 15, there is no attr/xattr.h, and no -lattr: > + elif sed -i s,attr/,sys/, $TMPC && compile_prog "" "" ; then But Fedora 15 also provide libattr-2.4.44-7.fc15.x86_64 libattr-devel-2.4.44-7.fc15.x86_64 I guess we should first check whether sys/xattr.h is available and then check for libattr.so. That will avoid linking qemu to libattr if xattr functions are provided by libc -aneesh
On 11/09/2011 09:03 AM, Aneesh Kumar K.V wrote: > On Tue, 8 Nov 2011 16:23:50 +0200, Avi Kivity <avi@redhat.com> wrote: > > Modern distributions place xattr.h in /usr/include/sys, and fold > > libattr.so into libc. They also don't have an ENOATTR. > > > > Make configure detect this, and add a qemu-xattr.h file that > > directs the #include to the right place. > > > > Signed-off-by: Avi Kivity <avi@redhat.com> > > --- > > configure | 8 ++++++++ > > hw/9pfs/virtio-9p-handle.c | 2 +- > > hw/9pfs/virtio-9p-local.c | 2 +- > > hw/9pfs/virtio-9p-posix-acl.c | 2 +- > > hw/9pfs/virtio-9p-xattr.h | 2 +- > > linux-user/syscall.c | 2 +- > > qemu-xattr.h | 30 ++++++++++++++++++++++++++++++ > > 7 files changed, 43 insertions(+), 5 deletions(-) > > create mode 100644 qemu-xattr.h > > > > diff --git a/configure b/configure > > index 9e5da44..5158015 100755 > > --- a/configure > > +++ b/configure > > @@ -129,6 +129,7 @@ xen="" > > xen_ctrl_version="" > > linux_aio="" > > attr="" > > +attr_in_sys="" > > xfs="" > > > > vhost_net="no" > > @@ -1967,6 +1968,10 @@ EOF > > if compile_prog "" "-lattr" ; then > > attr=yes > > LIBS="-lattr $LIBS" > > + # On Fedora 15, there is no attr/xattr.h, and no -lattr: > > + elif sed -i s,attr/,sys/, $TMPC && compile_prog "" "" ; then > > > But Fedora 15 also provide > > libattr-2.4.44-7.fc15.x86_64 > libattr-devel-2.4.44-7.fc15.x86_64 > > I guess we should first check whether sys/xattr.h is available and then > check for libattr.so. That will avoid linking qemu to libattr if xattr > functions are provided by libc > > Oh, I missed that. And so did Fedora - it's qemu-kvm doesn't provide virtfs for that reason.
diff --git a/configure b/configure index 9e5da44..5158015 100755 --- a/configure +++ b/configure @@ -129,6 +129,7 @@ xen="" xen_ctrl_version="" linux_aio="" attr="" +attr_in_sys="" xfs="" vhost_net="no" @@ -1967,6 +1968,10 @@ EOF if compile_prog "" "-lattr" ; then attr=yes LIBS="-lattr $LIBS" + # On Fedora 15, there is no attr/xattr.h, and no -lattr: + elif sed -i s,attr/,sys/, $TMPC && compile_prog "" "" ; then + attr=yes + attr_in_sys=yes else if test "$attr" = "yes" ; then feature_not_found "ATTR" @@ -3032,6 +3037,9 @@ fi if test "$attr" = "yes" ; then echo "CONFIG_ATTR=y" >> $config_host_mak fi +if test "$attr_in_sys" = "yes" ; then + echo "CONFIG_ATTR_IN_SYS=y" >> $config_host_mak +fi if test "$linux" = "yes" ; then if test "$attr" = "yes" ; then echo "CONFIG_VIRTFS=y" >> $config_host_mak diff --git a/hw/9pfs/virtio-9p-handle.c b/hw/9pfs/virtio-9p-handle.c index c38e0e7..8d53cf0 100644 --- a/hw/9pfs/virtio-9p-handle.c +++ b/hw/9pfs/virtio-9p-handle.c @@ -19,7 +19,7 @@ #include <grp.h> #include <sys/socket.h> #include <sys/un.h> -#include <attr/xattr.h> +#include <qemu-xattr.h> #include <unistd.h> #include <linux/fs.h> #ifdef CONFIG_LINUX_MAGIC_H diff --git a/hw/9pfs/virtio-9p-local.c b/hw/9pfs/virtio-9p-local.c index 782dc0a..740f4e6 100644 --- a/hw/9pfs/virtio-9p-local.c +++ b/hw/9pfs/virtio-9p-local.c @@ -19,7 +19,7 @@ #include <grp.h> #include <sys/socket.h> #include <sys/un.h> -#include <attr/xattr.h> +#include <qemu-xattr.h> #include <linux/fs.h> #ifdef CONFIG_LINUX_MAGIC_H #include <linux/magic.h> diff --git a/hw/9pfs/virtio-9p-posix-acl.c b/hw/9pfs/virtio-9p-posix-acl.c index f5b392e..ff82cf0 100644 --- a/hw/9pfs/virtio-9p-posix-acl.c +++ b/hw/9pfs/virtio-9p-posix-acl.c @@ -12,7 +12,7 @@ */ #include <sys/types.h> -#include <attr/xattr.h> +#include <qemu-xattr.h> #include "hw/virtio.h" #include "virtio-9p.h" #include "fsdev/file-op-9p.h" diff --git a/hw/9pfs/virtio-9p-xattr.h b/hw/9pfs/virtio-9p-xattr.h index 247e414..9437280 100644 --- a/hw/9pfs/virtio-9p-xattr.h +++ b/hw/9pfs/virtio-9p-xattr.h @@ -13,7 +13,7 @@ #ifndef _QEMU_VIRTIO_9P_XATTR_H #define _QEMU_VIRTIO_9P_XATTR_H -#include <attr/xattr.h> +#include "qemu-xattr.h" typedef struct xattr_operations { diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 9f5da36..e9c0566 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -71,7 +71,7 @@ int __clone2(int (*fn)(void *), void *child_stack_base, #include <sys/epoll.h> #endif #ifdef CONFIG_ATTR -#include <attr/xattr.h> +#include <qemu-xattr.h> #endif #define termios host_termios diff --git a/qemu-xattr.h b/qemu-xattr.h new file mode 100644 index 0000000..a1fb46b --- /dev/null +++ b/qemu-xattr.h @@ -0,0 +1,30 @@ +/* + * Host xattr.h abstraction + * + * Copyright 2011 Red Hat Inc. and/or its affiliates + * + * Authors: + * Avi Kivity <avi@redhat.com> + * + * This work is licensed under the terms of the GNU GPL, version 2, or any + * later version. See the COPYING file in the top-level directory. + * + */ +#ifndef QEMU_XATTR_H +#define QEMU_XATTR_H + +/* + * Modern distributions (e.g. Fedora 15, have no libattr.so, place attr.h + * in /usr/include/sys, and don't have ENOATTR. + */ + +#include "config-host.h" + +#ifdef CONFIG_ATTR_IN_SYS +# define ENOATTR ENODATA +# include <sys/xattr.h> +#else +# include <attr/xattr.h> +#endif + +#endif
Modern distributions place xattr.h in /usr/include/sys, and fold libattr.so into libc. They also don't have an ENOATTR. Make configure detect this, and add a qemu-xattr.h file that directs the #include to the right place. Signed-off-by: Avi Kivity <avi@redhat.com> --- configure | 8 ++++++++ hw/9pfs/virtio-9p-handle.c | 2 +- hw/9pfs/virtio-9p-local.c | 2 +- hw/9pfs/virtio-9p-posix-acl.c | 2 +- hw/9pfs/virtio-9p-xattr.h | 2 +- linux-user/syscall.c | 2 +- qemu-xattr.h | 30 ++++++++++++++++++++++++++++++ 7 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 qemu-xattr.h