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 <a...@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 + 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 <a...@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 -- 1.7.7.1