Commit graph

89 commits

Author SHA1 Message Date
Michael Goulet
73382e4417 Bump rustc-perf and update PGO crates 2025-05-29 09:00:36 +00:00
klensy
40e3b804e5 opt-dist: fix deprecated BOLT -icf=1 option 2025-05-17 13:18:46 +03:00
Jakub Beránek
082777e088
Do not deny warnings for fast try builds 2025-05-08 14:52:38 +02:00
Jakub Beránek
34495f5895
Migrate opt-dist to edition 2024 2025-05-08 10:18:17 +02:00
Jakub Beránek
52fcf33ed7
Remove unused dependency from opt-dist 2025-05-08 10:17:21 +02:00
Guillaume Gomez
fbfc329795 Update sysinfo to 0.35.0 in src/tools/opt-dist 2025-05-02 14:27:27 +02:00
Matthias Krüger
6922524035
Rollup merge of #139962 - ognevny:opt-dist-tests, r=Kobzol
opt-dist: add a flag for running tests

when using `opt-dist local` user probably won't need to run tests (for various reasons). currently the only way to disable them is to set `TRY_DIST_BUILD=1`, which is not obvious and can be bad for non-CI envronments (as I guess)

possibly the `run_tests` name can be confusing too...

r? Kobzol

try-job: dist-x86_64-linux
try-job: dist-x86_64-msvc
2025-04-17 17:40:31 +02:00
Maksim Bondarenkov
62a104d99e opt-dist: add a flag for running tests
when using `opt-dist local` user probably won't need to run tests (for
various reasons). currently the only way to disable them is to set
`TRY_DIST_BUILD=1`, which is not obvious and can be bad for non-CI
envronments (as I guess)
2025-04-17 13:01:22 +03:00
Jakub Beránek
6f386e7a9c
Only delete the lld directory if it exists 2025-04-16 08:15:04 +02:00
Jakub Beránek
bd9bd388fc
Allow disabling --llvm-shared in opt-dist 2025-04-16 08:14:36 +02:00
Maksim Bondarenkov
86e2a07a13 opt-dist: use executable-extension for host llvm-profdata
so the merging step doesn't fail for `opt-dist local` on Windows
2025-04-12 10:52:46 +03:00
bit-aloo
3723f15c77
replace config.toml to bootstrap.toml in src:tools 2025-03-17 12:56:48 +05:30
Jakub Beránek
34272a5468 Do not overwrite original config.toml in opt-dist
So that follow-up CI commands can proceed normally. It will also avoid overwriting `config.toml` when running opt-dist tests locally.
2025-03-13 21:29:46 +01:00
Jubilee
df2a263ec2
Rollup merge of #137667 - Kobzol:gcc-dist-build, r=onur-ozkan
Add `dist::Gcc` build step

This PR adds a `dist:Gcc` bootstrap step to distribute a prebuilt `libgccjit.so` from CI on x64 Linux.

With primed sccache, the build takes ~4 minutes on CI, and produces a 50 MiB archive.

I want to land this before adding something akin to `[gcc] download-ci-gcc = true`, to already have the artifacts available on CI, to make it easier to setup the download merge-base logic.

r? ``@ghost``
2025-03-04 14:50:41 -08:00
Jakub Beránek
ead58ea6f8 Move BuildStep and metric logging into build_helper 2025-03-04 12:30:41 +01:00
Jakub Beránek
4c452857e8 Add dist:Gcc build step
To distribute the prebuilt libgccjit.so from CI.
2025-02-28 09:42:47 +01:00
Kajetan Puchalski
b7916fb4b7 tests: Skip const OOM tests on aarch64-unknown-linux-gnu
Skip const OOM tests on AArch64 Linux through explicit annotations
instead of inside opt-dist.
Intended to avoid confusion in cases like #135952.

Prerequisite for https://github.com/rust-lang/rust/pull/135960.
2025-01-29 09:17:35 +00:00
Ben Kimock
1f4309cec4 Fix 2/4 tests skipped by opt-dist 2025-01-27 16:06:30 -05:00
Jakub Beránek
7877883339
Run the glibc run-make test in opt-dist 2025-01-22 12:47:44 +01:00
Jakub Beránek
75f8cc6ab6
Enable verbose tests in opt-dist tests 2025-01-21 10:20:24 +01:00
Jakub Beránek
ef9349db86
Add test for checking used glibc symbols 2025-01-21 10:20:24 +01:00
Kajetan Puchalski
3d54764121 ci: Enable opt-dist for dist-aarch64-linux builds
Enable optimised AArch64 dist builds with the opt-dist pipeline.

