about summary refs log tree commit diff
path: root/pkgs/tools/misc/coreutils
diff options
context:
space:
mode:
authorLluís Batlle i Rossell <viric@viric.name>2013-04-10 15:54:12 +0200
committerLluís Batlle i Rossell <viric@viric.name>2013-04-10 15:56:14 +0200
commit91a94932d91a4452c31445c7351960a4b61b7f1e (patch)
treeaf0b58b36820b56c3f08af086e9be6f02cf9ee77 /pkgs/tools/misc/coreutils
parentd8f98d1a8542bade5c342f0029ad6c58e65d4de2 (diff)
downloadnixlib-91a94932d91a4452c31445c7351960a4b61b7f1e.tar
nixlib-91a94932d91a4452c31445c7351960a4b61b7f1e.tar.gz
nixlib-91a94932d91a4452c31445c7351960a4b61b7f1e.tar.bz2
nixlib-91a94932d91a4452c31445c7351960a4b61b7f1e.tar.lz
nixlib-91a94932d91a4452c31445c7351960a4b61b7f1e.tar.xz
nixlib-91a94932d91a4452c31445c7351960a4b61b7f1e.tar.zst
nixlib-91a94932d91a4452c31445c7351960a4b61b7f1e.zip
coreutils: fixing cross-build
coreutils can't generate the man pages cross-building. I do a trick
to get them from a non-cross-built coreutils.
Diffstat (limited to 'pkgs/tools/misc/coreutils')
-rw-r--r--pkgs/tools/misc/coreutils/default.nix103
1 files changed, 60 insertions, 43 deletions
diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix
index 065d237a0731..f55fbc31925a 100644
--- a/pkgs/tools/misc/coreutils/default.nix
+++ b/pkgs/tools/misc/coreutils/default.nix
@@ -6,57 +6,74 @@
 assert aclSupport -> acl != null;
 assert selinuxSupport -> libselinux != null && libsepol != null;
 
-stdenv.mkDerivation rec {
-  name = "coreutils-8.21";
+let
+  self = stdenv.mkDerivation rec {
+    name = "coreutils-8.21";
 
-  src = fetchurl {
-    url = "mirror://gnu/coreutils/${name}.tar.xz";
-    sha256 = "064f512185iysqqcvhnhaf3bfmzrvcgs7n405qsyp99zmfyl9amd";
-  };
-
-  nativeBuildInputs = [ perl ];
-  buildInputs = [ gmp ]
-    ++ stdenv.lib.optional aclSupport acl
-    ++ stdenv.lib.optional selinuxSupport libselinux
-    ++ stdenv.lib.optional selinuxSupport libsepol;
+    src = fetchurl {
+      url = "mirror://gnu/coreutils/${name}.tar.xz";
+      sha256 = "064f512185iysqqcvhnhaf3bfmzrvcgs7n405qsyp99zmfyl9amd";
+    };
 
-  crossAttrs = {
+    nativeBuildInputs = [ perl ];
     buildInputs = [ gmp ]
-      ++ stdenv.lib.optional aclSupport acl.crossDrv
-      ++ stdenv.lib.optional selinuxSupport libselinux.crossDrv
-      ++ stdenv.lib.optional selinuxSupport libsepol.crossDrv
-      ++ stdenv.lib.optional (stdenv.gccCross.libc ? libiconv)
-        stdenv.gccCross.libc.libiconv.crossDrv;
-
-    # 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;
-  };
+      ++ stdenv.lib.optional aclSupport acl
+      ++ stdenv.lib.optional selinuxSupport libselinux
+      ++ stdenv.lib.optional selinuxSupport libsepol;
+
+    crossAttrs = {
+      buildInputs = [ gmp ]
+        ++ stdenv.lib.optional aclSupport acl.crossDrv
+        ++ stdenv.lib.optional selinuxSupport libselinux.crossDrv
+        ++ stdenv.lib.optional selinuxSupport libsepol.crossDrv
+        ++ stdenv.lib.optional (stdenv.gccCross.libc ? libiconv)
+          stdenv.gccCross.libc.libiconv.crossDrv;
+
+      buildPhase = ''
+        make || (
+          pushd man
+          for a in *.x; do
+            touch `basename $a .x`.1
+          done
+          popd; make ) 
+      '';
+
+      postInstall = ''
+        rm $out/share/man/man1/*
+        cp ${self}/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;
+    };
 
-  # 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.
-  doCheck = stdenv ? glibc;
+    # 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.
+    doCheck = stdenv ? glibc;
 
-  enableParallelBuilding = true;
+    enableParallelBuilding = true;
 
-  NIX_LDFLAGS = stdenv.lib.optionalString selinuxSupport "-lsepol";
+    NIX_LDFLAGS = stdenv.lib.optionalString selinuxSupport "-lsepol";
 
-  meta = {
-    homepage = http://www.gnu.org/software/coreutils/;
-    description = "The basic file, shell and text manipulation utilities of the GNU operating system";
+    meta = {
+      homepage = http://www.gnu.org/software/coreutils/;
+      description = "The basic file, shell and text manipulation utilities of the GNU operating system";
 
-    longDescription = ''
-      The GNU Core Utilities are the basic file, shell and text
-      manipulation utilities of the GNU operating system.  These are
-      the core utilities which are expected to exist on every
-      operating system.
-    '';
+      longDescription = ''
+        The GNU Core Utilities are the basic file, shell and text
+        manipulation utilities of the GNU operating system.  These are
+        the core utilities which are expected to exist on every
+        operating system.
+      '';
 
-    license = "GPLv3+";
+      license = "GPLv3+";
 
-    maintainers = [ stdenv.lib.maintainers.ludo ];
+      maintainers = [ stdenv.lib.maintainers.ludo ];
+    };
   };
-}
+in
+  self