summary refs log tree commit diff
path: root/pkgs/tools/archivers/gnutar
diff options
context:
space:
mode:
authorEric Seidel <gridaphobe@gmail.com>2015-04-06 20:56:19 -0700
committerEric Seidel <gridaphobe@gmail.com>2015-04-06 20:56:50 -0700
commite29bf6e26ebe2f4b5b03588b415c53cc73500793 (patch)
treee5a0c74e6ed8f58209cc66cb76cd8154b70f3b81 /pkgs/tools/archivers/gnutar
parent6c9b529dd3f63091ef0c6e31fcd61c5bb556428f (diff)
downloadnixpkgs-e29bf6e26ebe2f4b5b03588b415c53cc73500793.tar
nixpkgs-e29bf6e26ebe2f4b5b03588b415c53cc73500793.tar.gz
nixpkgs-e29bf6e26ebe2f4b5b03588b415c53cc73500793.tar.bz2
nixpkgs-e29bf6e26ebe2f4b5b03588b415c53cc73500793.tar.lz
nixpkgs-e29bf6e26ebe2f4b5b03588b415c53cc73500793.tar.xz
nixpkgs-e29bf6e26ebe2f4b5b03588b415c53cc73500793.tar.zst
nixpkgs-e29bf6e26ebe2f4b5b03588b415c53cc73500793.zip
gnutar: patch to build on darwin
Diffstat (limited to 'pkgs/tools/archivers/gnutar')
-rw-r--r--pkgs/tools/archivers/gnutar/default.nix5
-rw-r--r--pkgs/tools/archivers/gnutar/gnutar-1.28-darwin.patch114
2 files changed, 118 insertions, 1 deletions
diff --git a/pkgs/tools/archivers/gnutar/default.nix b/pkgs/tools/archivers/gnutar/default.nix
index 6b125b2127f..e34bc2b394f 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 00000000000..cab0e4406d8
--- /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 <address@hidden>
+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
+