Author: ludo
Date: Wed Apr 4 20:25:51 2012
New Revision: 33587
URL: https://nixos.org/websvn/nix/?rev=33587&sc=1
Log:
GNU: Avoid `__overrides' altogether, by using a non-recursive attrset.
Thanks to Eelco for the suggestion.
Modified:
nixpkgs/trunk/pkgs/os-specific/gnu/default.nix
nixpkgs/trunk/pkgs/top-level/all-packages.nix
Modified: nixpkgs/trunk/pkgs/os-specific/gnu/default.nix
==============================================================================
--- nixpkgs/trunk/pkgs/os-specific/gnu/default.nix Wed Apr 4 20:25:44
2012 (r33586)
+++ nixpkgs/trunk/pkgs/os-specific/gnu/default.nix Wed Apr 4 20:25:51
2012 (r33587)
@@ -3,96 +3,102 @@
args@{ fetchgit, stdenv, autoconf, automake, automake111x, libtool
, texinfo, glibcCross, hurdPartedCross, libuuid, samba_light
, gccCrossStageStatic, gccCrossStageFinal
-, forceBuildDrv, forceSystem, callPackage, platform, config, crossSystem
+, forceBuildDrv, forceSystem, newScope, platform, config, crossSystem
, overrides ? {} }:
with args;
-rec {
+let
+ callPackage = newScope gnu;
+
+ gnu = {
+ hurdCross = forceBuildDrv(import ./hurd {
+ inherit fetchgit stdenv autoconf libtool texinfo
+ glibcCross hurdPartedCross;
+ inherit (gnu) machHeaders mig;
+ libuuid = libuuid.hostDrv;
+ automake = automake111x;
+ headersOnly = false;
+ cross = assert crossSystem != null; crossSystem;
+ gccCross = gccCrossStageFinal;
+ });
+
+ hurdCrossIntermediate = forceBuildDrv(import ./hurd {
+ inherit fetchgit stdenv autoconf libtool texinfo glibcCross;
+ inherit (gnu) machHeaders mig;
+ automake = automake111x;
+ headersOnly = false;
+ cross = assert crossSystem != null; crossSystem;
+
+ # The "final" GCC needs glibc and the Hurd libraries (libpthread in
+ # particular) so we first need an intermediate Hurd built with the
+ # intermediate GCC.
+ gccCross = gccCrossStageStatic;
+
+ # This intermediate Hurd is only needed to build libpthread, which needs
+ # libihash, and to build Parted, which needs libstore and
+ # libshouldbeinlibc.
+ buildTarget = "libihash libstore libshouldbeinlibc";
+ installTarget = "libihash-install libstore-install
libshouldbeinlibc-install";
+ });
+
+ hurdHeaders = callPackage ./hurd {
+ automake = automake111x;
+ headersOnly = true;
+ gccCross = null;
+ glibcCross = null;
+ libuuid = null;
+ hurdPartedCross = null;
+ };
+
+ libpthreadHeaders = callPackage ./libpthread {
+ headersOnly = true;
+ hurd = null;
+ };
+
+ libpthreadCross = forceBuildDrv(import ./libpthread {
+ inherit fetchgit stdenv autoconf automake libtool glibcCross;
+ inherit (gnu) machHeaders hurdHeaders;
+ hurd = gnu.hurdCrossIntermediate;
+ gccCross = gccCrossStageStatic;
+ cross = assert crossSystem != null; crossSystem;
+ });
+
+ # In theory GNU Mach doesn't have to be cross-compiled. However, since it
+ # has to be built for i586 (it doesn't work on x86_64), one needs a cross
+ # compiler for that host.
+ mach = callPackage ./mach {
+ automake = automake111x;
+ };
+
+ machHeaders = callPackage ./mach {
+ automake = automake111x;
+ headersOnly = true;
+ mig = null;
+ };
+
+ mig = callPackage ./mig {
+ # Build natively, but force use of a 32-bit environment because we're
+ # targeting `i586-pc-gnu'.
+ stdenv = (forceSystem "i686-linux").stdenv;
+ };
+
+ # XXX: Use this one for its `.hostDrv'. Using the one above from
+ # `x86_64-linux' leads to building a different cross-toolchain because of
+ # the `forceSystem'.
+ mig_raw = callPackage ./mig {};
+
+ smbfs = callPackage ./smbfs {
+ samba = samba_light;
+ hurd = hurdCross;
+ };
+
+ unionfs = callPackage ./unionfs {
+ hurd = hurdCross;
+ };
+ }
+
# Allow callers to override elements of this attribute set.
- __overrides = overrides;
+ // overrides;
- hurdCross = forceBuildDrv(import ./hurd {
- inherit fetchgit stdenv autoconf libtool texinfo machHeaders
- mig glibcCross hurdPartedCross;
- libuuid = libuuid.hostDrv;
- automake = automake111x;
- headersOnly = false;
- cross = assert crossSystem != null; crossSystem;
- gccCross = gccCrossStageFinal;
- });
-
- hurdCrossIntermediate = forceBuildDrv(import ./hurd {
- inherit fetchgit stdenv autoconf libtool texinfo machHeaders
- mig glibcCross;
- automake = automake111x;
- headersOnly = false;
- cross = assert crossSystem != null; crossSystem;
-
- # The "final" GCC needs glibc and the Hurd libraries (libpthread in
- # particular) so we first need an intermediate Hurd built with the
- # intermediate GCC.
- gccCross = gccCrossStageStatic;
-
- # This intermediate Hurd is only needed to build libpthread, which needs
- # libihash, and to build Parted, which needs libstore and
- # libshouldbeinlibc.
- buildTarget = "libihash libstore libshouldbeinlibc";
- installTarget = "libihash-install libstore-install
libshouldbeinlibc-install";
- });
-
- hurdHeaders = callPackage ./hurd {
- automake = automake111x;
- headersOnly = true;
- gccCross = null;
- glibcCross = null;
- libuuid = null;
- hurdPartedCross = null;
- };
-
- libpthreadHeaders = callPackage ./libpthread {
- headersOnly = true;
- hurd = null;
- };
-
- libpthreadCross = forceBuildDrv(import ./libpthread {
- inherit fetchgit stdenv autoconf automake libtool
- machHeaders hurdHeaders glibcCross;
- hurd = hurdCrossIntermediate;
- gccCross = gccCrossStageStatic;
- cross = assert crossSystem != null; crossSystem;
- });
-
- # In theory GNU Mach doesn't have to be cross-compiled. However, since it
- # has to be built for i586 (it doesn't work on x86_64), one needs a cross
- # compiler for that host.
- mach = callPackage ./mach {
- automake = automake111x;
- };
-
- machHeaders = callPackage ./mach {
- automake = automake111x;
- headersOnly = true;
- mig = null;
- };
-
- mig = callPackage ./mig {
- # Build natively, but force use of a 32-bit environment because we're
- # targeting `i586-pc-gnu'.
- stdenv = (forceSystem "i686-linux").stdenv;
- };
-
- # XXX: Use this one for its `.hostDrv'. Using the one above from
- # `x86_64-linux' leads to building a different cross-toolchain because of
- # the `forceSystem'.
- mig_raw = callPackage ./mig {};
-
- smbfs = callPackage ./smbfs {
- samba = samba_light;
- hurd = hurdCross;
- };
-
- unionfs = callPackage ./unionfs {
- hurd = hurdCross;
- };
-}
+in gnu # we trust!
Modified: nixpkgs/trunk/pkgs/top-level/all-packages.nix
==============================================================================
--- nixpkgs/trunk/pkgs/top-level/all-packages.nix Wed Apr 4 20:25:44
2012 (r33586)
+++ nixpkgs/trunk/pkgs/top-level/all-packages.nix Wed Apr 4 20:25:51
2012 (r33587)
@@ -5447,7 +5447,6 @@
# GNU/Hurd core packages.
gnu = recurseIntoAttrs (callPackage ../os-specific/gnu {
- callPackage = newScope pkgs.gnu;
inherit platform crossSystem;
});
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits