diff --git a/pkgs/tools/archivers/gnutar/default.nix b/pkgs/tools/archivers/gnutar/default.nix index 6b125b2127f8..e34bc2b394f1 100644 --- a/pkgs/tools/archivers/gnutar/default.nix +++ b/pkgs/tools/archivers/gnutar/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl }: +{ stdenv, fetchurl, autoreconfHook }: stdenv.mkDerivation rec { name = "gnutar-${version}"; @@ -9,6 +9,9 @@ stdenv.mkDerivation rec { sha256 = "0qkm2k9w8z91hwj8rffpjj9v1vhpiriwz4cdj36k9vrgc3hbzr30"; }; + patches = stdenv.lib.optional stdenv.isDarwin ./gnutar-1.28-darwin.patch; + buildInputs = stdenv.lib.optional stdenv.isDarwin autoreconfHook; + # May have some issues with root compilation because the bootstrap tool # cannot be used as a login shell for now. FORCE_UNSAFE_CONFIGURE = stdenv.lib.optionalString (stdenv.system == "armv7l-linux" || stdenv.isSunOS) "1"; diff --git a/pkgs/tools/archivers/gnutar/gnutar-1.28-darwin.patch b/pkgs/tools/archivers/gnutar/gnutar-1.28-darwin.patch new file mode 100644 index 000000000000..cab0e4406d8e --- /dev/null +++ b/pkgs/tools/archivers/gnutar/gnutar-1.28-darwin.patch @@ -0,0 +1,114 @@ +>From 7d1d3d38cb66b02c062de77847e3c0ecd842366c Mon Sep 17 00:00:00 2001 +From: Pavel Raiskup +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 + 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 header]) +- if test "$with_xattrs" != no; then +- AC_DEFINE([HAVE_XATTRS],,[Define when we have working linux xattrs.]) +- fi +- ) +- fi +- +- # If is not found, then check for + 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 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 + ++/* 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 +