GNU: Avoid `__overrides' altogether, by using a non-recursive attrset.
Thanks to Eelco for the suggestion. svn path=/nixpkgs/trunk/; revision=33587
This commit is contained in:
parent
1663ca3344
commit
3226d8b91d
@ -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!
|
||||
|
@ -5447,7 +5447,6 @@ let
|
||||
|
||||
# GNU/Hurd core packages.
|
||||
gnu = recurseIntoAttrs (callPackage ../os-specific/gnu {
|
||||
callPackage = newScope pkgs.gnu;
|
||||
inherit platform crossSystem;
|
||||
});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user