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

Reply via email to