Make combining LLD with external LLVM config a hard error by Kobzol · Pull Request #143175 · rust-lang/rust
added 2 commits
June 29, 2025 09:34
rustbot
added
the
T-bootstrap
label
Jun 29, 2025rust-bors bot added a commit that referenced this pull request
Jun 29, 2025…<try> Make combining LLD with external LLVM config a hard error Younger me made this only a warning in #139853, because our post-dist tests were relying on this. But that was not a good idea, because there are a bunch of places in bootstrap that outright try to build LLD/copy LLD to sysroot when `lld_enabled` is true (rightfully so), which is causing issues (#143076). Instead of piling more hacks, I'd like to just disallow this, and use hack to make our CI work instead. If this breaks the CI post-dist tests, I'll either add some special environment variable for it, or, as an alternative, make the error back into a warning, but also disable `lld_enabled` when this situation happens. try-job: dist-x86_64-linux
Kobzol
marked this pull request as ready for review
rustbot
added
S-waiting-on-author
and removed S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.labels
Jun 30, 2025
bors
added
S-waiting-on-bors
and removed S-waiting-on-author
Status: This is awaiting some action (such as code changes or more information) from the author.labels
Jun 30, 2025rust-bors bot added a commit that referenced this pull request
Jun 30, 2025Do not enable LLD by default in the dist profile History of us building & shipping LLD for `dist` builds: 1) We used to unconditionally build & ship LLD in bootstrap 2) This was causing problems for people doing custom `dist` builds (https://rust-lang.zulipchat.com/#narrow/stream/326414-t-infra.2Fbootstrap/topic/MSVC.20Runtime.20mismatch.20when.20building.20LLD) 3) #126701 made shipping of LLD optional, but to preserve previous behavior, it forcefully enabled `rust.lld = true` in the `dist` profile by default, and overwrote the default to `false` on our CI for external LLVM builds. - This also didn't match the documentation of `rust.lld` in `bootstrap.example.toml`, which I previously missed. 4) However, since the external LLVM opt-out was only implemented for our CI, and not for all `dist` users, this started causing issues for people `dist`ing with external LLVM (#143076). The problem is that the default shouldn't be "true", but "LLD is enabled when LLVM isn't external", but this is not possible to do only in TOML. So this PR reverses the behavior. LLD is not enabled by default in `dist` anymore. We switch our CI to *opt into* disting LLD, unless an external LLVM is used. External `dist` users can still opt into enabling LLD, but if they do so while also using external LLVM, they will now get a [hard error](#143175). r? `@jieyouxu` try-job: x86_64-mingw try-job: dist-x86_64-linux
rust-bors bot added a commit that referenced this pull request
Jun 30, 2025Do not enable LLD by default in the dist profile History of us building & shipping LLD for `dist` builds: 1) We used to unconditionally build & ship LLD in bootstrap 2) This was causing problems for people doing custom `dist` builds (https://rust-lang.zulipchat.com/#narrow/stream/326414-t-infra.2Fbootstrap/topic/MSVC.20Runtime.20mismatch.20when.20building.20LLD) 3) #126701 made shipping of LLD optional, but to preserve previous behavior, it forcefully enabled `rust.lld = true` in the `dist` profile by default, and overwrote the default to `false` on our CI for external LLVM builds. - This also didn't match the documentation of `rust.lld` in `bootstrap.example.toml`, which I previously missed. 4) However, since the external LLVM opt-out was only implemented for our CI, and not for all `dist` users, this started causing issues for people `dist`ing with external LLVM (#143076). The problem is that the default shouldn't be "true", but "LLD is enabled when LLVM isn't external", but this is not possible to do only in TOML. So this PR reverses the behavior. LLD is not enabled by default in `dist` anymore. We switch our CI to *opt into* disting LLD, unless an external LLVM is used. External `dist` users can still opt into enabling LLD, but if they do so while also using external LLVM, they will now get a [hard error](#143175). r? `@jieyouxu` try-job: `x86_64-mingw*` try-job: dist-x86_64-linux
bors added a commit that referenced this pull request
Jun 30, 2025Rollup of 9 pull requests Successful merges: - #143019 (Ensure -V --verbose processes both codegen_backend and codegen-backend) - #143140 (give Pointer::into_parts a more scary name and offer a safer alternative) - #143175 (Make combining LLD with external LLVM config a hard error) - #143180 (Use `tracing-forest` instead of `tracing-tree` for bootstrap tracing) - #143223 (Improve macro stats printing) - #143228 (Handle build scripts better in `-Zmacro-stats` output.) - #143229 ([COMPILETEST-UNTANGLE 1/N] Move some some early config checks to the lib and move the compiletest binary) - #143246 (Subtree update of `rust-analyzer`) - #143248 (Update books) r? `@ghost` `@rustbot` modify labels: rollup
rust-timer added a commit that referenced this pull request
Jul 1, 2025Rollup merge of #143175 - Kobzol:bootstrap-lld-external-llvm-config, r=Jieyouxu Make combining LLD with external LLVM config a hard error Younger me made this only a warning in #139853, because our post-dist tests were relying on this. But that was not a good idea, because there are a bunch of places in bootstrap that outright try to build LLD/copy LLD to sysroot when `lld_enabled` is true (rightfully so), which is causing issues (#143076). Instead of piling more hacks, I'd like to just disallow this, and if we need to use a hack, do it only for our CI. If this breaks the CI post-dist tests, I'll either add some special environment variable for it, or, as an alternative, make the error back into a warning, but also disable `lld_enabled` when this situation happens. try-job: dist-x86_64-linux Fixes: #143175
github-actions bot pushed a commit to rust-lang/miri that referenced this pull request
Jul 1, 2025…r=Jieyouxu Make combining LLD with external LLVM config a hard error Younger me made this only a warning in rust-lang/rust#139853, because our post-dist tests were relying on this. But that was not a good idea, because there are a bunch of places in bootstrap that outright try to build LLD/copy LLD to sysroot when `lld_enabled` is true (rightfully so), which is causing issues (rust-lang/rust#143076). Instead of piling more hacks, I'd like to just disallow this, and if we need to use a hack, do it only for our CI. If this breaks the CI post-dist tests, I'll either add some special environment variable for it, or, as an alternative, make the error back into a warning, but also disable `lld_enabled` when this situation happens. try-job: dist-x86_64-linux Fixes: rust-lang/rust#143175
Kobzol
deleted the
bootstrap-lld-external-llvm-config
branch
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request
Jul 1, 2025…ieyouxu Do not enable LLD by default in the dist profile History of us building & shipping LLD for `dist` builds: 1) We used to unconditionally build & ship LLD in bootstrap 2) This was causing problems for people doing custom `dist` builds (https://rust-lang.zulipchat.com/#narrow/stream/326414-t-infra.2Fbootstrap/topic/MSVC.20Runtime.20mismatch.20when.20building.20LLD) 3) rust-lang#126701 made shipping of LLD optional, but to preserve previous behavior, it forcefully enabled `rust.lld = true` in the `dist` profile by default, and overwrote the default to `false` on our CI for external LLVM builds. - This also didn't match the documentation of `rust.lld` in `bootstrap.example.toml`, which I previously missed. 4) However, since the external LLVM opt-out was only implemented for our CI, and not for all `dist` users, this started causing issues for people `dist`ing with external LLVM (rust-lang#143076). The problem is that the default shouldn't be "true", but "LLD is enabled when LLVM isn't external", but this is not possible to do only in TOML. So this PR reverses the behavior. LLD is not enabled by default in `dist` anymore. We switch our CI to *opt into* disting LLD, unless an external LLVM is used. External `dist` users can still opt into enabling LLD, but if they do so while also using external LLVM, they will now get a [hard error](rust-lang#143175). r? `@jieyouxu` try-job: `x86_64-mingw*` try-job: dist-x86_64-linux
rust-timer added a commit that referenced this pull request
Jul 1, 2025Rollup merge of #143255 - Kobzol:disable-lld-by-default, r=jieyouxu Do not enable LLD by default in the dist profile History of us building & shipping LLD for `dist` builds: 1) We used to unconditionally build & ship LLD in bootstrap 2) This was causing problems for people doing custom `dist` builds (https://rust-lang.zulipchat.com/#narrow/stream/326414-t-infra.2Fbootstrap/topic/MSVC.20Runtime.20mismatch.20when.20building.20LLD) 3) #126701 made shipping of LLD optional, but to preserve previous behavior, it forcefully enabled `rust.lld = true` in the `dist` profile by default, and overwrote the default to `false` on our CI for external LLVM builds. - This also didn't match the documentation of `rust.lld` in `bootstrap.example.toml`, which I previously missed. 4) However, since the external LLVM opt-out was only implemented for our CI, and not for all `dist` users, this started causing issues for people `dist`ing with external LLVM (#143076). The problem is that the default shouldn't be "true", but "LLD is enabled when LLVM isn't external", but this is not possible to do only in TOML. So this PR reverses the behavior. LLD is not enabled by default in `dist` anymore. We switch our CI to *opt into* disting LLD, unless an external LLVM is used. External `dist` users can still opt into enabling LLD, but if they do so while also using external LLVM, they will now get a [hard error](#143175). r? `@jieyouxu` try-job: `x86_64-mingw*` try-job: dist-x86_64-linux
antoyo pushed a commit to rust-lang/rustc_codegen_gcc that referenced this pull request
Jul 12, 2025Kobzol pushed a commit to Kobzol/rustc_codegen_cranelift that referenced this pull request
Dec 29, 2025…r=Jieyouxu Make combining LLD with external LLVM config a hard error Younger me made this only a warning in rust-lang/rust#139853, because our post-dist tests were relying on this. But that was not a good idea, because there are a bunch of places in bootstrap that outright try to build LLD/copy LLD to sysroot when `lld_enabled` is true (rightfully so), which is causing issues (rust-lang/rust#143076). Instead of piling more hacks, I'd like to just disallow this, and if we need to use a hack, do it only for our CI. If this breaks the CI post-dist tests, I'll either add some special environment variable for it, or, as an alternative, make the error back into a warning, but also disable `lld_enabled` when this situation happens. try-job: dist-x86_64-linux Fixes: rust-lang/rust#143175
Kobzol pushed a commit to Kobzol/rustc_codegen_cranelift that referenced this pull request
Dec 29, 2025christian-schilling pushed a commit to christian-schilling/rustc_codegen_cranelift that referenced this pull request
Jan 27, 2026christian-schilling pushed a commit to christian-schilling/rustc_codegen_cranelift that referenced this pull request
Jan 27, 2026This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters