Commit graph

42 commits

Author SHA1 Message Date
bit-aloo
1954494ec9
change config.toml to bootstrap.toml for bootstrap module 2025-03-17 12:56:41 +05:30
onur-ozkan
b4a3b6484d set build.test-stage = 2 for tools profile
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-19 19:16:49 +03:00
Noratrieb
2e69bd2ce9 Add debug assertions to compiler profile
Working on the compiler without debug assertions is not a very
productive way to work on the compiler.
2025-01-19 16:01:54 +01:00
Jieyou Xu
aafd56b87a bootstrap: revert rust.download-rustc global default to false
And only default library and tools profile to `rust.download-rustc =
"if-unchanged"`.
2024-11-23 23:47:03 +08:00
onur-ozkan
db12ccd88e disable precompiled rustc for "library" and "compiler" profiles
There is an ongoing discussion about this on Zulip and for now we
want to keep these disabled.

Zulip thread: https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/.60download-rustc.20.3D.20'if-unchanged'.60.20for.20.60compiler.60.20profile.3F

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-11-13 08:21:22 +03:00
onur-ozkan
1837f6f5b1 Reapply "Rollup merge of #132772 - onur-ozkan:download-rustc-default, r=jieyouxu"
This reverts commit c0cee4e36b.
2024-11-13 08:21:03 +03:00
Jieyou Xu
c0cee4e36b Revert "Rollup merge of #132772 - onur-ozkan:download-rustc-default, r=jieyouxu"
This reverts commit c435fa8c4b, reversing
changes made to 88acd493f9.

Seems to have unintentionally omitted commit hash leading to
<https://github.com/rust-lang/rust/pull/132772>.
2024-11-10 20:31:18 +08:00
onur-ozkan
2e0afc8b71 respect to global download-rustc default in non-dist profiles
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-11-08 16:26:00 +03:00
onur-ozkan
7fd3ce4b4b make download-rustc="if-unchanged" default for library profile
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-11-02 10:13:55 +03:00
onur-ozkan
ed89d9b7a2 force ci-llvm by default on library and tools profiles
It's very rare for developers to need to modify LLVM,
so "if-unchanged" isn't a good default since it fetches
the LLVM submodule to track changes.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-09-10 19:07:18 +03:00
Urgau
5f367bbbd2 Make download-ci-llvm = true check if CI llvm is available
and make it the default for the compiler profile, as to prevent
unnecessarily checking out `src/llvm-project` with `"if-unchanged"`.
2024-09-06 17:49:45 +02:00
onur-ozkan
6310da9ab9 remove debug-logging default from tools profile
`debug-logging` conflicts with `download-rustc` option, and doesn't really
make sense to enable it for a profile that is used for tool development.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-18 16:22:02 +03:00
onur-ozkan
98854f7d3b add lld = true to default dist profile
Make sure lld is enabled for dist profile unless it is explicitly disabled.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-06-28 11:33:35 +03:00
Jakub Beránek
b4df72aae2
Do not enable llvm-bitcode-linker in most default bootstrap profiles 2024-06-14 15:49:09 +02:00
Jubilee Young
887151ad93 Set debuginfo-level = "line-tables-only" for compiler profile
This profile has only undergone minimal tweaks since it was originally
drafted. I asked a number of compiler contributors and they said they
set rust.debug explicitly. This was even true for one contributor that
set `rust.debug` = false! Almost everyone seems slightly surprised that
`rust.debug = true` is not the default.

However, adding full debuginfo at this level costs multiple gigabytes!
We can still get much better debuginfo by setting "line-tables-only"
at the cost of only 150~200 MB.
2024-05-15 17:38:22 -07:00
Kjetil Kjeka
6a50d059a5 Bootstrap: Add argument for building llvm bitcode linker 2024-03-11 13:35:55 +01:00
onur-ozkan
52227edfaf set llvm.assertions to false in compiler profile
Having this set to true disrupts compiler development workflows for people who use `llvm.download-ci-llvm = true`
because we don't provide ci-llvm on the `rustc-alt-builds` server. Therefore, it is kept off by default.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-02-22 22:15:05 +03:00
Nilstrieb
9e68d89cc8 Remove the "codegen" profile from bootstrap
This profile originally made sense when download-ci-llvm = if-unchanged
didn't exist and we had the bad tradeoff of "never modify or always
compile".

