darwin: update coreutils and other fixes (close #939)

This commit is contained in:
Vladimír Čunát 2013-09-14 15:00:04 +02:00
commit 44d37c8526
4 changed files with 27 additions and 94 deletions

View File

@ -1,8 +1,10 @@
{ stdenv, fetchurl, libiconv }:
{ stdenv, fetchurl, libiconvOrEmpty }:
with { inherit (stdenv.lib) optionals optionalAttrs; };
stdenv.mkDerivation (rec {
name = "gettext-0.18.1.1";
src = fetchurl {
url = "mirror://gnu/gettext/${name}.tar.gz";
sha256 = "1sa3ch12qxa4h3ya6hkz119yclcccmincl9j20dhrdx5mykp3b4k";
@ -11,7 +13,7 @@ stdenv.mkDerivation (rec {
patches = [ ./no-gets.patch ];
configureFlags = [ "--disable-csharp" ]
++ (stdenv.lib.optionals stdenv.isCygwin
++ (optionals stdenv.isCygwin
[ # We have a static libiconv, so we can only build the static lib.
"--disable-shared" "--enable-static"
@ -30,12 +32,12 @@ stdenv.mkDerivation (rec {
fi
'';
buildInputs = stdenv.lib.optional (!stdenv.isLinux) libiconv;
buildInputs = libiconvOrEmpty;
enableParallelBuilding = true;
crossAttrs = {
buildInputs = stdenv.lib.optional (stdenv.gccCross.libc ? libiconv)
buildInputs = optional (stdenv.gccCross.libc ? libiconv)
stdenv.gccCross.libc.libiconv.crossDrv;
# Gettext fails to guess the cross compiler
configureFlags = "CXX=${stdenv.cross.config}-g++";
@ -70,9 +72,11 @@ stdenv.mkDerivation (rec {
};
}
//
// optionalAttrs stdenv.isDarwin {
makeFlags = "CFLAGS=-D_FORTIFY_SOURCE=0";
}
stdenv.lib.optionalAttrs stdenv.isCygwin {
// optionalAttrs stdenv.isCygwin {
patchPhase =
# Make sure `error.c' gets compiled and is part of `libgettextlib.la'.
# This fixes:

View File

@ -1,70 +0,0 @@
{ stdenv, fetchurl, perl, gmp ? null
, aclSupport ? false, acl ? null
, selinuxSupport? false, libselinux ? null, libsepol ? null
}:
assert aclSupport -> acl != null;
assert selinuxSupport -> libselinux != null && libsepol != null;
stdenv.mkDerivation rec {
name = "coreutils-8.19";
src = fetchurl {
url = "mirror://gnu/coreutils/${name}.tar.xz";
sha256 = "1rx9x3fp848w4nny7irdkcpkan9fcx24d99v5dkwgkyq7wc76f5d";
};
nativeBuildInputs = [ perl ];
buildInputs = [ gmp ]
++ 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;
# 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;
}
//
# XXX: Temporary workaround to allow GNU/Hurd builds with newer libcs.
(stdenv.lib.optionalAttrs (stdenv.cross.config == "i586-pc-gnu") {
patches = [ ./gets-undeclared.patch ];
}));
# 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 = [ ];
};
}

View File

@ -6,8 +6,11 @@
assert aclSupport -> acl != null;
assert selinuxSupport -> libselinux != null && libsepol != null;
with { inherit (stdenv.lib) optional optionals optionalString optionalAttrs; };
let
self = stdenv.mkDerivation rec {
self = stdenv.mkDerivation (rec {
name = "coreutils-8.21";
src = fetchurl {
@ -17,16 +20,14 @@ let
nativeBuildInputs = [ perl ];
buildInputs = [ gmp ]
++ stdenv.lib.optional aclSupport acl
++ stdenv.lib.optional selinuxSupport libselinux
++ stdenv.lib.optional selinuxSupport libsepol;
++ optional aclSupport acl
++ optionals selinuxSupport [ libselinux 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)
++ optional aclSupport acl.crossDrv
++ optionals selinuxSupport [ libselinux.crossDrv libsepol.crossDrv ]
++ optional (stdenv.gccCross.libc ? libiconv)
stdenv.gccCross.libc.libiconv.crossDrv;
buildPhase = ''
@ -57,7 +58,7 @@ let
enableParallelBuilding = true;
NIX_LDFLAGS = stdenv.lib.optionalString selinuxSupport "-lsepol";
NIX_LDFLAGS = optionalString selinuxSupport "-lsepol";
meta = {
homepage = http://www.gnu.org/software/coreutils/;
@ -74,6 +75,8 @@ let
maintainers = [ ];
};
};
} // optionalAttrs stdenv.isDarwin {
makeFlags = "CFLAGS=-D_FORTIFY_SOURCE=0";
});
in
self

View File

@ -665,11 +665,7 @@ let
convmv = callPackage ../tools/misc/convmv { };
coreutils = (if stdenv.isDarwin then
# 8.20 doesn't build on Darwin
callPackage ../tools/misc/coreutils/8.19.nix
else
callPackage ../tools/misc/coreutils)
coreutils = callPackage ../tools/misc/coreutils
{
# TODO: Add ACL support for cross-Linux.
aclSupport = crossSystem == null && stdenv.isLinux;