Merge pull request #42034 from obsidiansystems/darwin-booting-llvm

darwin bootstrapping: Avoid overriding aliases for LLVM
This commit is contained in:
John Ericson
2018-06-14 15:53:51 -04:00
committed by GitHub
7 changed files with 67 additions and 53 deletions
@@ -16,7 +16,7 @@ let
compiler-rt_src = fetch "compiler-rt" "10c1mz2q4bdq9bqfgr3dirc6hz1h3sq8573srd5q5lr7m7j6jiwx"; compiler-rt_src = fetch "compiler-rt" "10c1mz2q4bdq9bqfgr3dirc6hz1h3sq8573srd5q5lr7m7j6jiwx";
clang-tools-extra_src = fetch "clang-tools-extra" "0sxw2l3q5msbrwxv1ck72arggdw6n5ysi929gi69ikniranfv4aa"; clang-tools-extra_src = fetch "clang-tools-extra" "0sxw2l3q5msbrwxv1ck72arggdw6n5ysi929gi69ikniranfv4aa";
tools = let tools = stdenv.lib.makeExtensible (tools: let
callPackage = newScope (tools // { inherit stdenv isl version fetch; }); callPackage = newScope (tools // { inherit stdenv isl version fetch; });
in { in {
llvm = callPackage ./llvm.nix { llvm = callPackage ./llvm.nix {
@@ -41,9 +41,9 @@ let
}; };
lldb = callPackage ./lldb.nix {}; lldb = callPackage ./lldb.nix {};
}; });
libraries = let libraries = stdenv.lib.makeExtensible (libraries: let
callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv isl version fetch; }); callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv isl version fetch; });
in { in {
@@ -54,6 +54,6 @@ let
libcxx = callPackage ./libc++ {}; libcxx = callPackage ./libc++ {};
libcxxabi = callPackage ./libc++abi.nix {}; libcxxabi = callPackage ./libc++abi.nix {};
}; });
in { inherit tools libraries; } // libraries // tools in { inherit tools libraries; } // libraries // tools
@@ -15,7 +15,7 @@ let
compiler-rt_src = fetch "compiler-rt" "0p0y85c7izndbpg2l816z7z7558axq11d5pwkm4h11sdw7d13w0d"; compiler-rt_src = fetch "compiler-rt" "0p0y85c7izndbpg2l816z7z7558axq11d5pwkm4h11sdw7d13w0d";
clang-tools-extra_src = fetch "clang-tools-extra" "15n39r4ssphpaq4a0wzyjm7ilwxb0bch6nrapy8c5s8d49h5qjk6"; clang-tools-extra_src = fetch "clang-tools-extra" "15n39r4ssphpaq4a0wzyjm7ilwxb0bch6nrapy8c5s8d49h5qjk6";
tools = let tools = stdenv.lib.makeExtensible (tools: let
callPackage = newScope (tools // { inherit stdenv isl version fetch; }); callPackage = newScope (tools // { inherit stdenv isl version fetch; });
in { in {
llvm = callPackage ./llvm.nix { llvm = callPackage ./llvm.nix {
@@ -41,9 +41,9 @@ let
}; };
lldb = callPackage ./lldb.nix {}; lldb = callPackage ./lldb.nix {};
}; });
libraries = let libraries = stdenv.lib.makeExtensible (libraries: let
callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv isl version fetch; }); callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv isl version fetch; });
in { in {
@@ -54,6 +54,6 @@ let
libcxx = callPackage ./libc++ {}; libcxx = callPackage ./libc++ {};
libcxxabi = callPackage ./libc++abi.nix {}; libcxxabi = callPackage ./libc++abi.nix {};
}; });
in { inherit tools libraries; } // libraries // tools in { inherit tools libraries; } // libraries // tools
@@ -15,7 +15,7 @@ let
compiler-rt_src = fetch "compiler-rt" "16gc2gdmp5c800qvydrdhsp0bzb97s8wrakl6i8a4lgslnqnf2fk"; compiler-rt_src = fetch "compiler-rt" "16gc2gdmp5c800qvydrdhsp0bzb97s8wrakl6i8a4lgslnqnf2fk";
clang-tools-extra_src = fetch "clang-tools-extra" "0d9nh7j7brbh9avigcn69dlaihsl9p3cf9s45mw6fxzzvrdvd999"; clang-tools-extra_src = fetch "clang-tools-extra" "0d9nh7j7brbh9avigcn69dlaihsl9p3cf9s45mw6fxzzvrdvd999";
tools = let tools = stdenv.lib.makeExtensible (tools: let
callPackage = newScope (tools // { inherit stdenv isl version fetch; }); callPackage = newScope (tools // { inherit stdenv isl version fetch; });
in { in {
llvm = callPackage ./llvm.nix { llvm = callPackage ./llvm.nix {
@@ -41,9 +41,9 @@ let
}; };
lldb = callPackage ./lldb.nix {}; lldb = callPackage ./lldb.nix {};
}; });
libraries = let libraries = stdenv.lib.makeExtensible (libraries: let
callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv isl version fetch; }); callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv isl version fetch; });
in { in {
@@ -54,6 +54,6 @@ let
libcxx = callPackage ./libc++ {}; libcxx = callPackage ./libc++ {};
libcxxabi = callPackage ./libc++abi.nix {}; libcxxabi = callPackage ./libc++abi.nix {};
}; });
in { inherit tools libraries; } // libraries // tools in { inherit tools libraries; } // libraries // tools
@@ -22,7 +22,7 @@ let
let drv-manpages = drv.override { enableManpages = true; }; in let drv-manpages = drv.override { enableManpages = true; }; in
drv // { man = drv-manpages.out; /*outputs = drv.outputs ++ ["man"];*/ }; drv // { man = drv-manpages.out; /*outputs = drv.outputs ++ ["man"];*/ };
tools = let tools = stdenv.lib.makeExtensible (tools: let
callPackage = newScope (tools // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; }); callPackage = newScope (tools // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; });
in { in {
@@ -52,9 +52,9 @@ let
lld = callPackage ./lld.nix {}; lld = callPackage ./lld.nix {};
lldb = callPackage ./lldb.nix {}; lldb = callPackage ./lldb.nix {};
}; });
libraries = let libraries = stdenv.lib.makeExtensible (libraries: let
callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; }); callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; });
in { in {
@@ -67,6 +67,6 @@ let
libcxxabi = callPackage ./libc++abi.nix {}; libcxxabi = callPackage ./libc++abi.nix {};
openmp = callPackage ./openmp.nix {}; openmp = callPackage ./openmp.nix {};
}; });
in { inherit tools libraries; } // libraries // tools in { inherit tools libraries; } // libraries // tools
@@ -22,7 +22,7 @@ let
let drv-manpages = drv.override { enableManpages = true; }; in let drv-manpages = drv.override { enableManpages = true; }; in
drv // { man = drv-manpages.out; /*outputs = drv.outputs ++ ["man"];*/ }; drv // { man = drv-manpages.out; /*outputs = drv.outputs ++ ["man"];*/ };
tools = let tools = stdenv.lib.makeExtensible (tools: let
callPackage = newScope (tools // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; }); callPackage = newScope (tools // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; });
in { in {
@@ -53,9 +53,9 @@ let
lld = callPackage ./lld.nix {}; lld = callPackage ./lld.nix {};
lldb = callPackage ./lldb.nix {}; lldb = callPackage ./lldb.nix {};
}; });
libraries = let libraries = stdenv.lib.makeExtensible (libraries: let
callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; }); callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; });
in { in {
@@ -68,6 +68,6 @@ let
libcxxabi = callPackage ./libc++abi.nix {}; libcxxabi = callPackage ./libc++abi.nix {};
openmp = callPackage ./openmp.nix {}; openmp = callPackage ./openmp.nix {};
}; });
in { inherit tools libraries; } // libraries // tools in { inherit tools libraries; } // libraries // tools
@@ -21,7 +21,7 @@ let
let drv-manpages = drv.override { enableManpages = true; }; in let drv-manpages = drv.override { enableManpages = true; }; in
drv // { man = drv-manpages.out; /*outputs = drv.outputs ++ ["man"];*/ }; drv // { man = drv-manpages.out; /*outputs = drv.outputs ++ ["man"];*/ };
tools = let tools = stdenv.lib.makeExtensible (tools: let
callPackage = newScope (tools // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; }); callPackage = newScope (tools // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; });
in { in {
@@ -71,9 +71,9 @@ let
lld = callPackage ./lld.nix {}; lld = callPackage ./lld.nix {};
lldb = callPackage ./lldb.nix {}; lldb = callPackage ./lldb.nix {};
}; });
libraries = let libraries = stdenv.lib.makeExtensible (libraries: let
callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; }); callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; });
in { in {
@@ -88,6 +88,6 @@ let
libcxxabi = callPackage ./libc++abi.nix {}; libcxxabi = callPackage ./libc++abi.nix {};
openmp = callPackage ./openmp.nix {}; openmp = callPackage ./openmp.nix {};
}; });
in { inherit tools libraries; } // libraries // tools in { inherit tools libraries; } // libraries // tools
+43 -29
View File
@@ -159,26 +159,27 @@ in rec {
dyld = bootstrapTools; dyld = bootstrapTools;
}; };
libcxx = stdenv.mkDerivation { llvmPackages_5 = {
name = "bootstrap-stage0-libcxx"; libcxx = stdenv.mkDerivation {
phases = [ "installPhase" "fixupPhase" ]; name = "bootstrap-stage0-libcxx";
installPhase = '' phases = [ "installPhase" "fixupPhase" ];
mkdir -p $out/lib $out/include installPhase = ''
ln -s ${bootstrapTools}/lib/libc++.dylib $out/lib/libc++.dylib mkdir -p $out/lib $out/include
ln -s ${bootstrapTools}/include/c++ $out/include/c++ ln -s ${bootstrapTools}/lib/libc++.dylib $out/lib/libc++.dylib
''; ln -s ${bootstrapTools}/include/c++ $out/include/c++
linkCxxAbi = false; '';
setupHook = ../../development/compilers/llvm/3.9/libc++/setup-hook.sh; linkCxxAbi = false;
}; setupHook = ../../development/compilers/llvm/3.9/libc++/setup-hook.sh;
};
libcxxabi = stdenv.mkDerivation { libcxxabi = stdenv.mkDerivation {
name = "bootstrap-stage0-libcxxabi"; name = "bootstrap-stage0-libcxxabi";
buildCommand = '' buildCommand = ''
mkdir -p $out/lib mkdir -p $out/lib
ln -s ${bootstrapTools}/lib/libc++abi.dylib $out/lib/libc++abi.dylib ln -s ${bootstrapTools}/lib/libc++abi.dylib $out/lib/libc++abi.dylib
''; '';
};
}; };
}; };
extraNativeBuildInputs = []; extraNativeBuildInputs = [];
@@ -236,8 +237,11 @@ in rec {
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
openssh sqlite sed serf openldap db cyrus-sasl expat apr-util openssh sqlite sed serf openldap db cyrus-sasl expat apr-util
findfreetype libssh curl cmake autoconf automake libtool cpio findfreetype libssh curl cmake autoconf automake libtool cpio;
libcxx libcxxabi;
llvmPackages_5 = super.llvmPackages_5 // {
inherit (llvmPackages_5) libcxx libcxxabi;
};
darwin = super.darwin // { darwin = super.darwin // {
inherit (darwin) inherit (darwin)
@@ -272,13 +276,18 @@ in rec {
persistent = self: super: with 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 gmp pcre gnugrep ncurses libffi zlib gmp pcre gnugrep
coreutils findutils diffutils patchutils; coreutils findutils diffutils patchutils;
llvmPackages_5 = super.llvmPackages_5 // { llvmPackages_5 = super.llvmPackages_5 // (let
llvm = llvmPackages_5.llvm.override { inherit libcxxabi; }; tools = super.llvmPackages_5.tools.extend (_: _: {
clang-unwrapped = llvmPackages_5.clang-unwrapped.override { llvm = self.llvmPackages_5.llvm; }; llvm = llvmPackages_5.llvm.override { inherit libcxxabi; };
}; clang-unwrapped = llvmPackages_5.clang-unwrapped.override { llvm = self.llvmPackages_5.llvm; };
});
libraries = super.llvmPackages_5.libraries.extend (_: _: {
inherit (llvmPackages_5) libcxx libcxxabi;
});
in { inherit tools libraries; } // tools // libraries);
darwin = super.darwin // { darwin = super.darwin // {
inherit (darwin) dyld Libsystem libiconv locale; inherit (darwin) dyld Libsystem libiconv locale;
@@ -310,12 +319,17 @@ in rec {
persistent = self: super: with 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 ncurses libffi zlib llvm gmp pcre gnugrep
coreutils findutils diffutils patchutils; coreutils findutils diffutils patchutils;
llvmPackages_5 = super.llvmPackages_5 // { llvmPackages_5 = super.llvmPackages_5 // (let
inherit (llvmPackages_5) llvm clang-unwrapped; tools = super.llvmPackages_5.tools.extend (_: _: {
}; inherit (llvmPackages_5) llvm clang-unwrapped;
});
libraries = super.llvmPackages_5.libraries.extend (_: _: {
inherit (llvmPackages_5) libcxx libcxxabi;
});
in { inherit tools libraries; } // tools // libraries);
darwin = super.darwin // { darwin = super.darwin // {
inherit (darwin) dyld ICU Libsystem libiconv; inherit (darwin) dyld ICU Libsystem libiconv;