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 { stdenv.mkDerivation (rec {
name = "gettext-0.18.1.1"; name = "gettext-0.18.1.1";
src = fetchurl { src = fetchurl {
url = "mirror://gnu/gettext/${name}.tar.gz"; url = "mirror://gnu/gettext/${name}.tar.gz";
sha256 = "1sa3ch12qxa4h3ya6hkz119yclcccmincl9j20dhrdx5mykp3b4k"; sha256 = "1sa3ch12qxa4h3ya6hkz119yclcccmincl9j20dhrdx5mykp3b4k";
@ -11,7 +13,7 @@ stdenv.mkDerivation (rec {
patches = [ ./no-gets.patch ]; patches = [ ./no-gets.patch ];
configureFlags = [ "--disable-csharp" ] configureFlags = [ "--disable-csharp" ]
++ (stdenv.lib.optionals stdenv.isCygwin ++ (optionals stdenv.isCygwin
[ # We have a static libiconv, so we can only build the static lib. [ # We have a static libiconv, so we can only build the static lib.
"--disable-shared" "--enable-static" "--disable-shared" "--enable-static"
@ -30,12 +32,12 @@ stdenv.mkDerivation (rec {
fi fi
''; '';
buildInputs = stdenv.lib.optional (!stdenv.isLinux) libiconv; buildInputs = libiconvOrEmpty;
enableParallelBuilding = true; enableParallelBuilding = true;
crossAttrs = { crossAttrs = {
buildInputs = stdenv.lib.optional (stdenv.gccCross.libc ? libiconv) buildInputs = optional (stdenv.gccCross.libc ? libiconv)
stdenv.gccCross.libc.libiconv.crossDrv; stdenv.gccCross.libc.libiconv.crossDrv;
# Gettext fails to guess the cross compiler # Gettext fails to guess the cross compiler
configureFlags = "CXX=${stdenv.cross.config}-g++"; 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 = patchPhase =
# Make sure `error.c' gets compiled and is part of `libgettextlib.la'. # Make sure `error.c' gets compiled and is part of `libgettextlib.la'.
# This fixes: # 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 aclSupport -> acl != null;
assert selinuxSupport -> libselinux != null && libsepol != null; assert selinuxSupport -> libselinux != null && libsepol != null;
with { inherit (stdenv.lib) optional optionals optionalString optionalAttrs; };
let let
self = stdenv.mkDerivation rec { self = stdenv.mkDerivation (rec {
name = "coreutils-8.21"; name = "coreutils-8.21";
src = fetchurl { src = fetchurl {
@ -17,16 +20,14 @@ let
nativeBuildInputs = [ perl ]; nativeBuildInputs = [ perl ];
buildInputs = [ gmp ] buildInputs = [ gmp ]
++ stdenv.lib.optional aclSupport acl ++ optional aclSupport acl
++ stdenv.lib.optional selinuxSupport libselinux ++ optionals selinuxSupport [ libselinux libsepol ];
++ stdenv.lib.optional selinuxSupport libsepol;
crossAttrs = { crossAttrs = {
buildInputs = [ gmp ] buildInputs = [ gmp ]
++ stdenv.lib.optional aclSupport acl.crossDrv ++ optional aclSupport acl.crossDrv
++ stdenv.lib.optional selinuxSupport libselinux.crossDrv ++ optionals selinuxSupport [ libselinux.crossDrv libsepol.crossDrv ]
++ stdenv.lib.optional selinuxSupport libsepol.crossDrv ++ optional (stdenv.gccCross.libc ? libiconv)
++ stdenv.lib.optional (stdenv.gccCross.libc ? libiconv)
stdenv.gccCross.libc.libiconv.crossDrv; stdenv.gccCross.libc.libiconv.crossDrv;
buildPhase = '' buildPhase = ''
@ -57,7 +58,7 @@ let
enableParallelBuilding = true; enableParallelBuilding = true;
NIX_LDFLAGS = stdenv.lib.optionalString selinuxSupport "-lsepol"; NIX_LDFLAGS = optionalString selinuxSupport "-lsepol";
meta = { meta = {
homepage = http://www.gnu.org/software/coreutils/; homepage = http://www.gnu.org/software/coreutils/;
@ -74,6 +75,8 @@ let
maintainers = [ ]; maintainers = [ ];
}; };
}; } // optionalAttrs stdenv.isDarwin {
makeFlags = "CFLAGS=-D_FORTIFY_SOURCE=0";
});
in in
self self

View File

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