|
|
|
@ -1,18 +1,33 @@ |
|
|
|
|
{ lib |
|
|
|
|
, localSystem, crossSystem, config, overlays, crossOverlays ? [] |
|
|
|
|
# Allow passing in bootstrap files directly so we can test the stdenv bootstrap process when changing the bootstrap tools |
|
|
|
|
, bootstrapFiles ? let |
|
|
|
|
fetch = { file, sha256, executable ? true }: import <nix/fetchurl.nix> { |
|
|
|
|
url = "http://tarballs.nixos.org/stdenv-darwin/x86_64/5ab5783e4f46c373c6de84deac9ad59b608bb2e6/${file}"; |
|
|
|
|
inherit (localSystem) system; |
|
|
|
|
inherit sha256 executable; |
|
|
|
|
}; in { |
|
|
|
|
sh = fetch { file = "sh"; sha256 = "sha256-nbb4XEk3go7ttiWrQyKQMLzPr+qUnwnHkWMtVCZsMCs="; }; |
|
|
|
|
bzip2 = fetch { file = "bzip2"; sha256 = "sha256-ybnA+JWrKhXSfn20+GVKXkHFTp2Zt79hat8hAVmsUOc="; }; |
|
|
|
|
mkdir = fetch { file = "mkdir"; sha256 = "sha256-nmvMxmfcY41/60Z/E8L9u0vgePW5l30Dqw1z+Nr02Hk="; }; |
|
|
|
|
cpio = fetch { file = "cpio"; sha256 = "sha256-cB36rN3NLj19Tk37Kc5bodMFMO+mCpEQkKKo0AEMkaU="; }; |
|
|
|
|
tarball = fetch { file = "bootstrap-tools.cpio.bz2"; sha256 = "sha256-kh2vKmjCr/HvR06czZbxUxV5KDRxSF27M6nN3cyofRI="; executable = false; }; |
|
|
|
|
} |
|
|
|
|
, bootstrapFiles ? |
|
|
|
|
if localSystem.isAarch64 then |
|
|
|
|
let |
|
|
|
|
fetch = { file, sha256, executable ? true }: import <nix/fetchurl.nix> { |
|
|
|
|
url = null; # to be built by hydra and injected here |
|
|
|
|
inherit (localSystem) system; |
|
|
|
|
inherit sha256 executable; |
|
|
|
|
}; in { |
|
|
|
|
sh = fetch { file = "sh"; sha256 = "0000000000000000000000000000000000000000000000000000"; }; |
|
|
|
|
bzip2 = fetch { file = "bzip2"; sha256 = "0000000000000000000000000000000000000000000000000000"; }; |
|
|
|
|
mkdir = fetch { file = "mkdir"; sha256 = "0000000000000000000000000000000000000000000000000000"; }; |
|
|
|
|
cpio = fetch { file = "cpio"; sha256 = "0000000000000000000000000000000000000000000000000000"; }; |
|
|
|
|
tarball = fetch { file = "bootstrap-tools.cpio.bz2"; sha256 = "0000000000000000000000000000000000000000000000000000"; executable = false; }; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
let |
|
|
|
|
fetch = { file, sha256, executable ? true }: import <nix/fetchurl.nix> { |
|
|
|
|
url = "http://tarballs.nixos.org/stdenv-darwin/x86_64/5ab5783e4f46c373c6de84deac9ad59b608bb2e6/${file}"; |
|
|
|
|
inherit (localSystem) system; |
|
|
|
|
inherit sha256 executable; |
|
|
|
|
}; in { |
|
|
|
|
sh = fetch { file = "sh"; sha256 = "sha256-nbb4XEk3go7ttiWrQyKQMLzPr+qUnwnHkWMtVCZsMCs="; }; |
|
|
|
|
bzip2 = fetch { file = "bzip2"; sha256 = "sha256-ybnA+JWrKhXSfn20+GVKXkHFTp2Zt79hat8hAVmsUOc="; }; |
|
|
|
|
mkdir = fetch { file = "mkdir"; sha256 = "sha256-nmvMxmfcY41/60Z/E8L9u0vgePW5l30Dqw1z+Nr02Hk="; }; |
|
|
|
|
cpio = fetch { file = "cpio"; sha256 = "sha256-cB36rN3NLj19Tk37Kc5bodMFMO+mCpEQkKKo0AEMkaU="; }; |
|
|
|
|
tarball = fetch { file = "bootstrap-tools.cpio.bz2"; sha256 = "sha256-kh2vKmjCr/HvR06czZbxUxV5KDRxSF27M6nN3cyofRI="; executable = false; }; |
|
|
|
|
} |
|
|
|
|
}: |
|
|
|
|
|
|
|
|
|
assert crossSystem == localSystem; |
|
|
|
@ -20,13 +35,22 @@ assert crossSystem == localSystem; |
|
|
|
|
let |
|
|
|
|
inherit (localSystem) system; |
|
|
|
|
|
|
|
|
|
bootstrapClangVersion = "7.1.0"; |
|
|
|
|
# Bootstrap version needs to be known to reference headers included in the bootstrap tools |
|
|
|
|
bootstrapLlvmVersion = if localSystem.isAarch64 then "11.1.0" else "7.1.0"; |
|
|
|
|
|
|
|
|
|
useAppleSDKLibs = localSystem.isAarch64; |
|
|
|
|
haveKRB5 = localSystem.isx86_64; |
|
|
|
|
|
|
|
|
|
# final toolchain is injected into llvmPackages_${finalLlvmVersion} |
|
|
|
|
finalLlvmVersion = if localSystem.isAarch64 then "11" else "7"; |
|
|
|
|
finalLlvmPackages = "llvmPackages_${finalLlvmVersion}"; |
|
|
|
|
|
|
|
|
|
commonImpureHostDeps = [ |
|
|
|
|
"/bin/sh" |
|
|
|
|
"/usr/lib/libSystem.B.dylib" |
|
|
|
|
"/usr/lib/system/libunc.dylib" # This dependency is "hidden", so our scanning code doesn't pick it up |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
in rec { |
|
|
|
|
commonPreHook = '' |
|
|
|
|
export NIX_ENFORCE_NO_NATIVE=''${NIX_ENFORCE_NO_NATIVE-1} |
|
|
|
@ -45,7 +69,7 @@ in rec { |
|
|
|
|
|
|
|
|
|
name = "bootstrap-tools"; |
|
|
|
|
builder = bootstrapFiles.sh; # Not a filename! Attribute 'sh' on bootstrapFiles |
|
|
|
|
args = [ ./unpack-bootstrap-tools.sh ]; |
|
|
|
|
args = if localSystem.isAarch64 then [ ./unpack-bootstrap-tools-aarch64.sh ] else [ ./unpack-bootstrap-tools.sh ]; |
|
|
|
|
|
|
|
|
|
inherit (bootstrapFiles) mkdir bzip2 cpio tarball; |
|
|
|
|
|
|
|
|
@ -70,11 +94,14 @@ in rec { |
|
|
|
|
inherit (last) stdenv; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
doSign = localSystem.isAarch64 && last != null; |
|
|
|
|
doUpdateAutoTools = localSystem.isAarch64 && last != null; |
|
|
|
|
|
|
|
|
|
mkExtraBuildCommands = cc: '' |
|
|
|
|
rsrc="$out/resource-root" |
|
|
|
|
mkdir "$rsrc" |
|
|
|
|
ln -s "${cc.lib or cc}/lib/clang/${cc.version}/include" "$rsrc" |
|
|
|
|
ln -s "${last.pkgs.llvmPackages_7.compiler-rt.out}/lib" "$rsrc/lib" |
|
|
|
|
ln -s "${last.pkgs."${finalLlvmPackages}".compiler-rt.out}/lib" "$rsrc/lib" |
|
|
|
|
echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags |
|
|
|
|
''; |
|
|
|
|
|
|
|
|
@ -90,13 +117,13 @@ in rec { |
|
|
|
|
bintools = last.pkgs.darwin.binutils; |
|
|
|
|
libc = last.pkgs.darwin.Libsystem; |
|
|
|
|
isClang = true; |
|
|
|
|
cc = last.pkgs.llvmPackages_7.clang-unwrapped; |
|
|
|
|
cc = last.pkgs."${finalLlvmPackages}".clang-unwrapped; |
|
|
|
|
}; in args // (overrides args)); |
|
|
|
|
|
|
|
|
|
cc = if last == null then "/dev/null" else mkCC ({ cc, ... }: { |
|
|
|
|
extraPackages = [ |
|
|
|
|
last.pkgs.llvmPackages_7.libcxxabi |
|
|
|
|
last.pkgs.llvmPackages_7.compiler-rt |
|
|
|
|
last.pkgs."${finalLlvmPackages}".libcxxabi |
|
|
|
|
last.pkgs."${finalLlvmPackages}".compiler-rt |
|
|
|
|
]; |
|
|
|
|
extraBuildCommands = mkExtraBuildCommands cc; |
|
|
|
|
}); |
|
|
|
@ -104,11 +131,11 @@ in rec { |
|
|
|
|
ccNoLibcxx = if last == null then "/dev/null" else mkCC ({ cc, ... }: { |
|
|
|
|
libcxx = null; |
|
|
|
|
extraPackages = [ |
|
|
|
|
last.pkgs.llvmPackages_7.compiler-rt |
|
|
|
|
last.pkgs."${finalLlvmPackages}".compiler-rt |
|
|
|
|
]; |
|
|
|
|
extraBuildCommands = '' |
|
|
|
|
echo "-rtlib=compiler-rt" >> $out/nix-support/cc-cflags |
|
|
|
|
echo "-B${last.pkgs.llvmPackages_7.compiler-rt}/lib" >> $out/nix-support/cc-cflags |
|
|
|
|
echo "-B${last.pkgs."${finalLlvmPackages}".compiler-rt}/lib" >> $out/nix-support/cc-cflags |
|
|
|
|
echo "-nostdlib++" >> $out/nix-support/cc-cflags |
|
|
|
|
'' + mkExtraBuildCommands cc; |
|
|
|
|
}); |
|
|
|
@ -116,9 +143,20 @@ in rec { |
|
|
|
|
thisStdenv = import ../generic { |
|
|
|
|
name = "${name}-stdenv-darwin"; |
|
|
|
|
|
|
|
|
|
inherit config shell extraNativeBuildInputs extraBuildInputs; |
|
|
|
|
inherit config shell extraBuildInputs; |
|
|
|
|
|
|
|
|
|
extraNativeBuildInputs = extraNativeBuildInputs ++ lib.optionals doUpdateAutoTools [ |
|
|
|
|
last.pkgs.updateAutotoolsGnuConfigScriptsHook last.pkgs.gnu-config |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
allowedRequisites = if allowedRequisites == null then null else allowedRequisites ++ [ |
|
|
|
|
cc.expand-response-params cc.bintools |
|
|
|
|
] ++ lib.optionals doUpdateAutoTools [ |
|
|
|
|
last.pkgs.updateAutotoolsGnuConfigScriptsHook last.pkgs.gnu-config |
|
|
|
|
] ++ lib.optionals doSign [ |
|
|
|
|
last.pkgs.darwin.postLinkSignHook |
|
|
|
|
last.pkgs.darwin.sigtool |
|
|
|
|
last.pkgs.darwin.signingUtils |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
buildPlatform = localSystem; |
|
|
|
@ -176,7 +214,97 @@ in rec { |
|
|
|
|
''; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
pbzx = stdenv.mkDerivation { |
|
|
|
|
name = "bootstrap-stage0-pbzx"; |
|
|
|
|
phases = [ "installPhase" ]; |
|
|
|
|
installPhase = '' |
|
|
|
|
mkdir -p $out/bin |
|
|
|
|
ln -s ${bootstrapTools}/bin/pbzx $out/bin |
|
|
|
|
''; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
cpio = stdenv.mkDerivation { |
|
|
|
|
name = "bootstrap-stage0-cpio"; |
|
|
|
|
phases = [ "installPhase" ]; |
|
|
|
|
installPhase = '' |
|
|
|
|
mkdir -p $out/bin |
|
|
|
|
ln -s ${bootstrapFiles.cpio} $out/bin/cpio |
|
|
|
|
''; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
darwin = super.darwin.overrideScope (selfDarwin: superDarwin: { |
|
|
|
|
darwin-stubs = superDarwin.darwin-stubs.override { inherit (self) stdenvNoCC fetchurl; }; |
|
|
|
|
|
|
|
|
|
dyld = { |
|
|
|
|
name = "bootstrap-stage0-dyld"; |
|
|
|
|
buildCommand = '' |
|
|
|
|
mkdir -p $out |
|
|
|
|
ln -s ${bootstrapTools}/lib $out/lib |
|
|
|
|
ln -s ${bootstrapTools}/include $out/include |
|
|
|
|
''; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
sigtool = stdenv.mkDerivation { |
|
|
|
|
name = "bootstrap-stage0-sigtool"; |
|
|
|
|
phases = [ "installPhase" ]; |
|
|
|
|
installPhase = '' |
|
|
|
|
mkdir -p $out/bin |
|
|
|
|
ln -s ${bootstrapTools}/bin/sigtool $out/bin |
|
|
|
|
|
|
|
|
|
# Rewrite nuked references |
|
|
|
|
sed -e "s|[^( ]*\bsigtool\b|$out/bin/sigtool|g" \ |
|
|
|
|
${bootstrapTools}/bin/codesign > $out/bin/codesign |
|
|
|
|
chmod a+x $out/bin/codesign |
|
|
|
|
''; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
print-reexports = stdenv.mkDerivation { |
|
|
|
|
name = "bootstrap-stage0-print-reexports"; |
|
|
|
|
phases = [ "installPhase" ]; |
|
|
|
|
installPhase = '' |
|
|
|
|
mkdir -p $out/bin |
|
|
|
|
ln -s ${bootstrapTools}/bin/print-reexports $out/bin |
|
|
|
|
''; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
rewrite-tbd = stdenv.mkDerivation { |
|
|
|
|
name = "bootstrap-stage0-rewrite-tbd"; |
|
|
|
|
phases = [ "installPhase" ]; |
|
|
|
|
installPhase = '' |
|
|
|
|
mkdir -p $out/bin |
|
|
|
|
ln -s ${bootstrapTools}/bin/rewrite-tbd $out/bin |
|
|
|
|
''; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
binutils-unwrapped = { name = "bootstrap-stage0-binutils"; outPath = bootstrapTools; }; |
|
|
|
|
|
|
|
|
|
cctools = { |
|
|
|
|
name = "bootstrap-stage0-cctools"; |
|
|
|
|
outPath = bootstrapTools; |
|
|
|
|
targetPrefix = ""; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
binutils = lib.makeOverridable (import ../../build-support/bintools-wrapper) { |
|
|
|
|
shell = "${bootstrapTools}/bin/bash"; |
|
|
|
|
inherit lib; |
|
|
|
|
inherit (self) stdenvNoCC; |
|
|
|
|
|
|
|
|
|
nativeTools = false; |
|
|
|
|
nativeLibc = false; |
|
|
|
|
inherit (self) buildPackages coreutils gnugrep; |
|
|
|
|
libc = selfDarwin.Libsystem; |
|
|
|
|
bintools = selfDarwin.binutils-unwrapped; |
|
|
|
|
inherit (selfDarwin) postLinkSignHook signingUtils; |
|
|
|
|
}; |
|
|
|
|
} // lib.optionalAttrs (! useAppleSDKLibs) { |
|
|
|
|
CF = stdenv.mkDerivation { |
|
|
|
|
name = "bootstrap-stage0-CF"; |
|
|
|
|
buildCommand = '' |
|
|
|
|
mkdir -p $out/Library/Frameworks |
|
|
|
|
ln -s ${bootstrapTools}/Library/Frameworks/CoreFoundation.framework $out/Library/Frameworks |
|
|
|
|
''; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
Libsystem = stdenv.mkDerivation { |
|
|
|
|
name = "bootstrap-stage0-Libsystem"; |
|
|
|
|
buildCommand = '' |
|
|
|
@ -200,35 +328,12 @@ in rec { |
|
|
|
|
ln -s ${bootstrapTools}/include-Libsystem $out/include |
|
|
|
|
''; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
darwin-stubs = superDarwin.darwin-stubs.override { inherit (self) stdenvNoCC fetchurl; }; |
|
|
|
|
|
|
|
|
|
dyld = { |
|
|
|
|
name = "bootstrap-stage0-dyld"; |
|
|
|
|
buildCommand = '' |
|
|
|
|
mkdir -p $out |
|
|
|
|
ln -s ${bootstrapTools}/lib $out/lib |
|
|
|
|
ln -s ${bootstrapTools}/include $out/include |
|
|
|
|
''; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
binutils = lib.makeOverridable (import ../../build-support/bintools-wrapper) { |
|
|
|
|
shell = "${bootstrapTools}/bin/bash"; |
|
|
|
|
inherit lib; |
|
|
|
|
inherit (self) stdenvNoCC; |
|
|
|
|
|
|
|
|
|
nativeTools = false; |
|
|
|
|
nativeLibc = false; |
|
|
|
|
inherit (self) buildPackages coreutils gnugrep; |
|
|
|
|
libc = selfDarwin.Libsystem; |
|
|
|
|
bintools = { name = "bootstrap-stage0-binutils"; outPath = bootstrapTools; }; |
|
|
|
|
}; |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
llvmPackages_7 = { |
|
|
|
|
"${finalLlvmPackages}" = { |
|
|
|
|
clang-unwrapped = stdenv.mkDerivation { |
|
|
|
|
name = "bootstrap-stage0-clang"; |
|
|
|
|
version = bootstrapClangVersion; |
|
|
|
|
version = bootstrapLlvmVersion; |
|
|
|
|
buildCommand = '' |
|
|
|
|
mkdir -p $out/lib |
|
|
|
|
ln -s ${bootstrapTools}/bin $out/bin |
|
|
|
@ -278,36 +383,46 @@ in rec { |
|
|
|
|
persistent = self: super: with prevStage; { |
|
|
|
|
cmake = super.cmakeMinimal; |
|
|
|
|
|
|
|
|
|
inherit pbzx cpio; |
|
|
|
|
|
|
|
|
|
python3 = super.python3Minimal; |
|
|
|
|
|
|
|
|
|
ninja = super.ninja.override { buildDocs = false; }; |
|
|
|
|
|
|
|
|
|
llvmPackages_7 = super.llvmPackages_7 // (let |
|
|
|
|
tools = super.llvmPackages_7.tools.extend (_: _: { |
|
|
|
|
inherit (llvmPackages_7) clang-unwrapped; |
|
|
|
|
"${finalLlvmPackages}" = super."${finalLlvmPackages}" // (let |
|
|
|
|
tools = super."${finalLlvmPackages}".tools.extend (_: _: { |
|
|
|
|
inherit (pkgs."${finalLlvmPackages}") clang-unwrapped; |
|
|
|
|
}); |
|
|
|
|
libraries = super.llvmPackages_7.libraries.extend (_: _: { |
|
|
|
|
inherit (llvmPackages_7) compiler-rt libcxx libcxxabi; |
|
|
|
|
libraries = super."${finalLlvmPackages}".libraries.extend (_: _: { |
|
|
|
|
inherit (pkgs."${finalLlvmPackages}") compiler-rt libcxx libcxxabi; |
|
|
|
|
}); |
|
|
|
|
in { inherit tools libraries; } // tools // libraries); |
|
|
|
|
|
|
|
|
|
darwin = super.darwin.overrideScope (selfDarwin: _: { |
|
|
|
|
inherit (darwin) rewrite-tbd binutils-unwrapped; |
|
|
|
|
|
|
|
|
|
signingUtils = darwin.signingUtils.override { |
|
|
|
|
inherit (selfDarwin) sigtool; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
binutils = darwin.binutils.override { |
|
|
|
|
coreutils = self.coreutils; |
|
|
|
|
libc = selfDarwin.Libsystem; |
|
|
|
|
inherit (selfDarwin) postLinkSignHook signingUtils; |
|
|
|
|
}; |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
in with prevStage; stageFun 1 prevStage { |
|
|
|
|
extraPreHook = "export NIX_CFLAGS_COMPILE+=\" -F${bootstrapTools}/Library/Frameworks\""; |
|
|
|
|
extraNativeBuildInputs = []; |
|
|
|
|
extraBuildInputs = [ ]; |
|
|
|
|
libcxx = pkgs.libcxx; |
|
|
|
|
extraBuildInputs = [ pkgs.darwin.CF ]; |
|
|
|
|
libcxx = pkgs."${finalLlvmPackages}".libcxx; |
|
|
|
|
|
|
|
|
|
allowedRequisites = |
|
|
|
|
[ bootstrapTools ] ++ |
|
|
|
|
(with pkgs; [ coreutils gnugrep libcxx libcxxabi llvmPackages_7.clang-unwrapped llvmPackages_7.compiler-rt ]) ++ |
|
|
|
|
(with pkgs.darwin; [ darwin-stubs Libsystem ]); |
|
|
|
|
(with pkgs; [ coreutils gnugrep ]) ++ |
|
|
|
|
(with pkgs."${finalLlvmPackages}"; [ libcxx libcxxabi compiler-rt clang-unwrapped ]) ++ |
|
|
|
|
(with pkgs.darwin; [ Libsystem CF ] ++ lib.optional useAppleSDKLibs objc4); |
|
|
|
|
|
|
|
|
|
overrides = persistent; |
|
|
|
|
}; |
|
|
|
@ -321,26 +436,30 @@ in rec { |
|
|
|
|
findfreetype libssh curl cmake autoconf automake libtool ed cpio coreutils |
|
|
|
|
libssh2 nghttp2 libkrb5 ninja brotli; |
|
|
|
|
|
|
|
|
|
llvmPackages_7 = super.llvmPackages_7 // (let |
|
|
|
|
tools = super.llvmPackages_7.tools.extend (_: _: { |
|
|
|
|
inherit (llvmPackages_7) clang-unwrapped; |
|
|
|
|
"${finalLlvmPackages}" = super."${finalLlvmPackages}" // (let |
|
|
|
|
tools = super."${finalLlvmPackages}".tools.extend (_: _: { |
|
|
|
|
inherit (pkgs."${finalLlvmPackages}") clang-unwrapped; |
|
|
|
|
}); |
|
|
|
|
libraries = super.llvmPackages_7.libraries.extend (_: libSuper: { |
|
|
|
|
inherit (llvmPackages_7) compiler-rt; |
|
|
|
|
libraries = super."${finalLlvmPackages}".libraries.extend (_: libSuper: { |
|
|
|
|
inherit (pkgs."${finalLlvmPackages}") compiler-rt; |
|
|
|
|
libcxx = libSuper.libcxx.override { |
|
|
|
|
stdenv = overrideCC self.stdenv self.ccNoLibcxx; |
|
|
|
|
}; |
|
|
|
|
libcxxabi = libSuper.libcxxabi.override { |
|
|
|
|
libcxxabi = libSuper.libcxxabi.override ({ |
|
|
|
|
stdenv = overrideCC self.stdenv self.ccNoLibcxx; |
|
|
|
|
} // lib.optionalAttrs (finalLlvmVersion == "7") { |
|
|
|
|
# TODO: the bootstrapping of llvm packages isn't consistent. |
|
|
|
|
# `standalone` may be redundant if darwin behaves like useLLVM (or |
|
|
|
|
# has useLLVM = true). |
|
|
|
|
standalone = true; |
|
|
|
|
}; |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
in { inherit tools libraries; } // tools // libraries); |
|
|
|
|
|
|
|
|
|
darwin = super.darwin.overrideScope (_: _: { |
|
|
|
|
inherit (darwin) |
|
|
|
|
binutils dyld Libsystem xnu configd ICU libdispatch libclosure |
|
|
|
|
launchd CF darwin-stubs; |
|
|
|
|
launchd CF objc4 darwin-stubs sigtool postLinkSignHook signingUtils; |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
in with prevStage; stageFun 2 prevStage { |
|
|
|
@ -350,16 +469,18 @@ in rec { |
|
|
|
|
|
|
|
|
|
extraNativeBuildInputs = [ pkgs.xz ]; |
|
|
|
|
extraBuildInputs = [ pkgs.darwin.CF ]; |
|
|
|
|
libcxx = pkgs.libcxx; |
|
|
|
|
libcxx = pkgs."${finalLlvmPackages}".libcxx; |
|
|
|
|
|
|
|
|
|
allowedRequisites = |
|
|
|
|
[ bootstrapTools ] ++ |
|
|
|
|
(with pkgs; [ |
|
|
|
|
xz.bin xz.out libcxx libcxxabi llvmPackages_7.compiler-rt |
|
|
|
|
llvmPackages_7.clang-unwrapped zlib libxml2.out curl.out brotli.lib openssl.out |
|
|
|
|
libssh2.out nghttp2.lib libkrb5 coreutils gnugrep pcre.out gmp libiconv |
|
|
|
|
xz.bin xz.out zlib libxml2.out curl.out openssl.out libssh2.out |
|
|
|
|
nghttp2.lib coreutils gnugrep pcre.out gmp libiconv brotli.lib |
|
|
|
|
] ++ lib.optional haveKRB5 libkrb5) ++ |
|
|
|
|
(with pkgs."${finalLlvmPackages}"; [ |
|
|
|
|
libcxx libcxxabi compiler-rt clang-unwrapped |
|
|
|
|
]) ++ |
|
|
|
|
(with pkgs.darwin; [ dyld Libsystem CF ICU locale ]); |
|
|
|
|
(with pkgs.darwin; [ dyld Libsystem CF ICU locale ] ++ lib.optional useAppleSDKLibs objc4); |
|
|
|
|
|
|
|
|
|
overrides = persistent; |
|
|
|
|
}; |
|
|
|
@ -376,16 +497,16 @@ in rec { |
|
|
|
|
# Avoid pulling in a full python and its extra dependencies for the llvm/clang builds. |
|
|
|
|
libxml2 = super.libxml2.override { pythonSupport = false; }; |
|
|
|
|
|
|
|
|
|
llvmPackages_7 = super.llvmPackages_7 // (let |
|
|
|
|
libraries = super.llvmPackages_7.libraries.extend (_: _: { |
|
|
|
|
inherit (llvmPackages_7) libcxx libcxxabi; |
|
|
|
|
"${finalLlvmPackages}" = super."${finalLlvmPackages}" // (let |
|
|
|
|
libraries = super."${finalLlvmPackages}".libraries.extend (_: _: { |
|
|
|
|
inherit (pkgs."${finalLlvmPackages}") libcxx libcxxabi; |
|
|
|
|
}); |
|
|
|
|
in { inherit libraries; } // libraries); |
|
|
|
|
|
|
|
|
|
darwin = super.darwin.overrideScope (_: _: { |
|
|
|
|
inherit (darwin) |
|
|
|
|
dyld Libsystem xnu configd libdispatch libclosure launchd libiconv |
|
|
|
|
locale darwin-stubs; |
|
|
|
|
locale darwin-stubs sigtool; |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
in with prevStage; stageFun 3 prevStage { |
|
|
|
@ -397,7 +518,7 @@ in rec { |
|
|
|
|
# patches our shebangs back to point at bootstrapTools. This makes sure bash comes first. |
|
|
|
|
extraNativeBuildInputs = with pkgs; [ xz ]; |
|
|
|
|
extraBuildInputs = [ pkgs.darwin.CF pkgs.bash ]; |
|
|
|
|
libcxx = pkgs.libcxx; |
|
|
|
|
libcxx = pkgs."${finalLlvmPackages}".libcxx; |
|
|
|
|
|
|
|
|
|
extraPreHook = '' |
|
|
|
|
export PATH=${pkgs.bash}/bin:$PATH |
|
|
|
@ -407,11 +528,13 @@ in rec { |
|
|
|
|
allowedRequisites = |
|
|
|
|
[ bootstrapTools ] ++ |
|
|
|
|
(with pkgs; [ |
|
|
|
|
xz.bin xz.out bash libcxx libcxx.dev libcxxabi libcxxabi.dev llvmPackages_7.compiler-rt |
|
|
|
|
llvmPackages_7.clang-unwrapped zlib libxml2.out curl.out brotli.lib openssl.out |
|
|
|
|
libssh2.out nghttp2.lib libkrb5 coreutils gnugrep pcre.out gmp libiconv |
|
|
|
|
xz.bin xz.out bash zlib libxml2.out curl.out openssl.out libssh2.out |
|
|
|
|
nghttp2.lib coreutils gnugrep pcre.out gmp libiconv brotli.lib |
|
|
|
|
] ++ lib.optional haveKRB5 libkrb5) ++ |
|
|
|
|
(with pkgs."${finalLlvmPackages}"; [ |
|
|
|
|
libcxx libcxx.dev libcxxabi libcxxabi.dev compiler-rt clang-unwrapped |
|
|
|
|
]) ++ |
|
|
|
|
(with pkgs.darwin; [ dyld ICU Libsystem locale ]); |
|
|
|
|
(with pkgs.darwin; [ dyld ICU Libsystem locale ] ++ lib.optional useAppleSDKLibs objc4); |
|
|
|
|
|
|
|
|
|
overrides = persistent; |
|
|
|
|
}; |
|
|
|
@ -432,20 +555,21 @@ in rec { |
|
|
|
|
]; |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
llvmPackages_7 = super.llvmPackages_7 // (let |
|
|
|
|
tools = super.llvmPackages_7.tools.extend (llvmSelf: _: { |
|
|
|
|
clang-unwrapped-all-outputs = llvmPackages_7.clang-unwrapped-all-outputs.override { llvm = llvmSelf.llvm; }; |
|
|
|
|
libllvm = llvmPackages_7.libllvm.override { inherit libxml2; }; |
|
|
|
|
"${finalLlvmPackages}" = super."${finalLlvmPackages}" // (let |
|
|
|
|
tools = super."${finalLlvmPackages}".tools.extend (llvmSelf: _: { |
|
|
|
|
clang-unwrapped-all-outputs = pkgs."${finalLlvmPackages}".clang-unwrapped-all-outputs.override { llvm = llvmSelf.llvm; }; |
|
|
|
|
libllvm = pkgs."${finalLlvmPackages}".libllvm.override { inherit libxml2; }; |
|
|
|
|
}); |
|
|
|
|
libraries = super.llvmPackages_7.libraries.extend (llvmSelf: _: { |
|
|
|
|
inherit (llvmPackages_7) libcxx libcxxabi compiler-rt; |
|
|
|
|
libraries = super."${finalLlvmPackages}".libraries.extend (llvmSelf: _: { |
|
|
|
|
inherit (pkgs."${finalLlvmPackages}") libcxx libcxxabi compiler-rt; |
|
|
|
|
}); |
|
|
|
|
in { inherit tools libraries; } // tools // libraries); |
|
|
|
|
|
|
|
|
|
darwin = super.darwin.overrideScope (_: superDarwin: { |
|
|
|
|
inherit (darwin) dyld Libsystem libiconv locale darwin-stubs; |
|
|
|
|
|
|
|
|
|
CF = superDarwin.CF.override { |
|
|
|
|
# See useAppleSDKLibs in darwin-packages.nix |
|
|
|
|
CF = if useAppleSDKLibs then super.darwin.CF else superDarwin.CF.override { |
|
|
|
|
inherit libxml2; |
|
|
|
|
python3 = prevStage.python3; |
|
|
|
|
}; |
|
|
|
@ -455,7 +579,7 @@ in rec { |
|
|
|
|
shell = "${pkgs.bash}/bin/bash"; |
|
|
|
|
extraNativeBuildInputs = with pkgs; [ xz ]; |
|
|
|
|
extraBuildInputs = [ pkgs.darwin.CF pkgs.bash ]; |
|
|
|
|
libcxx = pkgs.libcxx; |
|
|
|
|
libcxx = pkgs."${finalLlvmPackages}".libcxx; |
|
|
|
|
|
|
|
|
|
extraPreHook = '' |
|
|
|
|
export PATH_LOCALE=${pkgs.darwin.locale}/share/locale |
|
|
|
@ -464,29 +588,32 @@ in rec { |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
stdenvDarwin = prevStage: let |
|
|
|
|
doSign = localSystem.isAarch64; |
|
|
|
|
pkgs = prevStage; |
|
|
|
|
persistent = self: super: with prevStage; { |
|
|
|
|
inherit |
|
|
|
|
gnumake gzip gnused bzip2 gawk ed xz patch bash |
|
|
|
|
ncurses libffi zlib llvm gmp pcre gnugrep |
|
|
|
|
coreutils findutils diffutils patchutils; |
|
|
|
|
|
|
|
|
|
llvmPackages_7 = super.llvmPackages_7 // (let |
|
|
|
|
tools = super.llvmPackages_7.tools.extend (_: super: { |
|
|
|
|
inherit (llvmPackages_7) llvm clang-unwrapped; |
|
|
|
|
}); |
|
|
|
|
libraries = super.llvmPackages_7.libraries.extend (_: _: { |
|
|
|
|
inherit (llvmPackages_7) compiler-rt libcxx libcxxabi; |
|
|
|
|
}); |
|
|
|
|
in { inherit tools libraries; } // tools // libraries); |
|
|
|
|
ncurses libffi zlib gmp pcre gnugrep |
|
|
|
|
coreutils findutils diffutils patchutils pbzx; |
|
|
|
|
|
|
|
|
|
darwin = super.darwin.overrideScope (_: _: { |
|
|
|
|
inherit (darwin) dyld ICU Libsystem libiconv; |
|
|
|
|
darwin = super.darwin.overrideScope (_: _: { |
|
|
|
|
inherit (darwin) dyld ICU Libsystem Csu libiconv rewrite-tbd; |
|
|
|
|
} // lib.optionalAttrs (super.stdenv.targetPlatform == localSystem) { |
|
|
|
|
inherit (darwin) binutils binutils-unwrapped cctools; |
|
|
|
|
}); |
|
|
|
|
} // lib.optionalAttrs (super.stdenv.targetPlatform == localSystem) { |
|
|
|
|
inherit llvm; |
|
|
|
|
|
|
|
|
|
# Need to get rid of these when cross-compiling. |
|
|
|
|
"${finalLlvmPackages}" = super."${finalLlvmPackages}" // (let |
|
|
|
|
tools = super."${finalLlvmPackages}".tools.extend (_: super: { |
|
|
|
|
inherit (pkgs."${finalLlvmPackages}") llvm clang-unwrapped; |
|
|
|
|
}); |
|
|
|
|
libraries = super."${finalLlvmPackages}".libraries.extend (_: _: { |
|
|
|
|
inherit (pkgs."${finalLlvmPackages}") compiler-rt libcxx libcxxabi; |
|
|
|
|
}); |
|
|
|
|
in { inherit tools libraries; } // tools // libraries); |
|
|
|
|
|
|
|
|
|
inherit binutils binutils-unwrapped; |
|
|
|
|
}; |
|
|
|
|
in import ../generic rec { |
|
|
|
@ -510,11 +637,12 @@ in rec { |
|
|
|
|
initialPath = import ../common-path.nix { inherit pkgs; }; |
|
|
|
|
shell = "${pkgs.bash}/bin/bash"; |
|
|
|
|
|
|
|
|
|
cc = pkgs.llvmPackages.libcxxClang.override { |
|
|
|
|
cc = pkgs.llvmPackages.clang-unwrapped; |
|
|
|
|
}; |
|
|
|
|
cc = pkgs."${finalLlvmPackages}".libcxxClang; |
|
|
|
|
|
|
|
|
|
extraNativeBuildInputs = lib.optionals localSystem.isAarch64 [ |
|
|
|
|
pkgs.updateAutotoolsGnuConfigScriptsHook |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
extraNativeBuildInputs = []; |
|
|
|
|
extraBuildInputs = [ pkgs.darwin.CF ]; |
|
|
|
|
|
|
|
|
|
extraAttrs = { |
|
|
|
@ -524,19 +652,27 @@ in rec { |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
allowedRequisites = (with pkgs; [ |
|
|
|
|
xz.out xz.bin libcxx libcxx.dev libcxxabi libcxxabi.dev gmp.out gnumake findutils bzip2.out |
|
|
|
|
bzip2.bin llvmPackages.llvm llvmPackages.llvm.lib llvmPackages.compiler-rt llvmPackages.compiler-rt.dev |
|
|
|
|
xz.out xz.bin gmp.out gnumake findutils bzip2.out |
|
|
|
|
bzip2.bin |
|
|
|
|
zlib.out zlib.dev libffi.out coreutils ed diffutils gnutar |
|
|
|
|
gzip ncurses.out ncurses.dev ncurses.man gnused bash gawk |
|
|
|
|
gnugrep llvmPackages.clang-unwrapped |
|
|
|
|
llvmPackages.libclang.dev llvmPackages.libclang.lib |
|
|
|
|
patch pcre.out gettext |
|
|
|
|
gnugrep patch pcre.out gettext |
|
|
|
|
binutils.bintools darwin.binutils darwin.binutils.bintools |
|
|
|
|
curl.out brotli.lib openssl.out libssh2.out nghttp2.lib libkrb5 |
|
|
|
|
curl.out openssl.out libssh2.out nghttp2.lib brotli.lib |
|
|
|
|
cc.expand-response-params libxml2.out |
|
|
|
|
]) ++ (with pkgs.darwin; [ |
|
|
|
|
] ++ lib.optional haveKRB5 libkrb5 |
|
|
|
|
++ lib.optionals localSystem.isAarch64 [ |
|
|
|
|
pkgs.updateAutotoolsGnuConfigScriptsHook pkgs.gnu-config |
|
|
|
|
]) |
|
|
|
|
++ (with pkgs."${finalLlvmPackages}"; [ |
|
|
|
|
libcxx libcxx.dev libcxxabi libcxxabi.dev |
|
|
|
|
llvm llvm.lib compiler-rt compiler-rt.dev |
|
|
|
|
clang-unwrapped libclang.dev libclang.lib |
|
|
|
|
]) |
|
|
|
|
++ (with pkgs.darwin; [ |
|
|
|
|
dyld Libsystem CF cctools ICU libiconv locale libtapi |
|
|
|
|
]); |
|
|
|
|
] ++ lib.optional useAppleSDKLibs objc4 |
|
|
|
|
++ lib.optionals doSign [ postLinkSignHook sigtool signingUtils ]); |
|
|
|
|
|
|
|
|
|
overrides = lib.composeExtensions persistent (self: super: { |
|
|
|
|
darwin = super.darwin.overrideScope (_: superDarwin: { |
|
|
|
|