Thankfully, these grim times are over and we have discovered clean
water, so the only differentiator between the two profiles is the
codegen profile having LLVM assertions. Adding them doesn't cause that
much of a slowdown, <10% on UI tests from an unscientific benchmark.

It also had LLVM warnings when compiling, which makes sense for every
compiler contributor brave enough to compile LLVM.

The way I removed is by just issueing a nice error message. Given that
everyone with this profile should be a contributor and not someone like
a distro who is more upset when things break, this should be fine.
If it isn't, we can always fall back to just letting codegen mean
compiler.
2024-02-19 17:26:41 +01:00
Nilstrieb
09e6043483 Add rust.frame-pointers config option
This is very helpful for profiling. I've hacked this in many times, so
let's add it properly.
2024-02-18 22:23:09 +01:00
onur-ozkan
23446427fe merge if-available and if-unchanged for download-ci-llvm
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-11-11 18:29:11 +03:00
LuuuX
1b8dee19e8 Fix issue #110087
Three tasks have been implemented here.

Add a new `download-ci-llvm = if-unchange` option and enable if by
default for `profile = codegen`.

Include all build artifacts by traversing the llvm-project build output,
Keep the downloadable llvm the same state as if you have just run a full
source build.

After selecting the codegen profile during ./x.py setup, the submodule
will be automatically downloaded.
2023-11-08 09:22:28 +08:00
jyn
368f51743b Set channel = nightly in dist profile 2023-06-29 23:37:20 -05:00
clubby789
85c4ea0138 bootstrap: rename 'user' profile to 'dist' 2023-06-26 22:54:47 +00:00
Zachary Whiteley
ab68390153
Improve documentation for tools profile
Make the build process more beginner friendly:

 - Include information explaining that the stage2 toolchain should be
   used (and not the stage1 toolchain) due to the `download-rustc`
   setting.

 - Display a message when the user runs `x setup tools` explaining that
   they should use the stage2 toolchain.
2023-06-10 19:08:58 +01:00
Matt Harding
ee554e2444 Make "codegen" config.toml profile build llvm 2023-04-08 07:16:24 +01:00
Joshua Nelson
20ca24e3c5 More config.toml.example cleanups
- Link to more documentation
- Move `changelog-seen` into the "Global Settings" section
- Update incorrect comments on `llvm.link-shared` and
  `rust.debug-assertions`
- Use the correct default in the commented-out example more often
- Clarify that `docs` and `compiler-docs` only control the default,
  they're not a hard-off switch.
- Document `-vvv` and `local-rebuild`
- Minor improvements to doc-comments in config.toml.example

