cross-stdenv: Only prune most overrides in the final stage

Before all overrides were also pruned in the previous stage, now
only gcc and binutils are, because they alone care about about the
target platform. The rest of the overrides don't, so it's better to
preserve them in order to avoid spurious rebuilds.
This commit is contained in:
John Ericson 2017-02-11 18:15:12 -05:00
parent a7068ace35
commit 49c99b70cf
4 changed files with 14 additions and 7 deletions

View file

@ -58,6 +58,10 @@ rec {
# builds.
makeStdenvCross = stdenv: cross: binutilsCross: gccCross: stdenv // {
# Overrides are surely not valid as packages built with this run on a
# different platform.
overrides = _: _: {};
mkDerivation =
{ name ? "", buildInputs ? [], nativeBuildInputs ? []
, propagatedBuildInputs ? [], propagatedNativeBuildInputs ? []

View file

@ -21,9 +21,7 @@ in bootStages ++ [
selfBuild = false;
# It's OK to change the built-time dependencies
allowCustomOverrides = true;
stdenv = vanillaPackages.stdenv // {
overrides = _: _: {};
};
inherit (vanillaPackages) stdenv;
})
# Run Packages

View file

@ -253,7 +253,7 @@ in rec {
inherit
gnumake gzip gnused bzip2 gawk ed xz patch bash
libcxxabi libcxx ncurses libffi zlib icu llvm gmp pcre gnugrep
coreutils findutils diffutils patchutils binutils binutils-raw;
coreutils findutils diffutils patchutils;
llvmPackages = super.llvmPackages // {
inherit (llvmPackages) llvm clang-unwrapped;
@ -262,6 +262,9 @@ in rec {
darwin = super.darwin // {
inherit (darwin) dyld Libsystem cctools libiconv;
};
} // lib.optionalAttrs (super.targetPlatform == localSystem) {
# Need to get rid of these when cross-compiling.
inherit binutils binutils-raw;
};
stdenvDarwin = prevStage: let pkgs = prevStage; in import ../generic rec {

View file

@ -298,12 +298,14 @@ in
*/
overrides = self: super: {
gcc = cc;
inherit (prevStage)
gzip bzip2 xz bash binutils coreutils diffutils findutils gawk
gzip bzip2 xz bash coreutils diffutils findutils gawk
glibc gnumake gnused gnutar gnugrep gnupatch patchelf
attr acl paxctl zlib pcre;
} // lib.optionalAttrs (super.targetPlatform == localSystem) {
# Need to get rid of these when cross-compiling.
inherit (prevStage) binutils;
gcc = cc;
};
};
})