Commit Graph

354 Commits

Author SHA1 Message Date
clubby789 85c4ea0138 bootstrap: rename 'user' profile to 'dist' 2023-06-26 22:54:47 +00:00
Matthias Krüger f6d58eaad3 Rollup merge of #111326 - he32:netbsd-aarch64-be, r=oli-obk
Add support for NetBSD/aarch64-be (big-endian arm64).
2023-06-26 11:58:43 +02:00
jyn 1e7f03718b fix some bugs
- fix tests when `--build` is set
- don't leak `config.example.toml` fd
- don't crash if `config.toml` doesn't exist yet
2023-06-25 10:01:04 -05:00
jyn 24e67d51a0 Don't test the profile override hack
It generates invalid TOML. I want to get rid of it eventually, but this avoids the issue in the meantime.
2023-06-24 09:40:22 -05:00
jyn c7af6fb5b8 Test color/verbose/warnings properly
These weren't being passed in to bootstrap consistently before; in particular `serialize_and_parse` forgot to pass them in.
2023-06-23 21:13:36 -05:00
jyn c5820b50c5 Test cargo arguments passed by bootstrap.py
This moves a lot of code around, but the logic itself is not too terribly complicated.

- Move almost all logic in `def bootstrap` to the `RustBuild` class, to avoid mixing setting configuration with running commands
- Update various doctests to the new (more complete) RustBuild config. In particular, don't pretend that `bin_root` supports `build` being unset.
- Change `parse_args` not to use a global, to allow testing it
- Set BUILD_DIR appropriately so bootstrap.py doesn't panic because cargo isn't found
2023-06-23 21:13:36 -05:00
Trevor Gross 22d00dcd47 Apply changes to fix python linting errors 2023-06-16 20:56:01 -04:00
Matthias Krüger 9e108f8922 Rollup merge of #112089 - Kobzol:bootstrap-warnings, r=jyn514
Add `--warnings warn` flag to `x.py`

So that bootstrap itself can be built with warnings not being treated as errors.

Fixes: https://github.com/rust-lang/rust/issues/76805

r? ```@jyn514```
2023-05-31 11:19:08 +02:00
Matthias Krüger aee05c74e1 Rollup merge of #111979 - jyn514:cargoflags, r=albertlarsan68
Respect CARGOFLAGS in bootstrap.py

This makes it possible to pass flags to bootstrap itself, for consistency with std/rustc: https://github.com/rust-lang/rust/blob/04265621f9a82cfc2fc2278b935dcc5d4a1c39b7/src/bootstrap/builder.rs#L1446-L1447
Like RUSTFLAGS, this doesn't support CARGOFLAGS_BOOTSTRAP: https://github.com/rust-lang/rust/blob/6674dcda7a1da4c66e0aa0cfc67b27e42f4ebb34/src/bootstrap/bootstrap.py#L883-L884

I found this useful recently when I wanted to pass `-Zsparse-registry` to an old checkout of the compiler from before it was stabilized in cargo.
2023-05-31 11:19:08 +02:00
Jakub Beránek 023e6c4be3 Add --warnings warn flag to x.py
So that bootstrap itself can be built with warnings not being treated as errors.
2023-05-30 23:38:17 +02:00
Ximin Luo b65c2afdfd Fix linkage for large binaries on mips64 platforms ...
... by enabling xgot feature

Co-Authored-By: Zixing Liu <zixing.liu@canonical.com>
2023-05-29 10:57:03 -06:00
bors 917b0b6c70 Auto merge of #111562 - clubby789:speedup-bootstrap-py, r=jyn514
Improve startup time of bootstrap

~~If the user has a `build/host` symlink set up, we can determine the target triple by reading it rather than invoking rustc. This significantly reduces startup time of bootstrap once any kind of build has been done~~
New approach explained below
```
➜  hyperfine -p 'git checkout -q master' -N './x.py -h' -r 50
Benchmark 1: ./x.py -h
  Time (mean ± σ):     140.7 ms ±   2.6 ms    [User: 99.9 ms, System: 39.3 ms]
  Range (min … max):   136.8 ms … 149.6 ms    50 runs

➜  rust git:(master) hyperfine -p 'git checkout -q speedup-bootstrap-py' -N './x.py -h' -r 50
Benchmark 1: ./x.py -h
  Time (mean ± σ):      95.2 ms ±   1.5 ms    [User: 67.7 ms, System: 26.7 ms]
  Range (min … max):    92.9 ms …  99.6 ms    50 runs
```

Also a small microoptimisation in using string splitting rather than regex when reading toml, which saves a few more milliseconds (2-5 testing locally), but less important.

Profiling shows the remaining runtime is around half setting up the Python runtime, and the vast majority of the remaining time is spent in subprocess building and running bootstrap itself, so probably can't be improved much further.
2023-05-26 11:52:25 +00:00
clubby789 9a86ceb049 Improve startup time for bootstrap.py 2023-05-26 10:40:55 +00:00
jyn 6674dcda7a respect CARGOFLAGS in bootstrap.py 2023-05-25 22:42:12 -05:00
Ximin Luo 0d7d2cae2f Set the timestamp of downloaded stage0 files ...
... using server-reported timestamp.
This allows us to track changes to the downloaded artifact more easily
and in a more reproducible manner.

Co-authored-by: Zixing Liu <zixing.liu@canonical.com>
2023-05-19 18:49:50 -06:00
Havard Eidnes 6ef377cc41 Add support for NetBSD/aarch64-be (big-endian arm64). 2023-05-07 18:35:35 +00:00
Albert Larsan 30119498be Make x.py work again in most (all?) cases
Wrap all of x.py in `if __name__ == '__main__':` to avoid problems with `multiprocessing`
Make the pool sizing better
2023-05-01 16:20:45 +00:00
bors 9ecda8de85 Auto merge of #110427 - Nilstrieb:parallel-bootstrap-startup, r=albertlarsan68
Parallelize initial Rust download in bootstrap

Parallelize the initial download of Rust in `bootstrap.py`

`time ./x.py --help` after `rm -r build`
Before: 33s
After: 27s
2023-04-30 20:02:00 +00:00
Nilstrieb a98968ee0e Parallelize initial rust extraction
This is quite slow and embarassingly parallel, even in python.

This speeds up the initial bootstrap build by about 5-10s.
2023-04-30 19:58:47 +00:00
Matthias Krüger a42261086f Rollup merge of #110999 - clubby789:bootstrap-stderr, r=Mark-Simulacrum
Output some bootstrap messages on stderr

Fixes #110995
2023-04-30 16:25:48 +02:00
clubby789 8c8d198d59 Output some bootstrap messages on stderr 2023-04-29 22:00:21 +01:00
jyn 500c19c8ee windows: kill rust-analyzer-proc-macro-srv before deleting stage0 directory
This fixes the following recurring error on windows:
```
Traceback (most recent call last):
  File "C:\Users\jyn\src\rust\x.py", line 29, in <module>
    bootstrap.main()
  File "C:\Users\jyn\src\rust\src\bootstrap\bootstrap.py", line 963, in main
    bootstrap(args)
  File "C:\Users\jyn\src\rust\src\bootstrap\bootstrap.py", line 927, in bootstrap
    build.download_toolchain()
  File "C:\Users\jyn\src\rust\src\bootstrap\bootstrap.py", line 437, in download_toolchain
    shutil.rmtree(bin_root)
  File "C:\Users\jyn\AppData\Local\Programs\Python\Python311\Lib\shutil.py", line 759, in rmtree
    return _rmtree_unsafe(path, onerror)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\jyn\AppData\Local\Programs\Python\Python311\Lib\shutil.py", line 617, in _rmtree_unsafe
    _rmtree_unsafe(fullname, onerror)
  File "C:\Users\jyn\AppData\Local\Programs\Python\Python311\Lib\shutil.py", line 622, in _rmtree_unsafe
    onerror(os.unlink, fullname, sys.exc_info())
  File "C:\Users\jyn\AppData\Local\Programs\Python\Python311\Lib\shutil.py", line 620, in _rmtree_unsafe
    os.unlink(fullname)
PermissionError: [WinError 5] Access is denied: 'C:\\Users\\jyn\\src\\rust\\build\\x86_64-pc-windows-msvc\\stage0\\bin\\rust-analyzer-proc-macro-srv.exe'
```
2023-04-29 03:21:51 -05:00
John Kelly cffc10b2c8 Comment round #1 2023-04-27 20:55:36 +01:00
John Kelly 1b390f44cf Skip rustc version detection on macOS 2023-04-27 17:39:58 +01:00
Oli Scherer 95e8b6a196 Group entire build steps in the gha logs 2023-04-22 22:20:12 +00:00
Matthias Krüger af92c6a0a3 Rollup merge of #110429 - jsoref:spelling-src-bootstrap, r=albertlarsan68
Spelling src bootstrap

