From 91a94932d91a4452c31445c7351960a4b61b7f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Wed, 10 Apr 2013 15:54:12 +0200 Subject: [PATCH] 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. --- pkgs/tools/misc/coreutils/default.nix | 115 +++++++++++++++----------- 1 file changed, 66 insertions(+), 49 deletions(-) diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index 065d237a073..f55fbc31925 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"; - }; + 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; - - 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; + ++ stdenv.lib.optional aclSupport acl + ++ stdenv.lib.optional selinuxSupport libselinux + ++ stdenv.lib.optional selinuxSupport libsepol; - # 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; + 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; + + enableParallelBuilding = true; + + 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"; + + 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+"; + + maintainers = [ stdenv.lib.maintainers.ludo ]; + }; }; - - # 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; - - 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"; - - 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+"; - - maintainers = [ stdenv.lib.maintainers.ludo ]; - }; -} +in + self