darwin stdenv: Float `persistentN` bindings into per-stage `let`s

This commit is contained in:
John Ericson 2017-08-16 16:36:21 -04:00
parent 19a5e00985
commit 61d241f405
1 changed files with 67 additions and 66 deletions

View File

@ -165,19 +165,20 @@ in rec {
extraBuildInputs = []; extraBuildInputs = [];
}; };
persistent0 = _: _: _: {}; stage1 = prevStage: let
persistent = _: _: {};
stage1 = prevStage: with prevStage; stageFun 1 prevStage { in with prevStage; stageFun 1 prevStage {
extraPreHook = "export NIX_CFLAGS_COMPILE+=\" -F${bootstrapTools}/Library/Frameworks\""; extraPreHook = "export NIX_CFLAGS_COMPILE+=\" -F${bootstrapTools}/Library/Frameworks\"";
extraBuildInputs = [ pkgs.libcxx ]; extraBuildInputs = [ pkgs.libcxx ];
allowedRequisites = allowedRequisites =
[ bootstrapTools ] ++ (with pkgs; [ libcxx libcxxabi ]) ++ [ pkgs.darwin.Libsystem ]; [ bootstrapTools ] ++ (with pkgs; [ libcxx libcxxabi ]) ++ [ pkgs.darwin.Libsystem ];
overrides = persistent0 prevStage; overrides = persistent;
}; };
persistent1 = prevStage: self: super: with prevStage; { stage2 = prevStage: let
persistent = self: super: with prevStage; {
inherit inherit
zlib patchutils m4 scons flex perl bison unifdef unzip openssl python zlib patchutils m4 scons flex perl bison unifdef unzip openssl python
libxml2 gettext sharutils gmp libarchive ncurses pkg-config libedit groff libxml2 gettext sharutils gmp libarchive ncurses pkg-config libedit groff
@ -189,8 +190,7 @@ in rec {
dyld Libsystem xnu configd ICU libdispatch libclosure launchd; dyld Libsystem xnu configd ICU libdispatch libclosure launchd;
}; };
}; };
in with prevStage; stageFun 2 prevStage {
stage2 = prevStage: with prevStage; stageFun 2 prevStage {
extraPreHook = '' extraPreHook = ''
export PATH_LOCALE=${pkgs.darwin.locale}/share/locale export PATH_LOCALE=${pkgs.darwin.locale}/share/locale
''; '';
@ -202,10 +202,11 @@ in rec {
(with pkgs; [ xz.bin xz.out libcxx libcxxabi ]) ++ (with pkgs; [ xz.bin xz.out libcxx libcxxabi ]) ++
(with pkgs.darwin; [ dyld Libsystem CF ICU locale ]); (with pkgs.darwin; [ dyld Libsystem CF ICU locale ]);
overrides = persistent1 prevStage; overrides = persistent;
}; };
persistent2 = prevStage: self: super: with prevStage; { stage3 = prevStage: let
persistent = self: super: with prevStage; {
inherit inherit
patchutils m4 scons flex perl bison unifdef unzip openssl python patchutils m4 scons flex perl bison unifdef unzip openssl python
gettext sharutils libarchive pkg-config groff bash subversion gettext sharutils libarchive pkg-config groff bash subversion
@ -218,8 +219,7 @@ in rec {
dyld Libsystem xnu configd libdispatch libclosure launchd libiconv locale; dyld Libsystem xnu configd libdispatch libclosure launchd libiconv locale;
}; };
}; };
in with prevStage; stageFun 3 prevStage {
stage3 = prevStage: with prevStage; stageFun 3 prevStage {
shell = "${pkgs.bash}/bin/bash"; shell = "${pkgs.bash}/bin/bash";
# We have a valid shell here (this one has no bootstrap-tools runtime deps) so stageFun # We have a valid shell here (this one has no bootstrap-tools runtime deps) so stageFun
@ -238,10 +238,11 @@ in rec {
(with pkgs; [ xz.bin xz.out bash libcxx libcxxabi ]) ++ (with pkgs; [ xz.bin xz.out bash libcxx libcxxabi ]) ++
(with pkgs.darwin; [ dyld ICU Libsystem locale ]); (with pkgs.darwin; [ dyld ICU Libsystem locale ]);
overrides = persistent2 prevStage; overrides = persistent;
}; };
persistent3 = prevStage: self: super: with prevStage; { stage4 = prevStage: let
persistent = self: super: with prevStage; {
inherit inherit
gnumake gzip gnused bzip2 gawk ed xz patch bash gnumake gzip gnused bzip2 gawk ed xz patch bash
libcxxabi libcxx ncurses libffi zlib gmp pcre gnugrep libcxxabi libcxx ncurses libffi zlib gmp pcre gnugrep
@ -257,17 +258,18 @@ in rec {
inherit (darwin) dyld Libsystem libiconv locale; inherit (darwin) dyld Libsystem libiconv locale;
}; };
}; };
in with prevStage; stageFun 4 prevStage {
stage4 = prevStage: with prevStage; stageFun 4 prevStage {
shell = "${pkgs.bash}/bin/bash"; shell = "${pkgs.bash}/bin/bash";
extraBuildInputs = with pkgs; [ xz darwin.CF libcxx pkgs.bash ]; extraBuildInputs = with pkgs; [ xz darwin.CF libcxx pkgs.bash ];
extraPreHook = '' extraPreHook = ''
export PATH_LOCALE=${pkgs.darwin.locale}/share/locale export PATH_LOCALE=${pkgs.darwin.locale}/share/locale
''; '';
overrides = persistent3 prevStage; overrides = persistent;
}; };
persistent4 = prevStage: self: super: with prevStage; { stdenvDarwin = prevStage: let
pkgs = prevStage;
persistent = self: super: with prevStage; {
inherit inherit
gnumake gzip gnused bzip2 gawk ed xz patch bash gnumake gzip gnused bzip2 gawk ed xz patch bash
libcxxabi libcxx ncurses libffi zlib llvm gmp pcre gnugrep libcxxabi libcxx ncurses libffi zlib llvm gmp pcre gnugrep
@ -284,8 +286,7 @@ in rec {
# Need to get rid of these when cross-compiling. # Need to get rid of these when cross-compiling.
inherit binutils binutils-raw; inherit binutils binutils-raw;
}; };
in import ../generic rec {
stdenvDarwin = prevStage: let pkgs = prevStage; in import ../generic rec {
inherit config; inherit config;
inherit (pkgs.stdenv) fetchurlBoot; inherit (pkgs.stdenv) fetchurlBoot;
@ -344,9 +345,9 @@ in rec {
]); ]);
overrides = self: super: overrides = self: super:
let persistent = persistent4 prevStage self super; in persistent // { let persistent' = persistent self super; in persistent' // {
clang = cc; clang = cc;
llvmPackages = persistent.llvmPackages // { clang = cc; }; llvmPackages = persistent'.llvmPackages // { clang = cc; };
inherit cc; inherit cc;
}; };
}; };