diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix index 2dfb34e40372..e6bad23bfacd 100644 --- a/pkgs/stdenv/darwin/default.nix +++ b/pkgs/stdenv/darwin/default.nix @@ -326,6 +326,7 @@ let libllvm lld llvm + llvm-manpages ; }; @@ -548,6 +549,7 @@ assert bootstrapTools.passthru.isFromBootstrapFiles or false; # sanity check ''; passthru.isFromBootstrapFiles = true; }; + llvm-manpages = self.llvmPackages.libllvm; lld = self.stdenv.mkDerivation { name = "bootstrap-stage0-lld"; buildCommand = ""; @@ -952,33 +954,38 @@ assert bootstrapTools.passthru.isFromBootstrapFiles or false; # sanity check selfDarwin: superDarwin: darwinPackages prevStage // sdkDarwinPackages prevStage + # Rebuild darwin.binutils with the new LLVM, so only inherit libSystem from the previous stage. // { inherit (prevStage.darwin) libSystem; - - # binutils-unwrapped needs to build the LLVM man pages, which requires a lot of Python stuff - # that ultimately ends up depending on git. Fortunately, the git dependency is only for check - # inputs. The following set of overrides allow the LLVM documentation to be built without - # pulling curl (and other packages like ffmpeg) into the stdenv bootstrap. - binutils-unwrapped = superDarwin.binutils-unwrapped.override (old: { - llvm-manpages = super.llvmPackages.llvm-manpages.override { - python3Packages = self.python3.pkgs.overrideScope ( - _: superPython: { - hatch-vcs = superPython.hatch-vcs.overrideAttrs { doInstallCheck = false; }; - markdown-it-py = superPython.markdown-it-py.overrideAttrs { doInstallCheck = false; }; - mdit-py-plugins = superPython.mdit-py-plugins.overrideAttrs { doInstallCheck = false; }; - myst-parser = superPython.myst-parser.overrideAttrs { doInstallCheck = false; }; - } - ); - }; - }); } ); llvmPackages = let + tools = super.llvmPackages.tools.extend ( + _: superTools: { + # darwin.binutils-unwrapped needs to build the LLVM man pages, which requires a lot of Python stuff + # that ultimately ends up depending on git. Fortunately, the git dependency is only for check + # inputs. The following set of overrides allow the LLVM documentation to be built without + # pulling curl (and other packages like ffmpeg) into the stdenv bootstrap. + # + # However, even without darwin.binutils-unwrapped, this has to be overriden in the LLVM package set + # because otherwise llvmPackages.llvm-manpages on its own is broken. + llvm-manpages = superTools.llvm-manpages.override { + python3Packages = self.python3.pkgs.overrideScope ( + _: superPython: { + hatch-vcs = superPython.hatch-vcs.overrideAttrs { doInstallCheck = false; }; + markdown-it-py = superPython.markdown-it-py.overrideAttrs { doInstallCheck = false; }; + mdit-py-plugins = superPython.mdit-py-plugins.overrideAttrs { doInstallCheck = false; }; + myst-parser = superPython.myst-parser.overrideAttrs { doInstallCheck = false; }; + } + ); + }; + } + ); libraries = super.llvmPackages.libraries.extend (_: _: llvmLibrariesPackages prevStage); in - super.llvmPackages // { inherit libraries; } // libraries; + super.llvmPackages // { inherit tools libraries; } // tools // libraries; } ];