3
0
Fork 0
forked from mirrors/nixpkgs

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
commit 4ad049fba0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 67 additions and 53 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

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;