-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Enable "full tools" option on ARM dist builders #71486
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This commit switches the `--enable-extended` option on the arm-related dist builders to `--enable-full-tools`. This alias in `config.py` corresponds to enabling a few more options: * `rust.lld = true` - this is the main purpose of this PR, to enable LLD on ARM-related platforms. This means it will effectively unlock compilation of wasm programs from an arm host. * `rust.llvm-tools = true` - it turns out that this option is largely ignored in rustbuild today. This is only read in one location to set some flags for the `llvm-tools` package, but the `llvm-tools` package is already produced on all of these builders. It's predicted that this will have no effect on build times. * `rust.codegen-backends = ['llvm']` - historically this also enabled the emscripten backend, but that has long since been removed. This brings the ARM dist builders in line with the x86_64 dist builders using this flag. The hope is that the extra time spent on CI building LLD will acceptable because it's cached by `sccache`, LLD is a relatively small C++ project, and the dist builders are all clocking well under 3 hours (the slowest of all builders) around 2 hours. There's likely some possible cleanup that can happen with these configure options since it doesn't look like they've aged too too well, but I'm hopeful that possible refactorings, if necessary, could be deferred to future PRs.
r? @kennytm (rust_highfive has picked a reviewer for you, use r? to override) |
These changes look reasonable to me. I'm unsure if we want some form of approval (e.g. FCP) though -- seems like given this amounts to adding lld I don't think it's necessary. r=me if you feel the same way. |
I would agree yeah that this probably doesn't need a full sign-off. How about the following though to account for that:
|
Seems reasonable to me. We're also migrating to GHA over the next month or so so slight losses are likely to be patched over by the 2 (or more) times faster builds there so I'm not too worried. @bors r+ |
📌 Commit c7a7658 has been approved by |
@bors: r- I've got some build logic to work through, this won't work as-is. |
Looks like the native build system isn't great a coping with this, so try to work around that with a few workarounds.
Ok I pushed up another commit after getting a successful build of LLD for aarch64. @Mark-Simulacrum wanna take a look at this again? |
That indeed looks like a pretty horrible hack, but if it works seems fine. If an LLVM upgrade breaks this we may need to drop it temporarily, but given how long those usually take, it's probably not too likely. @bors r+ |
📌 Commit 0546d11 has been approved by |
⌛ Testing commit 0546d11 with merge 4307e4ad6681e80e1fd0b447c62fed384cf7a57f... |
💔 Test failed - checks-azure |
@bors retry
|
⌛ Testing commit 0546d11 with merge 851098390128b82e3519fe93b8c88be2115a9359... |
@bors retry yield |
☀️ Test successful - checks-azure |
Ok so looking at the build just before this and just after this the numbers sort of go both ways (some arm builders got faster, some slower). I think it's all largely within variance though. Looking at the timing specifically of building LLD, it looks like we do indeed have a wasteful build of LLD for the host platform, but otherwise it only takes 20s (cached) to build LLD, so that's not so bad in a 3h build. |
This commit switches the
--enable-extended
option on the arm-relateddist builders to
--enable-full-tools
. This alias inconfig.py
corresponds to enabling a few more options:
rust.lld = true
- this is the main purpose of this PR, to enable LLDon ARM-related platforms. This means it will effectively unlock
compilation of wasm programs from an arm host.
rust.llvm-tools = true
- it turns out that this option is largelyignored in rustbuild today. This is only read in one location to set
some flags for the
llvm-tools
package, but thellvm-tools
packageis already produced on all of these builders. It's predicted that this
will have no effect on build times.
rust.codegen-backends = ['llvm']
- historically this also enabledthe emscripten backend, but that has long since been removed.
This brings the ARM dist builders in line with the x86_64 dist builders
using this flag. The hope is that the extra time spent on CI building
LLD will acceptable because it's cached by
sccache
, LLD is arelatively small C++ project, and the dist builders are all clocking
well under 3 hours (the slowest of all builders) around 2 hours.
There's likely some possible cleanup that can happen with these
configure options since it doesn't look like they've aged too too well,
but I'm hopeful that possible refactorings, if necessary, could be
deferred to future PRs.