Merge pull request #28322 from Ericson2314/darwin-boot

darwin stdenv: Float `persistentN` bindings into per-stage `let`s
This commit is contained in:
John Ericson 2017-08-18 09:04:41 -04:00 committed by GitHub
commit b190c06e32

View File

@ -165,32 +165,32 @@ in rec {
extraBuildInputs = [];
};
persistent0 = _: _: _: {};
stage1 = prevStage: with prevStage; stageFun 1 prevStage {
stage1 = prevStage: let
persistent = _: _: {};
in with prevStage; stageFun 1 prevStage {
extraPreHook = "export NIX_CFLAGS_COMPILE+=\" -F${bootstrapTools}/Library/Frameworks\"";
extraBuildInputs = [ pkgs.libcxx ];
allowedRequisites =
[ bootstrapTools ] ++ (with pkgs; [ libcxx libcxxabi ]) ++ [ pkgs.darwin.Libsystem ];
overrides = persistent0 prevStage;
overrides = persistent;
};
persistent1 = prevStage: self: super: with prevStage; {
inherit
zlib patchutils m4 scons flex perl bison unifdef unzip openssl python
libxml2 gettext sharutils gmp libarchive ncurses pkg-config libedit groff
openssh sqlite sed serf openldap db cyrus-sasl expat apr-util subversion xz
findfreetype libssh curl cmake autoconf automake libtool ed cpio coreutils;
stage2 = prevStage: let
persistent = self: super: with prevStage; {
inherit
zlib patchutils m4 scons flex perl bison unifdef unzip openssl python
libxml2 gettext sharutils gmp libarchive ncurses pkg-config libedit groff
openssh sqlite sed serf openldap db cyrus-sasl expat apr-util subversion xz
findfreetype libssh curl cmake autoconf automake libtool ed cpio coreutils;
darwin = super.darwin // {
inherit (darwin)
dyld Libsystem xnu configd ICU libdispatch libclosure launchd;
darwin = super.darwin // {
inherit (darwin)
dyld Libsystem xnu configd ICU libdispatch libclosure launchd;
};
};
};
stage2 = prevStage: with prevStage; stageFun 2 prevStage {
in with prevStage; stageFun 2 prevStage {
extraPreHook = ''
export PATH_LOCALE=${pkgs.darwin.locale}/share/locale
'';
@ -202,24 +202,24 @@ in rec {
(with pkgs; [ xz.bin xz.out libcxx libcxxabi ]) ++
(with pkgs.darwin; [ dyld Libsystem CF ICU locale ]);
overrides = persistent1 prevStage;
overrides = persistent;
};
persistent2 = prevStage: self: super: with prevStage; {
inherit
patchutils m4 scons flex perl bison unifdef unzip openssl python
gettext sharutils libarchive pkg-config groff bash subversion
openssh sqlite sed serf openldap db cyrus-sasl expat apr-util
findfreetype libssh curl cmake autoconf automake libtool cpio
libcxx libcxxabi;
stage3 = prevStage: let
persistent = self: super: with prevStage; {
inherit
patchutils m4 scons flex perl bison unifdef unzip openssl python
gettext sharutils libarchive pkg-config groff bash subversion
openssh sqlite sed serf openldap db cyrus-sasl expat apr-util
findfreetype libssh curl cmake autoconf automake libtool cpio
libcxx libcxxabi;
darwin = super.darwin // {
inherit (darwin)
dyld Libsystem xnu configd libdispatch libclosure launchd libiconv locale;
darwin = super.darwin // {
inherit (darwin)
dyld Libsystem xnu configd libdispatch libclosure launchd libiconv locale;
};
};
};
stage3 = prevStage: with prevStage; stageFun 3 prevStage {
in with prevStage; stageFun 3 prevStage {
shell = "${pkgs.bash}/bin/bash";
# We have a valid shell here (this one has no bootstrap-tools runtime deps) so stageFun
@ -238,54 +238,55 @@ in rec {
(with pkgs; [ xz.bin xz.out bash libcxx libcxxabi ]) ++
(with pkgs.darwin; [ dyld ICU Libsystem locale ]);
overrides = persistent2 prevStage;
overrides = persistent;
};
persistent3 = prevStage: self: super: with prevStage; {
inherit
gnumake gzip gnused bzip2 gawk ed xz patch bash
libcxxabi libcxx ncurses libffi zlib gmp pcre gnugrep
coreutils findutils diffutils patchutils;
stage4 = prevStage: let
persistent = self: super: with prevStage; {
inherit
gnumake gzip gnused bzip2 gawk ed xz patch bash
libcxxabi libcxx ncurses libffi zlib gmp pcre gnugrep
coreutils findutils diffutils patchutils;
llvmPackages = let llvmOverride = llvmPackages.llvm.override { inherit libcxxabi; };
in super.llvmPackages // {
llvm = llvmOverride;
clang-unwrapped = llvmPackages.clang-unwrapped.override { llvm = llvmOverride; };
};
llvmPackages = let llvmOverride = llvmPackages.llvm.override { inherit libcxxabi; };
in super.llvmPackages // {
llvm = llvmOverride;
clang-unwrapped = llvmPackages.clang-unwrapped.override { llvm = llvmOverride; };
};
darwin = super.darwin // {
inherit (darwin) dyld Libsystem libiconv locale;
darwin = super.darwin // {
inherit (darwin) dyld Libsystem libiconv locale;
};
};
};
stage4 = prevStage: with prevStage; stageFun 4 prevStage {
in with prevStage; stageFun 4 prevStage {
shell = "${pkgs.bash}/bin/bash";
extraBuildInputs = with pkgs; [ xz darwin.CF libcxx pkgs.bash ];
extraPreHook = ''
export PATH_LOCALE=${pkgs.darwin.locale}/share/locale
'';
overrides = persistent3 prevStage;
overrides = persistent;
};
persistent4 = prevStage: self: super: with prevStage; {
inherit
gnumake gzip gnused bzip2 gawk ed xz patch bash
libcxxabi libcxx ncurses libffi zlib llvm gmp pcre gnugrep
coreutils findutils diffutils patchutils;
stdenvDarwin = prevStage: let
pkgs = prevStage;
persistent = self: super: with prevStage; {
inherit
gnumake gzip gnused bzip2 gawk ed xz patch bash
libcxxabi libcxx ncurses libffi zlib llvm gmp pcre gnugrep
coreutils findutils diffutils patchutils;
llvmPackages = super.llvmPackages // {
inherit (llvmPackages) llvm clang-unwrapped;
llvmPackages = super.llvmPackages // {
inherit (llvmPackages) llvm clang-unwrapped;
};
darwin = super.darwin // {
inherit (darwin) dyld ICU Libsystem cctools libiconv;
};
} // lib.optionalAttrs (super.targetPlatform == localSystem) {
# Need to get rid of these when cross-compiling.
inherit binutils binutils-raw;
};
darwin = super.darwin // {
inherit (darwin) dyld ICU 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 {
in import ../generic rec {
inherit config;
inherit (pkgs.stdenv) fetchurlBoot;
@ -344,9 +345,9 @@ in rec {
]);
overrides = self: super:
let persistent = persistent4 prevStage self super; in persistent // {
let persistent' = persistent self super; in persistent' // {
clang = cc;
llvmPackages = persistent.llvmPackages // { clang = cc; };
llvmPackages = persistent'.llvmPackages // { clang = cc; };
inherit cc;
};
};