For the time being, disable bolt on aarch64 due to upstream bolt bugs.
2025-01-13 10:33:28 +00:00
Zalathar
85e0d42a77 Don't enable anyhow's backtrace feature in opt-dist
As of the stabilization of `std::backtrace` in Rust 1.65, this package flag has
no effect other than to enable an unused dependency on the `backtrace` crate.
2025-01-06 13:08:49 +11:00
Jieyou Xu
42bf2af5ea opt-dist: propagate channel info to bootstrap 2024-12-20 02:32:28 +08:00
onur-ozkan
bc7531089e move src/tools/build_helper into src/build_helper
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-11-11 11:19:11 +03:00
Noratrieb
a26450cf81 Rename target triple to target tuple in many places in the compiler
This changes the naming to the new naming, used by `--print
target-tuple`.
It does not change all locations, but many.
2024-11-02 21:29:59 +01:00
许杰友 Jieyou Xu (Joe)
f1e408a8de Remove valgrind test suite from opt-dist 2024-10-07 07:54:57 +00:00
Michael Goulet
c682aa162b Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
onur-ozkan
654513e202 use local-rebuild instead of BOOTSTRAP_SKIP_TARGET_SANITY workaround
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-09-12 08:53:28 +03:00
onur-ozkan
1a743710aa set BOOTSTRAP_SKIP_TARGET_SANITY in opt-dist before running tests
opt-dist overrides the stage 0 compiler with previously compiled compilers,
which can cause confusion in bootstrap's target sanity checks. It is best to
skip that check.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-27 12:19:05 +03:00
Guillaume Gomez
f44958679a Update sysinfo version to 0.31.2 2024-08-01 16:39:55 +02:00
bors
f8060d282d Auto merge of #128083 - Mark-Simulacrum:bump-bootstrap, r=albertlarsan68
Bump bootstrap compiler to new beta

https://forge.rust-lang.org/release/process.html#master-bootstrap-update-t-2-day-tuesday
2024-07-30 17:49:08 +00:00
Mark Rousskov
abb1ebaae1 Revert "opt-dist: dont overrwite config.toml when verifying"
This reverts commit c81a40bbc0.
2024-07-30 11:03:03 -04:00
Nicholas Nethercote
84ac80f192 Reformat use declarations.
The previous commit updated `rustfmt.toml` appropriately. This commit is
the outcome of running `x fmt --all` with the new formatting options.
2024-07-29 08:26:52 +10:00
onur-ozkan
a31b1b2eeb opt-dist: apply considerable clippy suggestions
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-06-13 18:41:49 +03:00
Weihang Lo
e24be071e3
feat: vendor crates required by opt-dist to collect profiles
These are the default package set required by opt-dist to correctly work,
hence for people wanting to build a production grade of rustc in a
sandboxed / air-gapped environment, these need to be vendored.

The size of `rustc-src-nightly.tar.xz` before and after this change:

* Before: 298M
* After: 323M (+8%)

These crates are the default set of packages required by opt-dist
to correctly work, hence for people wanting to build a production grade
of rustc in an sandboxed / air-gapped environment, these need to be vendored.

The size of `rustc-src-nightly.tar.xz` before and after this change:

* Before: 298M
* After: 323M (+8%)

Size change might or might not be a concern.
See the previous discussion: https://github.com/rust-lang/rust/pull/125166#issuecomment-2113626468

Previous efforts on making:

* https://github.com/rust-lang/rust/pull/125125
* https://github.com/rust-lang/rust/pull/125166

---

Note that extra works still need to be done to make it fully vendored.

* The current pinned rustc-perf uses `tempfile::Tempdir` as the working
  directory when collecting profiles from some of these packages.
  This "tmp" working directory usage make it impossible for Cargo to pick
  up the correct vendor sources setting in `.cargo/config.toml` bundled
  in the rustc-src tarball. [^1]
* opt-dist verifies the final built rustc against a subset of rustc test
  suite. However it rolls out its own `config.toml` without setting
  `vendor = true`, and that results in `./vendor/` directory removed.
  [^2]

