Merge pull request #28557 from obsidiansystems/binutils-wrapper
Binutils-wrapper: Init by refactoring out of cc-wrapper
This commit is contained in:
@@ -63,10 +63,40 @@ in rec {
|
||||
extraBuildInputs,
|
||||
allowedRequisites ? null}:
|
||||
let
|
||||
buildPackages = lib.optionalAttrs (last ? stdenv) {
|
||||
inherit (last) stdenv;
|
||||
};
|
||||
|
||||
coreutils = { name = "coreutils-9.9.9"; outPath = bootstrapTools; };
|
||||
gnugrep = { name = "gnugrep-9.9.9"; outPath = bootstrapTools; };
|
||||
|
||||
binutils = import ../../build-support/binutils-wrapper {
|
||||
inherit shell;
|
||||
inherit (last) stdenv;
|
||||
|
||||
nativeTools = false;
|
||||
nativeLibc = false;
|
||||
inherit buildPackages coreutils gnugrep;
|
||||
libc = last.pkgs.darwin.Libsystem;
|
||||
binutils = { name = "binutils-9.9.9"; outPath = bootstrapTools; };
|
||||
};
|
||||
|
||||
cc = if isNull last then "/dev/null" else import ../../build-support/cc-wrapper {
|
||||
inherit shell;
|
||||
inherit (last) stdenv;
|
||||
|
||||
nativeTools = false;
|
||||
nativeLibc = false;
|
||||
inherit buildPackages coreutils gnugrep binutils;
|
||||
libc = last.pkgs.darwin.Libsystem;
|
||||
isClang = true;
|
||||
cc = { name = "clang-9.9.9"; outPath = bootstrapTools; };
|
||||
};
|
||||
|
||||
thisStdenv = import ../generic {
|
||||
inherit config shell extraNativeBuildInputs extraBuildInputs;
|
||||
allowedRequisites = if allowedRequisites == null then null else allowedRequisites ++ [
|
||||
thisStdenv.cc.expand-response-params
|
||||
cc.expand-response-params cc.binutils
|
||||
];
|
||||
|
||||
name = "stdenv-darwin-boot-${toString step}";
|
||||
@@ -75,24 +105,9 @@ in rec {
|
||||
hostPlatform = localSystem;
|
||||
targetPlatform = localSystem;
|
||||
|
||||
cc = if isNull last then "/dev/null" else import ../../build-support/cc-wrapper {
|
||||
inherit shell;
|
||||
inherit (last) stdenv;
|
||||
inherit cc;
|
||||
|
||||
nativeTools = false;
|
||||
nativeLibc = false;
|
||||
buildPackages = lib.optionalAttrs (last ? stdenv) {
|
||||
inherit (last) stdenv;
|
||||
};
|
||||
libc = last.pkgs.darwin.Libsystem;
|
||||
isClang = true;
|
||||
cc = { name = "clang-9.9.9"; outPath = bootstrapTools; };
|
||||
binutils = { name = "binutils-9.9.9"; outPath = bootstrapTools; };
|
||||
coreutils = { name = "coreutils-9.9.9"; outPath = bootstrapTools; };
|
||||
gnugrep = { name = "gnugrep-9.9.9"; outPath = bootstrapTools; };
|
||||
};
|
||||
|
||||
preHook = stage0.stdenv.lib.optionalString (shell == "${bootstrapTools}/bin/bash") ''
|
||||
preHook = lib.optionalString (shell == "${bootstrapTools}/bin/bash") ''
|
||||
# Don't patch #!/interpreter because it leads to retained
|
||||
# dependencies on the bootstrapTools in the final stdenv.
|
||||
dontPatchShebangs=1
|
||||
@@ -350,8 +365,8 @@ in rec {
|
||||
xz.out xz.bin libcxx libcxxabi gmp.out gnumake findutils bzip2.out
|
||||
bzip2.bin llvmPackages.llvm llvmPackages.llvm.lib zlib.out zlib.dev libffi.out coreutils ed diffutils gnutar
|
||||
gzip ncurses.out ncurses.dev ncurses.man gnused bash gawk
|
||||
gnugrep llvmPackages.clang-unwrapped patch pcre.out binutils-raw.out
|
||||
binutils-raw.dev binutils gettext
|
||||
gnugrep llvmPackages.clang-unwrapped patch pcre.out gettext
|
||||
binutils-raw.binutils.out binutils-raw.binutils.dev binutils binutils.binutils
|
||||
cc.expand-response-params
|
||||
]) ++ (with pkgs.darwin; [
|
||||
dyld Libsystem CF cctools ICU libiconv locale
|
||||
|
||||
@@ -143,7 +143,16 @@ in
|
||||
'';
|
||||
};
|
||||
gcc-unwrapped = bootstrapTools;
|
||||
binutils = bootstrapTools;
|
||||
binutils = import ../../build-support/binutils-wrapper {
|
||||
nativeTools = false;
|
||||
nativeLibc = false;
|
||||
buildPackages = { };
|
||||
libc = self.glibc;
|
||||
inherit (self) coreutils gnugrep;
|
||||
binutils = bootstrapTools;
|
||||
name = "bootstrap-binutils-wrapper";
|
||||
stdenv = self.stdenv;
|
||||
};
|
||||
coreutils = bootstrapTools;
|
||||
gnugrep = bootstrapTools;
|
||||
};
|
||||
@@ -165,7 +174,7 @@ in
|
||||
|
||||
# Rebuild binutils to use from stage2 onwards.
|
||||
overrides = self: super: {
|
||||
binutils = super.binutils.override { gold = false; };
|
||||
binutils = super.binutils_nogold;
|
||||
inherit (prevStage)
|
||||
ccWrapperStdenv
|
||||
glibc gcc-unwrapped coreutils gnugrep;
|
||||
@@ -188,9 +197,14 @@ in
|
||||
overrides = self: super: {
|
||||
inherit (prevStage)
|
||||
ccWrapperStdenv
|
||||
binutils gcc-unwrapped coreutils gnugrep
|
||||
gcc-unwrapped coreutils gnugrep
|
||||
perl paxctl gnum4 bison;
|
||||
# This also contains the full, dynamically linked, final Glibc.
|
||||
binutils = prevStage.binutils.override {
|
||||
# Rewrap the binutils with the new glibc, so both the next
|
||||
# stage's wrappers use it.
|
||||
libc = self.glibc;
|
||||
};
|
||||
};
|
||||
})
|
||||
|
||||
@@ -235,6 +249,15 @@ in
|
||||
# other purposes (binutils and top-level pkgs) too.
|
||||
inherit (prevStage) gettext gnum4 bison gmp perl glibc zlib linuxHeaders;
|
||||
|
||||
binutils = super.binutils.override {
|
||||
# Don't use stdenv's shell but our own
|
||||
shell = self.bash + "/bin/bash";
|
||||
# Build expand-response-params with last stage like below
|
||||
buildPackages = {
|
||||
inherit (prevStage) stdenv;
|
||||
};
|
||||
};
|
||||
|
||||
gcc = lib.makeOverridable (import ../../build-support/cc-wrapper) {
|
||||
nativeTools = false;
|
||||
nativeLibc = false;
|
||||
@@ -299,8 +322,8 @@ in
|
||||
allowedRequisites = with prevStage; with lib;
|
||||
# Simple executable tools
|
||||
concatMap (p: [ (getBin p) (getLib p) ])
|
||||
[ gzip bzip2 xz bash binutils coreutils diffutils findutils gawk
|
||||
gnumake gnused gnutar gnugrep gnupatch patchelf ed paxctl
|
||||
[ gzip bzip2 xz bash binutils.binutils coreutils diffutils findutils
|
||||
gawk gnumake gnused gnutar gnugrep gnupatch patchelf ed paxctl
|
||||
]
|
||||
# Library dependencies
|
||||
++ map getLib (
|
||||
@@ -310,7 +333,7 @@ in
|
||||
# More complicated cases
|
||||
++ [
|
||||
glibc.out glibc.dev glibc.bin/*propagated from .dev*/ linuxHeaders
|
||||
gcc gcc.cc gcc.cc.lib gcc.expand-response-params
|
||||
binutils gcc gcc.cc gcc.cc.lib gcc.expand-response-params
|
||||
]
|
||||
++ lib.optionals (system == "aarch64-linux")
|
||||
[ prevStage.updateAutotoolsGnuConfigScriptsHook prevStage.gnu-config ];
|
||||
|
||||
Reference in New Issue
Block a user