coreutils,gettext: don't change hash except for darwin

Also some style cleanup.
Note that defining an empty-string variable *does* change the hash.
I would like to change this behaviour one day
(clean up attrs when compiling the derivation).
This commit is contained in:
Vladimír Čunát 2013-09-14 14:56:10 +02:00
parent 055e646bfc
commit 961c2fe7c3
2 changed files with 26 additions and 25 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"
@ -19,9 +21,6 @@ stdenv.mkDerivation (rec {
"--config-cache"
]);
makeFlags = stdenv.lib.optionalString stdenv.isDarwin
"CFLAGS=-D_FORTIFY_SOURCE=0";
# On cross building, gettext supposes that the wchar.h from libc
# does not fulfill gettext needs, so it tries to work with its
# own wchar.h file, which does not cope well with the system's
@ -33,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++";
@ -73,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

@ -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,10 +58,7 @@ let
enableParallelBuilding = true;
NIX_LDFLAGS = stdenv.lib.optionalString selinuxSupport "-lsepol";
makeFlags = stdenv.lib.optionalString stdenv.isDarwin
"CFLAGS=-D_FORTIFY_SOURCE=0";
NIX_LDFLAGS = optionalString selinuxSupport "-lsepol";
meta = {
homepage = http://www.gnu.org/software/coreutils/;
@ -77,6 +75,8 @@ let
maintainers = [ ];
};
};
} // optionalAttrs stdenv.isDarwin {
makeFlags = "CFLAGS=-D_FORTIFY_SOURCE=0";
});
in
self