The various src/* items seem slightly disparate, so I'm doing src/* individually.

split from #110392
2023-04-19 17:54:39 +02:00
Josh Soref 70ce74e1e2 Spelling src/bootstrap
* although
* correct
* granular
* libunwind
* repository
* section

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2023-04-17 12:04:06 -04:00
Nilstrieb 46a25581aa Extract variable 2023-04-16 21:36:05 +02:00
Nilstrieb fa4639195c bootstrap.py: Use loop for _download_component_helper 2023-04-16 21:34:55 +02:00
Nilstrieb 488da69ce9 bootstrap.py: Create cache before download
This make `_download_component_helper` "pure".
2023-04-16 21:31:33 +02:00
Weihang Lo f795a150fe chore: allow cargo to have its own workspace
This also

* bumps cargo to the latest in rust-lang/cargo.
* adds 0BSD to allowed list of licenses

Co-authored-by: Scott Schafer <schaferjscott@gmail.com>
Co-authored-by: Eric Huss <eric@huss.org>
2023-04-16 19:32:12 +01:00
Michael Goulet 4a24aab220 Rollup merge of #96971 - zhaixiaojuan:master, r=wesleywiser
Initial support for loongarch64-unknown-linux-gnu

Hi, We hope to add a new port in rust for LoongArch.

LoongArch intro
LoongArch is a RISC style ISA which is independently designed by Loongson
Technology in China. It is divided into two versions, the 32-bit version (LA32)
and the 64-bit version (LA64). LA64 applications have application-level
backward binary compatibility with LA32 applications. LoongArch is composed of
a basic part (Loongson Base) and an expanded part. The expansion part includes
Loongson Binary Translation (LBT), Loongson VirtualiZation (LVZ), Loongson SIMD
EXtension (LSX) and Loongson Advanced SIMD EXtension(LASX).

Currently the LA464 processor core supports LoongArch ISA and the Loongson
3A5000 processor integrates 4 64-bit LA464 cores. LA464 is a four-issue 64-bit
high-performance processor core. It can be used as a single core for high-end
embedded and desktop applications, or as a basic processor core to form an
on-chip multi-core system for server and high-performance machine applications.

Documentations:
ISA:
https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html
ABI:
https://loongson.github.io/LoongArch-Documentation/LoongArch-ELF-ABI-EN.html
More docs can be found at:
https://loongson.github.io/LoongArch-Documentation/README-EN.html

Since last year, we have locally adapted two versions of rust, rust1.41 and rust1.57, and completed the test locally.
I'm not sure if I'm submitting all the patches at once, so I split up the patches and here's one of the commits
2023-04-11 20:28:45 -07:00
zhaixiaojuan 10f7ba562a Add LLVM target and cputype matching for loongarch64 2023-04-04 17:05:08 +08:00
Kai Luo b56fcb173b Set LIBPATH 2023-03-28 10:59:45 +08:00
Zephaniah Ong 1057e2132e emit JSON output for building of bootstrap itself 2023-02-11 09:38:33 +08:00
Matthias Krüger a3e152ca81 Rollup merge of #107808 - kadiwa4:built-unsuccessfully, r=albertlarsan68
bootstrap.py: fix build-failure message

A small mistake I did.
Corrects #107470, fixes #107804

r? `@albertlarsan68` (since you reviewed the last one)
2023-02-09 11:21:58 +01:00
KaDiWa 62edacf738 bootstrap.py: fix build-failure message 2023-02-08 19:19:23 +01:00
Tharun Suresh 4259073e9a x.py fails all downloads that use a tempdir with snap curl #107722 2023-02-08 13:37:15 +05:30
KaDiWa 043c634a9c assert that should_fix_bins_and_dylibs has been run 2023-01-31 18:22:01 +01:00
KaDiWa b925031c5f bootstrap: --help handling 2023-01-30 15:58:37 +01:00
KaDiWa 385dbff9e5 bootstrap script: slight cleanup 2023-01-30 15:58:35 +01:00
chansuke ac3ec77f07 Fix woriding from rustbuild to bootstrap 2023-01-27 01:21:21 +09:00
J Haigh 1a993611d2 Revert "warn newer available version of the x tool" 2023-01-11 11:11:56 -07:00
DebugSteven a917308d91 remove commented out old code 2022-12-31 11:38:44 -07:00
DebugSteven b2cd3374e9 remove leading comma from macro expansion 2022-12-31 11:37:13 -07:00
Marcus Calhoun-Lopez 480297d216 Respect --set=target.platform during build
Avoid quoting targets that do not contain a period.
See https://github.com/rust-lang/rust/commit/1532fd8cd0db93f469e414f9da31ef083a44fcba

`--set=target.platform.linker` is ignored if RUSTFLAGS is not set.
Undo parts of https://github.com/rust-lang/rust/commit/d1291dc8b4ac9a98ff1d286402559e4ba5d68488
2022-12-29 12:22:49 -07:00
Joe Neeman 66180dfad8 Run patchelf also on rust-analyzer-proc-macro-srv. 2022-11-29 14:36:52 -06:00
bors 5253b0a0a1 Auto merge of #101949 - matthiaskrgr:rollup-xu5cqnd, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #101093 (Initial version of 1.64 release notes)
 - #101713 (change AccessLevels representation)
 - #101821 (Bump Unicode to version 15.0.0, regenerate tables)
 - #101826 (Enforce "joined()" and "joined_with_noop()" test)
 - #101835 (Allow using vendoring when running bootstrap from outside the source root)
 - #101942 (Revert "Copy stage0 binaries into stage0-sysroot")
 - #101943 (rustdoc: remove unused CSS `.non-exhaustive { margin-bottom }`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-09-17 22:04:28 +00:00
Chris Wailes d1291dc8b4 Improve handing of env vars during bootstrap process
This CL modifies the handing of env vars during the bootstrap process in
two ways:
1. Replaces '-' characters with '_' characters in target names to
   increase compatibility with different shells
2. Passes Stage0 snapshot compiler related env vars to early invocations
   of Cargo
2022-09-16 15:03:11 -07:00
Joshua Nelson 63b8d9b689 Allow using vendoring when running bootstrap from outside the current working directory 2022-09-14 22:02:13 -05:00