summary refs log tree commit diff
path: root/pkgs/tools/misc/coreutils
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2017-06-23 20:24:27 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2017-06-23 20:24:27 -0400
commit87fab3d6a548fe4e10d84a8f3d8abdea65c2a9cd (patch)
tree8ccfb9bda2e3121ca35fbca93f2680c7c71a9d6e /pkgs/tools/misc/coreutils
parent56761c9b3d6f829a4f80e02d18fff30e8a6af1eb (diff)
parentf43ae985a68e515197c57de5ab8413d63ae6ef1a (diff)
downloadnixlib-87fab3d6a548fe4e10d84a8f3d8abdea65c2a9cd.tar
nixlib-87fab3d6a548fe4e10d84a8f3d8abdea65c2a9cd.tar.gz
nixlib-87fab3d6a548fe4e10d84a8f3d8abdea65c2a9cd.tar.bz2
nixlib-87fab3d6a548fe4e10d84a8f3d8abdea65c2a9cd.tar.lz
nixlib-87fab3d6a548fe4e10d84a8f3d8abdea65c2a9cd.tar.xz
nixlib-87fab3d6a548fe4e10d84a8f3d8abdea65c2a9cd.tar.zst
nixlib-87fab3d6a548fe4e10d84a8f3d8abdea65c2a9cd.zip
Merge some merged cross-compilation PRs into into staging
Diffstat (limited to 'pkgs/tools/misc/coreutils')
-rw-r--r--pkgs/tools/misc/coreutils/default.nix76
1 files changed, 37 insertions, 39 deletions
diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix
index fdd184180833..42f8e74df313 100644
--- a/pkgs/tools/misc/coreutils/default.nix
+++ b/pkgs/tools/misc/coreutils/default.nix
@@ -1,8 +1,9 @@
-{ lib, stdenv, buildPackages, fetchurl, perl, xz, gmp ? null
+{ stdenv, lib, buildPackages
+, autoconf, automake114x, texinfo, fetchurl, perl, xz, libiconv, gmp ? null
+, hostPlatform, buildPlatform
 , aclSupport ? false, acl ? null
 , attrSupport ? false, attr ? null
 , selinuxSupport? false, libselinux ? null, libsepol ? null
-, autoconf, automake114x, texinfo
 , withPrefix ? false
 , singleBinary ? "symlinks" # you can also pass "shebangs" or false
 }:
@@ -23,10 +24,10 @@ stdenv.mkDerivation rec {
   # FIXME needs gcc 4.9 in bootstrap tools
   hardeningDisable = [ "stackprotector" ];
 
-  patches = optional stdenv.isCygwin ./coreutils-8.23-4.cygwin.patch;
+  patches = optional hostPlatform.isCygwin ./coreutils-8.23-4.cygwin.patch;
 
   # The test tends to fail on btrfs and maybe other unusual filesystems.
-  postPatch = optionalString (!stdenv.isDarwin) ''
+  postPatch = optionalString (!hostPlatform.isDarwin) ''
     sed '2i echo Skipping dd sparse test && exit 0' -i ./tests/dd/sparse.sh
     sed '2i echo Skipping cp sparse test && exit 0' -i ./tests/cp/sparse.sh
     sed '2i echo Skipping rm deep-2 test && exit 0' -i ./tests/rm/deep-2.sh
@@ -42,58 +43,54 @@ stdenv.mkDerivation rec {
   configureFlags =
     optional (singleBinary != false)
       ("--enable-single-binary" + optionalString (isString singleBinary) "=${singleBinary}")
-    ++ optional stdenv.isSunOS "ac_cv_func_inotify_init=no"
-    ++ optional withPrefix "--program-prefix=g";
+    ++ optional hostPlatform.isSunOS "ac_cv_func_inotify_init=no"
+    ++ optional withPrefix "--program-prefix=g"
+    ++ optionals (hostPlatform != buildPlatform && hostPlatform.libc == "glibc") [
+      # TODO(19b98110126fde7cbb1127af7e3fe1568eacad3d): Needed for fstatfs() I
+      # don't know why it is not properly detected cross building with glibc.
+      "fu_cv_sys_stat_statfs2_bsize=yes"
+    ];
+
 
   buildInputs = [ gmp ]
     ++ optional aclSupport acl
     ++ optional attrSupport attr
-    ++ optionals stdenv.isCygwin [ autoconf automake114x texinfo ]   # due to patch
-    ++ optionals selinuxSupport [ libselinux libsepol ];
-
-  crossAttrs = {
-    buildInputs = [ gmp.crossDrv ]
-      ++ optional aclSupport acl.crossDrv
-      ++ optional attrSupport attr.crossDrv
-      ++ optionals selinuxSupport [ libselinux.crossDrv libsepol.crossDrv ]
-      ++ optional (stdenv ? ccCross.libc.libiconv)
-        stdenv.ccCross.libc.libiconv.crossDrv;
-
-    # Prevents attempts of running 'help2man' on cross-built binaries.
-    PERL = "missing";
-
-    # Works around a bug with 8.26:
-    # Makefile:3440: *** Recursive variable 'INSTALL' references itself (eventually).  Stop.
-    preInstall = ''
-      sed -i Makefile -e 's|^INSTALL =.*|INSTALL = ${buildPackages.coreutils}/bin/install -c|'
-    '';
-
-    postInstall = ''
-      rm $out/share/man/man1/*
-      cp ${buildPackages.coreutils}/share/man/man1/* $out/share/man/man1
-    '';
-
-    # Needed for fstatfs()
-    # I don't know why it is not properly detected cross building with glibc.
-    configureFlags = [ "fu_cv_sys_stat_statfs2_bsize=yes" ];
-    doCheck = false;
-  };
+    ++ optionals hostPlatform.isCygwin [ autoconf automake114x texinfo ]   # due to patch
+    ++ optionals selinuxSupport [ libselinux libsepol ]
+       # TODO(@Ericson2314): Investigate whether Darwin could benefit too
+    ++ optional (hostPlatform != buildPlatform && hostPlatform.libc != "glibc") libiconv;
 
   # The tests are known broken on Cygwin
   # (http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19025),
   # Darwin (http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19351),
   # and {Open,Free}BSD.
   # With non-standard storeDir: https://github.com/NixOS/nix/issues/512
-  doCheck = stdenv ? glibc && builtins.storeDir == "/nix/store";
+  doCheck = hostPlatform == buildPlatform
+    && hostPlatform.libc == "glibc"
+    && builtins.storeDir == "/nix/store";
+
+  # Prevents attempts of running 'help2man' on cross-built binaries.
+  ${if hostPlatform == buildPlatform then null else "PERL"} = "missing";
 
   # Saw random failures like ‘help2man: can't get '--help' info from
   # man/sha512sum.td/sha512sum’.
   enableParallelBuilding = false;
 
   NIX_LDFLAGS = optionalString selinuxSupport "-lsepol";
-  FORCE_UNSAFE_CONFIGURE = optionalString stdenv.isSunOS "1";
+  FORCE_UNSAFE_CONFIGURE = optionalString hostPlatform.isSunOS "1";
+
+  makeFlags = optionalString hostPlatform.isDarwin "CFLAGS=-D_FORTIFY_SOURCE=0";
+
+  # Works around a bug with 8.26:
+  # Makefile:3440: *** Recursive variable 'INSTALL' references itself (eventually).  Stop.
+  ${if hostPlatform == buildPlatform then null else "preInstall"} = ''
+    sed -i Makefile -e 's|^INSTALL =.*|INSTALL = ${buildPackages.coreutils}/bin/install -c|'
+  '';
 
-  makeFlags = optionalString stdenv.isDarwin "CFLAGS=-D_FORTIFY_SOURCE=0";
+  ${if hostPlatform == buildPlatform then null else "postInstall"} = ''
+    rm $out/share/man/man1/*
+    cp ${buildPackages.coreutils}/share/man/man1/* $out/share/man/man1
+  '';
 
   meta = {
     homepage = http://www.gnu.org/software/coreutils/;
@@ -112,4 +109,5 @@ stdenv.mkDerivation rec {
 
     maintainers = [ maintainers.eelco ];
   };
+
 }