On Monday 04 of August 2014 01:23:39 Dominyk Tiller wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA512 > > Gnu-Tar seems to have some fairly major build issues on OS X. The > previous version installs and works fine
Dominyk, the previous version 1.27.1 should fail same way, IMO. The code for xattrs is there for some time. On Sunday 03 of August 2014 23:42:59 Paul Eggert wrote: > Dominyk Tiller wrote: > > Any ideas on this? > > Apparently the OS X folks have a different interface for setxattr etc., > one that's not compatible with GNU/Linux. Please try this to work > around the problem: > ./configure --without-xattrs There is unluckily needed to disable building of xattr-at.c, at least temporarily (because that tend to be gnulib candiate). But there needs to be done some additional work (XATTR_NOFOLLOW vs. l*attr, etc.). Dominyk or Denis, could you check attached patch? Note that it requires autoreconf first. After that, --without-xattrs for configure should not be needed. Also cc-ing Anthony, as that patch removes part of his patch needed for Gentoo builds (it should not break the build hopefully, but I'm not completely sure). Pavel
>From 7d1d3d38cb66b02c062de77847e3c0ecd842366c Mon Sep 17 00:00:00 2001 From: Pavel Raiskup <[email protected]> Date: Mon, 4 Aug 2014 13:19:49 +0200 Subject: [PATCH] xattrs: fix bug in configure Be careful to define HAVE_XATTRS when not all needed xattr-related functions are properly defined either in libc or libattr. Reported independently by Denis Excoffier and Dominyk Tille. * acinclude.m4 (TAR_HEADERS_ATTR_XATTR_H): Check for each xattr function separately. Don't AC_CHECK_LIB (LIBS is filled by AC_SEARCH_LIBS when necessary). * lib/xattr-at.c: Do not build when HAVE_XATTRS is not defined. * src/Makefile.am: The LDADD -lattr was redundant. --- acinclude.m4 | 42 ++++++++++++++---------------------------- lib/xattr-at.c | 7 +++++++ src/Makefile.am | 4 ---- 3 files changed, 21 insertions(+), 32 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 3b28b3b..db0bbc7 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -40,37 +40,23 @@ AC_DEFUN([TAR_HEADERS_ATTR_XATTR_H], # First check for <sys/xattr.h> AC_CHECK_HEADERS([sys/xattr.h]) AM_CONDITIONAL([TAR_COND_XATTR_H],[test "$ac_cv_header_sys_xattr_h" = yes]) - AM_CONDITIONAL([TAR_LIB_ATTR],[false]) - if test "$ac_cv_header_sys_xattr_h" = yes; then - AC_CHECK_FUNCS(getxattr fgetxattr lgetxattr \ - setxattr fsetxattr lsetxattr \ - listxattr flistxattr llistxattr, - # only when functions are present - AC_DEFINE([HAVE_SYS_XATTR_H], [1], - [define to 1 if we have <sys/xattr.h> header]) - if test "$with_xattrs" != no; then - AC_DEFINE([HAVE_XATTRS],,[Define when we have working linux xattrs.]) - fi - ) - fi - - # If <sys/xattr.h> is not found, then check for <attr/xattr.h> if test "$ac_cv_header_sys_xattr_h" != yes; then AC_CHECK_HEADERS([attr/xattr.h]) AM_CONDITIONAL([TAR_COND_XATTR_H],[test "$ac_cv_header_attr_xattr_h" = yes]) - AC_CHECK_LIB([attr],[fgetxattr]) - AM_CONDITIONAL([TAR_LIB_ATTR],[test "$ac_cv_lib_attr_fgetxattr" = yes]) - if test "$ac_cv_header_attr_xattr_h" = yes; then - AC_CHECK_FUNCS(getxattr fgetxattr lgetxattr \ - setxattr fsetxattr lsetxattr \ - listxattr flistxattr llistxattr, - # only when functions are present - AC_DEFINE([HAVE_ATTR_XATTR_H], [1], - [define to 1 if we have <attr/xattr.h> header]) - if test "$with_xattrs" != no; then - AC_DEFINE([HAVE_XATTRS],,[Define when we have working linux xattrs.]) - fi - ) + fi + + if test "$with_xattrs" != no; then + for i in getxattr fgetxattr lgetxattr \ + setxattr fsetxattr lsetxattr \ + listxattr flistxattr llistxattr + do + AC_SEARCH_LIBS($i, attr) + eval found=\$ac_cv_search_$i + test "$found" = "no" && break + done + + if test "$found" != no; then + AC_DEFINE([HAVE_XATTRS],,[Define when we have working linux xattrs.]) fi fi ]) diff --git a/lib/xattr-at.c b/lib/xattr-at.c index 443ccae..009bde5 100644 --- a/lib/xattr-at.c +++ b/lib/xattr-at.c @@ -18,6 +18,11 @@ #include <config.h> +/* Temporarily don't build. We are unable to build on (probably not only) + darwin due to lack of l*xattr callbacks (XATTR_NOFOLLOW is alternative) and + different function definitions. */ +#ifdef HAVE_XATTRS + #include "xattr-at.h" #include "openat.h" @@ -108,3 +113,5 @@ #undef AT_FUNC_RESULT #undef AT_FUNC_POST_FILE_PARAM_DECLS #undef AT_FUNC_POST_FILE_ARGS + +#endif diff --git a/src/Makefile.am b/src/Makefile.am index 82b2d46..42daaef 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -52,7 +52,3 @@ AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) LDADD = ../lib/libtar.a ../gnu/libgnu.a $(LIBINTL) $(LIBICONV) tar_LDADD = $(LIBS) $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_EACCESS) $(LIB_SELINUX) - -if TAR_LIB_ATTR -tar_LDADD += -lattr -endif -- 1.9.3