This also sets `download-rustc = false`; that was already the default,
but it will be helpful in case the default changes
(https://jyn.dev/2023/01/12/Bootstrapping-Rust-in-2023.html).
2023-03-27 07:07:49 -05:00
nils
09b1254eb2
Rollup merge of #109124 - ferrocene:pa-compression-mode, r=Mark-Simulacrum
Add `dist.compression-profile` option to control compression speed

PR #108534 reduced the size of compressed archives, but (as expected) it also resulted in way longer compression times and memory usage during compression.

It's desirable to keep status quo (smaller archives but more CI usage), but it should also be configurable so that downstream users don't have to waste that much time on CI. As a data point, this resulted in doubling the time of Ferrocene's dist jobs, and required us to increase the RAM allocation for one of such jobs.

This PR adds a new `config.toml` setting, `dist.compression-profile`. The values can be:

* `fast`: equivalent to the gzip and xz preset of "1"
* `balanced`: equivalent to the gzip and xz preset of "6" (the CLI defaults as far as I'm aware)
* `best`: equivalent to the gzip present of "9", and our custom xz profile

The default has also been moved back to `balanced`, to try and avoid the compression time regression for downstream users. I don't feel too strongly on the default, and I'm open to changing it.

Also, for the `best` profile the XZ settings do not match the "9" preset used by the CLI, and it might be confusing. Should we create a `custom-rustc-ci`/`ultra` profile for that?

r? ``@Mark-Simulacrum``
2023-03-21 13:00:23 +01:00
Pietro Albini
01771762cd
change default to fast for everyone but the user profile 2023-03-21 09:44:42 +01:00
ozkanonur
2e7249fa0f add enable-warnings flag for llvm
Signed-off-by: ozkanonur <work@onurozkan.dev>
2023-03-15 13:20:02 +03:00
Joshua Nelson
ba0b7af236 Sync codegen defaults with compiler defaults and add a ping message so they stay in sync 2023-03-05 05:16:37 -06:00
clubby789
2adf26fc72 Add rust.lto=off to bootstrap 2023-01-26 12:24:48 +00:00
Joshua Nelson
ac672621c0 Set download-ci-llvm = "if-available" by default when channel = "dev"
See https://github.com/rust-lang/compiler-team/issues/566.
The motivation for changing the default is to avoid downloading and building LLVM when someone runs `x build` before running `x setup`.
The motivation for only doing it on `channel = "dev"` is to avoid breaking distros or users installing from source. It works because `dev` is also the default channel.

The diff looks larger than it is; most of it is moving the `llvm` branch below the `rust` so `config.channel` is set.
2022-11-19 22:13:22 -05:00
Joshua Nelson
7443cc2bd6 Enable compiler-docs by default for compiler, codegen, and tools profiles. 2022-05-05 20:05:12 -05:00
Joshua Nelson
6840030283 Default to doc-stage = 2 for the tools profile
This already enables `download-rustc`, so it's quick to build rustdoc,
and this makes it less confusing when changes to rustdoc aren't reflected in the docs.

Note that this uses 2 and not 1 because `download-rustc` only affects stage 2 runs.
2021-12-09 11:30:38 -06:00
Ben Reeves
098d86236b bootstrap: Update comment (again) in config.library.toml 2021-09-30 11:25:20 -05:00
Ben Reeves
1cf905fdab bootstrap: Update comment in config.library.toml.
Downloading LLVM from CI works for all platforms now.
2021-09-30 02:05:42 -05:00
Joshua Nelson
9e722f7e32 Set backtrace-on-ice by default for compiler and codegen profiles
If there's an ICE while bootstrapping, it's most likely because of a change to the compiler.
2021-04-25 12:09:08 -04:00
Joshua Nelson
f8653c9aca Add config file for tools enabling stage1 downloads by default
Otherwise no one will be able to find the setting.
2021-04-05 13:05:43 -04:00
Antoine Martin
ab614b0f01 Implement "if-available" option for download-ci-llvm 2020-10-13 18:00:25 +02:00
Thom Chiovoloni
afe83d4c1c Rename bootstrap/defaults/{config.toml.PROFILE => config.PROFILE.toml} 2020-10-04 18:35:16 -07:00
Tshepang Lekhonkhobe
58c232af6a reduce overlong line 2020-09-27 04:22:55 +02:00
Joshua Nelson
c9c8fb88cf Add sample defaults for config.toml
- Allow including defaults in `src/bootstrap/defaults` using `profile = "..."`
- Add default config files
- Combine config files using the merge dependency.
- Add comments to default config files
- Add a README asking to open an issue if the defaults are bad
- Give a loud error if trying to merge `.target`, since it's not
  currently supported
- Use an exhaustive match
- Use `<none>` in config.toml.example to avoid confusion
- Fix bugs in `Merge` derives

Previously, it would completely ignore the profile defaults if there
were any settings in `config.toml`. I sent an email to the `merge` maintainer
asking them to make the behavior in this commit the default.

This introduces a new dependency on `merge` that hasn't yet been vetted.

I want to improve the output when `include = "x"` isn't found:

```
thread 'main' panicked at 'fs::read_to_string(&file) failed with No such file or directory (os error 2) ("configuration file did not exist")', src/bootstrap/config.rs:522:28
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
failed to run: /home/joshua/rustc/build/bootstrap/debug/bootstrap test tidy
Build completed unsuccessfully in 0:00:00
```

However that seems like it could be fixed in a follow-up.
2020-09-20 16:18:58 -04:00