summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/libraries/glibc/common.nix64
-rw-r--r--pkgs/development/libraries/glibc/default.nix52
-rw-r--r--pkgs/development/libraries/glibc/info.nix9
-rw-r--r--pkgs/development/libraries/glibc/locales.nix9
-rw-r--r--pkgs/top-level/release-cross.nix1
5 files changed, 63 insertions, 72 deletions
diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix
index 74fb00501096..db80a8be299c 100644
--- a/pkgs/development/libraries/glibc/common.nix
+++ b/pkgs/development/libraries/glibc/common.nix
@@ -1,26 +1,34 @@
 /* Build configuration used to build glibc, Info files, and locale
    information.  */
 
-cross:
-
-{ name, fetchurl, lib, stdenv, installLocales ? false
-, linuxHeaders ? null
-, profilingLibraries ? false, meta
-, withGd ? false, gd ? null, libpng ? null
-, preConfigure ? ""
-, buildPackages ? {}
+{ stdenv, lib, fetchurl
+, gd ? null, libpng ? null
+, buildPlatform, hostPlatform
+, buildPackages
+}:
+
+{ name
+, withLinuxHeaders ? false
+, profilingLibraries ? false
+, installLocales ? false
+, withGd ? false
+, meta
 , ...
 } @ args:
 
 let
+  inherit (buildPackages) linuxHeaders;
   version = "2.25";
   sha256 = "067bd9bb3390e79aa45911537d13c3721f1d9d3769931a30c2681bfee66f23a0";
+  cross = if buildPlatform != hostPlatform then hostPlatform else null;
 in
 
-assert cross != null -> buildPackages.stdenv ? cc;
+assert withLinuxHeaders -> linuxHeaders != null;
+assert withGd -> gd != null && libpng != null;
 
 stdenv.mkDerivation ({
-  inherit linuxHeaders installLocales;
+  inherit  installLocales;
+  linuxHeaders = if withLinuxHeaders then linuxHeaders else null;
 
   # The host/target system.
   crossConfig = if cross != null then cross.config else null;
@@ -87,13 +95,13 @@ stdenv.mkDerivation ({
       "--enable-obsolete-rpc"
       "--sysconfdir=/etc"
       "--enable-stackguard-randomization"
-      (if linuxHeaders != null
+      (if withLinuxHeaders
        then "--with-headers=${linuxHeaders}/include"
        else "--without-headers")
       (if profilingLibraries
        then "--enable-profile"
        else "--disable-profile")
-    ] ++ lib.optionals (cross == null && linuxHeaders != null) [
+    ] ++ lib.optionals (cross == null && withLinuxHeaders) [
       "--enable-kernel=2.6.32"
     ] ++ lib.optionals (cross != null) [
       (if cross.withTLS then "--with-tls" else "--without-tls")
@@ -125,7 +133,7 @@ stdenv.mkDerivation ({
   BASH_SHELL = "/bin/sh";
 }
 
-// (removeAttrs args [ "lib" "buildPackages" "fetchurl" "withGd" "gd" "libpng" ]) //
+// (removeAttrs args [ "withLinuxHeaders" "withGd" ]) //
 
 {
   name = name + "-${version}" +
@@ -154,7 +162,22 @@ stdenv.mkDerivation ({
       ''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";
@@ -177,4 +200,17 @@ stdenv.mkDerivation ({
     maintainers = [ lib.maintainers.eelco ];
     platforms = lib.platforms.linux;
   } // 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}
+  '';
 })
diff --git a/pkgs/development/libraries/glibc/default.nix b/pkgs/development/libraries/glibc/default.nix
index 7295e4d62f4f..976dbcde47ff 100644
--- a/pkgs/development/libraries/glibc/default.nix
+++ b/pkgs/development/libraries/glibc/default.nix
@@ -1,23 +1,16 @@
-{ lib, stdenv, fetchurl
+{ stdenv, callPackage
+, withLinuxHeaders ? true
 , installLocales ? true
 , profilingLibraries ? false
-, withGd ? false, gd ? null, libpng ? null
-, buildPlatform, hostPlatform
-, buildPackages
+, withGd ? false
 }:
 
 assert stdenv.cc.isGNU;
 
-let
-  build = import ./common.nix;
-  cross = if buildPlatform != hostPlatform then hostPlatform else null;
-  inherit (buildPackages) linuxHeaders;
-in
-  build cross ({
-    name = "glibc" + lib.optionalString withGd "-gd";
+callPackage ./common.nix { inherit stdenv; } {
+    name = "glibc" + stdenv.lib.optionalString withGd "-gd";
 
-    inherit lib stdenv buildPackages fetchurl linuxHeaders installLocales
-      profilingLibraries withGd gd libpng;
+    inherit withLinuxHeaders profilingLibraries installLocales withGd;
 
     NIX_NO_SELF_RPATH = true;
 
@@ -106,36 +99,3 @@ in
 
     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 {}))
diff --git a/pkgs/development/libraries/glibc/info.nix b/pkgs/development/libraries/glibc/info.nix
index 84ec43e11a85..5cb004cc870d 100644
--- a/pkgs/development/libraries/glibc/info.nix
+++ b/pkgs/development/libraries/glibc/info.nix
@@ -1,13 +1,8 @@
-{ lib, stdenv, fetchurl, texinfo, perl }:
+{ callPackage, texinfo, perl }:
 
-let build = import ./common.nix; in
-
-/* null cross builder */
-build null {
+callPackage ./common.nix {} {
   name = "glibc-info";
 
-  inherit fetchurl stdenv lib;
-
   outputs = [ "out" ];
 
   configureFlags = [ "--enable-add-ons" ];
diff --git a/pkgs/development/libraries/glibc/locales.nix b/pkgs/development/libraries/glibc/locales.nix
index 994390cf8290..bf077a0c12c3 100644
--- a/pkgs/development/libraries/glibc/locales.nix
+++ b/pkgs/development/libraries/glibc/locales.nix
@@ -6,14 +6,13 @@
    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
-
-build null {
+callPackage ./common.nix { inherit stdenv; } {
   name = "glibc-locales";
 
-  inherit fetchurl stdenv lib;
   installLocales = true;
 
   builder = ./locales-builder.sh;
diff --git a/pkgs/top-level/release-cross.nix b/pkgs/top-level/release-cross.nix
index ad868531598e..1e764ef00727 100644
--- a/pkgs/top-level/release-cross.nix
+++ b/pkgs/top-level/release-cross.nix
@@ -15,6 +15,7 @@ let
   common = {
     buildPackages.binutils = nativePlatforms;
     gmp = nativePlatforms;
+    libcCross = nativePlatforms;
   };
 
   gnuCommon = lib.recursiveUpdate common {