glibc: Simplify derivation further
No native hashes should be changed with this commit default.nix's cross hash should also not be changed
This commit is contained in:
parent
7e096024d7
commit
25edc476fd
|
@ -1,26 +1,34 @@
|
||||||
/* Build configuration used to build glibc, Info files, and locale
|
/* Build configuration used to build glibc, Info files, and locale
|
||||||
information. */
|
information. */
|
||||||
|
|
||||||
cross:
|
{ stdenv, lib, fetchurl
|
||||||
|
, gd ? null, libpng ? null
|
||||||
|
, buildPlatform, hostPlatform
|
||||||
|
, buildPackages
|
||||||
|
}:
|
||||||
|
|
||||||
{ name, fetchurl, lib, stdenv, installLocales ? false
|
{ name
|
||||||
, linuxHeaders ? null
|
, withLinuxHeaders ? false
|
||||||
, profilingLibraries ? false, meta
|
, profilingLibraries ? false
|
||||||
, withGd ? false, gd ? null, libpng ? null
|
, installLocales ? false
|
||||||
, preConfigure ? ""
|
, withGd ? false
|
||||||
, buildPackages ? {}
|
, meta
|
||||||
, ...
|
, ...
|
||||||
} @ args:
|
} @ args:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (buildPackages) linuxHeaders;
|
||||||
version = "2.25";
|
version = "2.25";
|
||||||
sha256 = "067bd9bb3390e79aa45911537d13c3721f1d9d3769931a30c2681bfee66f23a0";
|
sha256 = "067bd9bb3390e79aa45911537d13c3721f1d9d3769931a30c2681bfee66f23a0";
|
||||||
|
cross = if buildPlatform != hostPlatform then hostPlatform else null;
|
||||||
in
|
in
|
||||||
|
|
||||||
assert cross != null -> buildPackages.stdenv ? cc;
|
assert withLinuxHeaders -> linuxHeaders != null;
|
||||||
|
assert withGd -> gd != null && libpng != null;
|
||||||
|
|
||||||
stdenv.mkDerivation ({
|
stdenv.mkDerivation ({
|
||||||
inherit linuxHeaders installLocales;
|
inherit installLocales;
|
||||||
|
linuxHeaders = if withLinuxHeaders then linuxHeaders else null;
|
||||||
|
|
||||||
# The host/target system.
|
# The host/target system.
|
||||||
crossConfig = if cross != null then cross.config else null;
|
crossConfig = if cross != null then cross.config else null;
|
||||||
|
@ -87,13 +95,13 @@ stdenv.mkDerivation ({
|
||||||
"--enable-obsolete-rpc"
|
"--enable-obsolete-rpc"
|
||||||
"--sysconfdir=/etc"
|
"--sysconfdir=/etc"
|
||||||
"--enable-stackguard-randomization"
|
"--enable-stackguard-randomization"
|
||||||
(if linuxHeaders != null
|
(if withLinuxHeaders
|
||||||
then "--with-headers=${linuxHeaders}/include"
|
then "--with-headers=${linuxHeaders}/include"
|
||||||
else "--without-headers")
|
else "--without-headers")
|
||||||
(if profilingLibraries
|
(if profilingLibraries
|
||||||
then "--enable-profile"
|
then "--enable-profile"
|
||||||
else "--disable-profile")
|
else "--disable-profile")
|
||||||
] ++ lib.optionals (cross == null && linuxHeaders != null) [
|
] ++ lib.optionals (cross == null && withLinuxHeaders) [
|
||||||
"--enable-kernel=2.6.32"
|
"--enable-kernel=2.6.32"
|
||||||
] ++ lib.optionals (cross != null) [
|
] ++ lib.optionals (cross != null) [
|
||||||
(if cross.withTLS then "--with-tls" else "--without-tls")
|
(if cross.withTLS then "--with-tls" else "--without-tls")
|
||||||
|
@ -125,7 +133,7 @@ stdenv.mkDerivation ({
|
||||||
BASH_SHELL = "/bin/sh";
|
BASH_SHELL = "/bin/sh";
|
||||||
}
|
}
|
||||||
|
|
||||||
// (removeAttrs args [ "lib" "buildPackages" "fetchurl" "withGd" "gd" "libpng" ]) //
|
// (removeAttrs args [ "withLinuxHeaders" "withGd" ]) //
|
||||||
|
|
||||||
{
|
{
|
||||||
name = name + "-${version}" +
|
name = name + "-${version}" +
|
||||||
|
@ -154,7 +162,22 @@ stdenv.mkDerivation ({
|
||||||
''makeFlags="$makeFlags BUILD_LDFLAGS=-Wl,-rpath,${stdenv.cc.libc}/lib"''
|
''makeFlags="$makeFlags BUILD_LDFLAGS=-Wl,-rpath,${stdenv.cc.libc}/lib"''
|
||||||
}
|
}
|
||||||
|
|
||||||
${preConfigure}
|
|
||||||
|
'' + lib.optionalString (cross != null) ''
|
||||||
|
sed -i s/-lgcc_eh//g "../$sourceRoot/Makeconfig"
|
||||||
|
|
||||||
|
cat > config.cache << "EOF"
|
||||||
|
libc_cv_forced_unwind=yes
|
||||||
|
libc_cv_c_cleanup=yes
|
||||||
|
libc_cv_gnu89_inline=yes
|
||||||
|
# Only due to a problem in gcc configure scripts:
|
||||||
|
libc_cv_sparc64_tls=${if cross.withTLS then "yes" else "no"}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
export BUILD_CC=gcc
|
||||||
|
export CC="$crossConfig-gcc"
|
||||||
|
export AR="$crossConfig-ar"
|
||||||
|
export RANLIB="$crossConfig-ranlib"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preBuild = lib.optionalString withGd "unset NIX_DONT_SET_RPATH";
|
preBuild = lib.optionalString withGd "unset NIX_DONT_SET_RPATH";
|
||||||
|
@ -177,4 +200,17 @@ stdenv.mkDerivation ({
|
||||||
maintainers = [ lib.maintainers.eelco ];
|
maintainers = [ lib.maintainers.eelco ];
|
||||||
platforms = lib.platforms.linux;
|
platforms = lib.platforms.linux;
|
||||||
} // meta;
|
} // meta;
|
||||||
|
}
|
||||||
|
|
||||||
|
// lib.optionalAttrs (cross != null) {
|
||||||
|
preInstall = null; # clobber the native hook
|
||||||
|
|
||||||
|
dontStrip = true;
|
||||||
|
|
||||||
|
separateDebugInfo = false; # this is currently broken for crossDrv
|
||||||
|
|
||||||
|
# To avoid a dependency on the build system 'bash'.
|
||||||
|
preFixup = ''
|
||||||
|
rm $bin/bin/{ldd,tzselect,catchsegv,xtrace}
|
||||||
|
'';
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,23 +1,16 @@
|
||||||
{ lib, stdenv, fetchurl
|
{ stdenv, callPackage
|
||||||
|
, withLinuxHeaders ? true
|
||||||
, installLocales ? true
|
, installLocales ? true
|
||||||
, profilingLibraries ? false
|
, profilingLibraries ? false
|
||||||
, withGd ? false, gd ? null, libpng ? null
|
, withGd ? false
|
||||||
, buildPlatform, hostPlatform
|
|
||||||
, buildPackages
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert stdenv.cc.isGNU;
|
assert stdenv.cc.isGNU;
|
||||||
|
|
||||||
let
|
callPackage ./common.nix { inherit stdenv; } {
|
||||||
build = import ./common.nix;
|
name = "glibc" + stdenv.lib.optionalString withGd "-gd";
|
||||||
cross = if buildPlatform != hostPlatform then hostPlatform else null;
|
|
||||||
inherit (buildPackages) linuxHeaders;
|
|
||||||
in
|
|
||||||
build cross ({
|
|
||||||
name = "glibc" + lib.optionalString withGd "-gd";
|
|
||||||
|
|
||||||
inherit lib stdenv buildPackages fetchurl linuxHeaders installLocales
|
inherit withLinuxHeaders profilingLibraries installLocales withGd;
|
||||||
profilingLibraries withGd gd libpng;
|
|
||||||
|
|
||||||
NIX_NO_SELF_RPATH = true;
|
NIX_NO_SELF_RPATH = true;
|
||||||
|
|
||||||
|
@ -106,36 +99,3 @@ in
|
||||||
|
|
||||||
meta.description = "The GNU C Library";
|
meta.description = "The GNU C Library";
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
(if cross != null
|
|
||||||
then {
|
|
||||||
preConfigure = ''
|
|
||||||
sed -i s/-lgcc_eh//g "../$sourceRoot/Makeconfig"
|
|
||||||
|
|
||||||
cat > config.cache << "EOF"
|
|
||||||
libc_cv_forced_unwind=yes
|
|
||||||
libc_cv_c_cleanup=yes
|
|
||||||
libc_cv_gnu89_inline=yes
|
|
||||||
# Only due to a problem in gcc configure scripts:
|
|
||||||
libc_cv_sparc64_tls=${if cross.withTLS then "yes" else "no"}
|
|
||||||
EOF
|
|
||||||
export BUILD_CC=gcc
|
|
||||||
export CC="$crossConfig-gcc"
|
|
||||||
export AR="$crossConfig-ar"
|
|
||||||
export RANLIB="$crossConfig-ranlib"
|
|
||||||
|
|
||||||
dontStrip=1
|
|
||||||
'';
|
|
||||||
|
|
||||||
preInstall = null; # clobber the native hook
|
|
||||||
|
|
||||||
separateDebugInfo = false; # this is currently broken for crossDrv
|
|
||||||
|
|
||||||
# To avoid a dependency on the build system 'bash'.
|
|
||||||
preFixup = ''
|
|
||||||
rm $bin/bin/{ldd,tzselect,catchsegv,xtrace}
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
else {}))
|
|
||||||
|
|
|
@ -1,13 +1,8 @@
|
||||||
{ lib, stdenv, fetchurl, texinfo, perl }:
|
{ callPackage, texinfo, perl }:
|
||||||
|
|
||||||
let build = import ./common.nix; in
|
callPackage ./common.nix {} {
|
||||||
|
|
||||||
/* null cross builder */
|
|
||||||
build null {
|
|
||||||
name = "glibc-info";
|
name = "glibc-info";
|
||||||
|
|
||||||
inherit fetchurl stdenv lib;
|
|
||||||
|
|
||||||
outputs = [ "out" ];
|
outputs = [ "out" ];
|
||||||
|
|
||||||
configureFlags = [ "--enable-add-ons" ];
|
configureFlags = [ "--enable-add-ons" ];
|
||||||
|
|
|
@ -6,14 +6,13 @@
|
||||||
http://sourceware.org/cgi-bin/cvsweb.cgi/libc/localedata/SUPPORTED?cvsroot=glibc
|
http://sourceware.org/cgi-bin/cvsweb.cgi/libc/localedata/SUPPORTED?cvsroot=glibc
|
||||||
*/
|
*/
|
||||||
|
|
||||||
{ lib, stdenv, fetchurl, writeText, allLocales ? true, locales ? ["en_US.UTF-8/UTF-8"] }:
|
{ stdenv, callPackage, writeText
|
||||||
|
, allLocales ? true, locales ? [ "en_US.UTF-8/UTF-8" ]
|
||||||
|
}:
|
||||||
|
|
||||||
let build = import ./common.nix; in
|
callPackage ./common.nix { inherit stdenv; } {
|
||||||
|
|
||||||
build null {
|
|
||||||
name = "glibc-locales";
|
name = "glibc-locales";
|
||||||
|
|
||||||
inherit fetchurl stdenv lib;
|
|
||||||
installLocales = true;
|
installLocales = true;
|
||||||
|
|
||||||
builder = ./locales-builder.sh;
|
builder = ./locales-builder.sh;
|
||||||
|
|
|
@ -15,6 +15,7 @@ let
|
||||||
common = {
|
common = {
|
||||||
buildPackages.binutils = nativePlatforms;
|
buildPackages.binutils = nativePlatforms;
|
||||||
gmp = nativePlatforms;
|
gmp = nativePlatforms;
|
||||||
|
libcCross = nativePlatforms;
|
||||||
};
|
};
|
||||||
|
|
||||||
gnuCommon = lib.recursiveUpdate common {
|
gnuCommon = lib.recursiveUpdate common {
|
||||||
|
|
Loading…
Reference in New Issue