top-level: Duplicate overlaying unless stdenvOverrides comes last

The stdenvOverrides overlay is used to bring packages forward during
bootstrapping via stdenv.overrides.  These packages have already had
the overlays applied to them in the previous boostrapping stage.  If
stdenvOverrides is not last in the overlays stack, all remaining
overlays will windup being applied again to these packages.

closes #34086
This commit is contained in:
Tyson Whitehead 2018-01-27 10:11:26 -05:00 committed by John Ericson
parent afb87a66b3
commit fefa9ef756

View File

@ -116,7 +116,9 @@ let
lib.optionalAttrs allowCustomOverrides
((config.packageOverrides or (super: {})) super);
# The complete chain of package set builders, applied from top to bottom
# The complete chain of package set builders, applied from top to bottom.
# stdenvOverlays must be last as it brings package forward from the
# previous bootstrapping phases which have already been overlayed.
toFix = lib.foldl' (lib.flip lib.extends) (self: {}) ([
stdenvBootstappingAndPlatforms
platformCompat
@ -125,9 +127,9 @@ let
splice
allPackages
aliases
stdenvOverrides
configOverrides
] ++ overlays);
] ++ overlays ++ [
stdenvOverrides ]);
in
# Return the complete set of packages.