Commit graph

49 commits

Author SHA1 Message Date
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
klensy
0b44330c38 bump sysinfo 2024-02-22 14:01:13 +03:00
klensy
5e2a7ac47a opt-dist: bump derive_builder to dedupe darling* and remove one more syn 1.* dep 2024-02-18 14:40:19 +03:00
Amir Ayupov
13ef6d4efc [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).
2023-12-29 11:41:44 -08:00
Urgau
0691c06d94 Partial Revert: "Auto merge of #117018 - Kobzol:opt-dist-cargo-stage0" 2023-10-23 16:10:52 +02:00
bors
913ceaee96 Auto merge of #117062 - Kobzol:update-rustc-perf, r=Mark-Simulacrum
Update rustc-perf version

Needed to unblock https://github.com/rust-lang/rust/pull/116033.

The commit first needs to be uploaded to our mirrors.

r? `@Mark-Simulacrum`
2023-10-22 21:57:27 +00:00
Jakub Beránek
41dfebbd17 Update rustc-perf version 2023-10-22 20:04:20 +02:00
Jakub Beránek
823d72abde Pass host triple when running tests in opt-dist 2023-10-22 12:58:35 +02:00
Jakub Beránek
a836fd65f9 Use beta cargo in opt-dist
Using the new cargo caused issues when a backwards-incompatible change was made to cargo.
2023-10-22 12:58:35 +02:00
klensy
83425967cb opt-dist: disable unused features for tabled crate 2023-10-16 12:59:15 +03:00
Jakub Beránek
482a8204bc
Pass BOLT settings at the correct step 2023-10-11 22:40:04 +02:00
Jakub Beránek
9a0e90f7b4
Add --enable-bolt-settings bootstrap flag 2023-10-09 22:00:17 +02:00
Jakub Beránek
dd7c5a00cb
Optimize librustc_driver.so with BOLT 2023-10-09 21:55:00 +02:00
Jakub Beránek
209789ef4c
Add artifact size and step duration summaries from opt-dist to github job summary 2023-10-02 17:54:11 +02:00
bors
781ebbec8a Auto merge of #115898 - onur-ozkan:config-change-tracking, r=Mark-Simulacrum
bootstrap major change detection implementation

The use of `changelog-seen` and `bootstrap/CHANGELOG.md` has not been functional in any way for many years. We often do major/breaking changes but never update the changelog file or the `changelog-seen`. This is an alternative method for tracking major or breaking changes and informing developers when such changes occur.

Example output when bootstrap detects a major change:
![image](https://github.com/rust-lang/rust/assets/39852038/ee802dfa-a02b-488b-a433-f853ce079b8a)
2023-10-02 07:41:52 +00:00
onur-ozkan
957de61594 implement major change tracking for the bootstrap configuration
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-01 16:54:52 +03:00
Jakub Beránek
ee451f8fac
Fix build on Windows 2023-09-18 13:45:42 +02:00
Jakub Beránek
f13b54546b
Resolve clippy warnings 2023-09-13 18:12:41 +02:00
Jakub Beránek
6c718b5b8a
Refactor rustc-perf building 2023-09-13 18:11:34 +02:00
Jakub Beránek
11f9283da9
Add a Local environment to opt-dist
This makes it easier to build a PGO/BOLT optimized `rustc` locally, outside of CI.
2023-09-12 19:33:41 +02:00
Jakub Beránek
a2ed508f54
Fix reset_directory function
Before it was not deleting non-empty directories.
2023-09-12 19:33:41 +02:00
Jakub Beránek
f17047bc90
Refactor Environment 2023-09-12 19:33:41 +02:00
Jakub Beránek
95500f4941
Make executable extension platform, rather than environment dependent 2023-09-12 18:07:31 +02:00
Jakub Beránek
074fb2c6b7
Store target triple in environment 2023-09-12 18:02:45 +02:00
Jakub Beránek
c98455fe87
Retry download of rustc-perf in opt-dist
This should help resolving spurious network errors. It also increases the timeout for the archive download.
2023-09-04 22:17:35 +02:00
Mark Rousskov
fe6c863f0b Mirror the rustc-perf source
This avoids issues with the GitHub /archive/ links which can be somewhat
unreliable and are currently causing CI issues.
2023-09-04 13:21:05 -04:00
bors
abc910be6f Auto merge of #114001 - meysam81:issue-111894-fix, r=clubby789
fix(bootstrap): rename exclude flag to skip 🐛

fixes #111894
2023-08-10 04:36:51 +00:00
Jakub Beránek
6b4ec09cab
Remove usage of --use-old-text for BOLT 2023-08-09 09:33:42 +02:00
Jakub Beránek
65e468f9c2
Rename method in opt-dist
This makes it clearer that the LLVM is the host one (it doesn't necessarily have to be downloaded).
2023-08-07 23:10:57 +02:00
Meysam Azad
0b16456efa
fix(bootstrap): rename exclude flag to skip 🐛 2023-08-06 14:29:36 +07:00
Jakub Beránek
acb617c060
Generalize duration analysis
Use the correct `llvm-profdata` binary in `opt-dist`
2023-08-02 08:23:45 +02:00
Matthias Krüger
756da76814
Rollup merge of #113804 - Kobzol:opt-dist-version, r=Mark-Simulacrum
Resolve correct archive version name in `opt-dist`

Should resolve the master part of https://github.com/rust-lang/rust/issues/113784.

r? `@Mark-Simulacrum`
2023-07-31 22:51:13 +02:00
Jakub Beránek
142995f15f
Pass BOLT profile to bootstrap to be included in the reproducible artifacts archive 2023-07-31 08:54:47 +02:00
Jakub Beránek
a16925d5f3
Implement BOLT optimization in the opt-dist tool 2023-07-31 08:52:41 +02:00
bors
0be1152311 Auto merge of #113779 - Kobzol:try-build-no-lto, r=Mark-Simulacrum
Build the first LLVM without LTO in try builds

Currently, we perform three LLVM builds in the Linux x64 dist builder, which is used for `try` builds:
1) "Normal" LLVM - takes ~5s to compile thanks to `sccache`, but ~8 minutes to link because of ThinLTO
2) PGO instrumented LLVM - same timings as 1)
3) PGO optimized LLVM - takes about 20 minutes to build

When I tried to disable LTO for build 1), it suddenly takes only about a minute to build, because the linking step is much faster. The first LLVM doesn't really need LTO all that much. Without it, it will be a bit slower to build `rustc` in two subsequent steps, but it seems that the ~7 minutes saved on linking it do win that back.

Btw, we can't use the host LLVM for build 1), because this LLVM then builds `rustc` in PGO instrumented mode, and we need the same compiler when later PGO optimizing `rustc`. And we want to use our in-house LLVM for that I think.
2023-07-27 19:35:19 +00:00
Jakub Beránek
9c373e3e5b
Try to build LLVM without LTO 2023-07-18 08:45:19 +02:00
Jakub Beránek
50d117ee7d
Resolve correct archive version name in opt-dist 2023-07-17 21:24:43 +02:00
Jakub Beránek
e04b915a1d Use log groups in opt-dist
Some of the output was quite verbose in CI logs, this should help with that.
2023-07-16 10:36:13 +02:00
Jakub Beránek
18305eae8e
Print artifact sizes in opt-dist 2023-07-14 16:07:24 +02:00
Jakub Beránek
91d2fb2e2b
Port PGO/LTO/BOLT optimized build pipeline to Rust 2023-07-09 08:39:50 +02:00