[^1]: 4f313add60/collector/src/compile/benchmark/mod.rs (L164-L173)
[^2]: 606afbb617/src/tools/opt-dist/src/tests.rs (L62-L77)
2024-06-09 12:33:11 -04:00
Weihang Lo
0a11dcfdf4
feat(opt-dist): new flag --benchmark-cargo-config
The flag propagates cargo configs to `rustc-perf --cargo-config`,
which is particularly useful when the environment is air-gapped,
and you want to use the default set of training crates vendored
in the rustc-src tarball.
2024-06-03 17:15:52 -04:00
Weihang Lo
c81a40bbc0
opt-dist: dont overrwite config.toml when verifying
This is another step toward making opt-dist work in sandboxed environments

opt-dist verifies the final built rustc against a subset of rustc test
suite. However it overwrote the pre-existing `config.toml` [^1],
and that results in ./vendor/ directory removed [^2].

Instead of overwriting, this patch use `--set <config-value>` to
override paths to rustc / cargo / llvm-config.

[^1]: 606afbb617/src/tools/opt-dist/src/tests.rs (L62-L77)
[^2]: 8679004993/src/bootstrap/bootstrap.py (L1057)
2024-05-25 23:23:47 -04:00
Bernardo Meurer Costa
95c05c3e37 refactor(opt-dist): use rustc-perf from rustc checkout
This replaces the hardcoded rustc-perf commit and ad-hoc downloading and
unpacking of its zipped source with defaulting to use the new rustc-perf
submodule.

While it would be nice to make `opt-dist` able to initialize the
submodule automatically when pointing to a Rust checkout _other_ than
the one opt-dist was built in, that would require a bigger refactor that
moved `update_submodule`, from bootstrap, into build_helper.

Regardless, I imagine it must be quite rare to use `opt-dist` with a
checkout that is neither from a rust-src tarball (which will contain the
submodule), nor the checkout opt-dist itself was built (bootstrap will
update the submodule when opt-dist is built).
2024-05-20 15:01:10 +00:00
Bernardo Meurer Costa
c3c9783de2 feat(tools/opt-dist): allow local builds to specify a rustc-perf checkout 2024-05-14 17:34:33 +00:00
klensy
39159a3629 opt-dist: use xz2 instead of xz crate
xz crate consist of simple reexport of xz2 crate. Why? Idk.
2024-05-09 16:43:14 +03:00
Matthias Krüger
d6e70df1a2 crashes: add another test showing that everything works fine when we need compile-flags to repro an ice and add README 2024-04-14 11:16:15 +02:00
Matthias Krüger
7b05360a1e bootstrap/compiletest: implement "crashes" tests that fail if no ice is reproduced 2024-04-14 11:14:45 +02:00
bors
9023f908cf Auto merge of #119418 - aaupov:master, r=Kobzol
[BOLT] Use CDSort and CDSplit

CDSort and CDSplit are the most recent versions of function ordering and function splitting algorithms with some improvements over the previous baseline (ext-tsp and two-way splitting).
2024-03-16 11:18:39 +00:00
Jakub Beránek
4a1f4ff474 Include all library files in artifact summary on CI 2024-03-07 12:19:13 +01:00
bors
51f483944d Auto merge of #121866 - Kobzol:opt-dist-find-llvm, r=Mark-Simulacrum
Modify opt-dist logic for finding LLVM artifacts

This is the `rustc` side of fixing https://github.com/rust-lang/rust/pull/121395#issuecomment-1973572885.
2024-03-07 07:31:34 +00:00
Jakub Beránek
31ae82395c
Modify opt-dist logic for finding LLVM artifacts 2024-03-01 19:46:14 +01:00
Nikita Popov
1a652fa869 Handle new LLVM soname
LLVM now includes the minor version in the soname, and also changed
the names of shared object files. libLLVM-18.so is now a symlink to
libLLVM.so.18.1. We need to make some changes to support this:

First, we need to run the installed llvm-config binary, rather
than the one from the build directory. This is because the symlink
does not exist in the build directory, but llvm-config requires it.
This looks like an LLVM bug to me, but it's probably a good idea to
use the installed version anyway.

Second, when installing LLVM into the libdir, we need to install
the target of the symlink, ans this is what will get loaded at
runtime.

However, the rust-dev component in particular also needs to
distribute the symlink itself, as download-ci-llvm will end up
invoking llvm-config, which requires the symlink to exist. The
symlink is not shipped in other components.
2024-03-01 16:18:58 +01:00
klensy
53efefb3c2 dedupe env_logger, drop is-terminal 2024-02-22 14:35:21 +03:00
klensy
15bc68118f bump tabled 2024-02-22 14:17:59 +03:00