Commit graph

339 commits

Author SHA1 Message Date
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
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 1532fd8cd0

`--set=target.platform.linker` is ignored if RUSTFLAGS is not set.
Undo parts of d1291dc8b4
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
Matthias Krüger
b05f97d594
Rollup merge of #100852 - Samyak2:samyak/100459, r=Mark-Simulacrum
Use `getuid` to check instead of `USER` env var in rustbuild

This makes it consistent with `x.py` as changed in #95671

Fixes #100459
2022-09-01 21:37:08 +02:00
Dezhi Wu
b1430fb7ca Fix a bunch of typo
This PR will fix some typos detected by [typos].

I only picked the ones I was sure were spelling errors to fix, mostly in
the comments.

[typos]: https://github.com/crate-ci/typos
2022-08-31 18:24:55 +08:00
Samyak Sarnayak
b9c47f624e
Use getuid to check instead of USER env var in rustbuild
This makes it consistent with `x.py` as changed in #95671

Fixes #100459
2022-08-26 20:14:38 +05:30
Chris Denton
9ac4a4e67a
Fix typo in src/bootstrap/bootstrap.py
Co-authored-by: Marco Colombo <mar.colombo13@gmail.com>
2022-07-05 09:06:43 +01:00
Chris Denton
b1541ff198
bootstrap.py: Always use .exe for Windows
This ensure that it will run the Windows executable if other files in the directory (such as Linux executables) have the same file name minus the extension.
2022-07-04 15:57:10 +01:00
bors
0e21a27075 Auto merge of #98373 - joshtriplett:bootstrap-locking, r=jyn514
Move locking from bootstrap.py to rust bootstrap, using fd-lock

Helps with https://github.com/rust-lang/rust/issues/94829.
2022-07-03 16:29:09 +00:00
Thom Chiovoloni
79f8dc0b89
Add a --build-dir flag to rustbuild 2022-06-30 15:50:48 -07:00
Josh Triplett
5a30316fc1 Move locking from bootstrap.py to rust bootstrap, using fd-lock 2022-06-27 10:57:31 -07:00
Joshua Nelson
028fd634bb Respect --color when building rustbuild itself 2022-06-26 04:44:47 -05:00
Joshua Nelson
345eb14f6c Remove vendoring support when building from git sources
This is difficult to support without submodule handling in bootstrap.py, because cargo will refuse
to vendor sources unless it knows the Cargo.toml files of all tools in tree. Moving vendor support
to rustbuild means that rustbuild will be built without vendoring.

Rather than trying to solve this, just remove support altogether and require
people to use `rustc-src` if they want vendoring (or run `cargo vendor` manually).
2022-06-21 23:42:56 -05:00
Joshua Nelson
9cde0f7877 Fully remove submodule handling from bootstrap.py
These submodules were previously updated in python because Cargo gives a hard error if toml files
are missing from the workspace:

```
error: failed to load manifest for workspace member `/home/jnelson/rust-lang/rust/src/tools/rls`

Caused by:
  failed to read `/home/jnelson/rust-lang/rust/src/tools/rls/Cargo.toml`

Caused by:
  No such file or directory (os error 2)
failed to run: /home/jnelson/rust-lang/rust/build/x86_64-unknown-linux-gnu/stage0/bin/cargo build --manifest-path /home/jnelson/rust-lang/rust/src/bootstrap/Cargo.toml
```

However, bootstrap doesn't actually need to be part of the workspace.
Remove it so we can move submodule handling fully to Rust, avoiding duplicate code between Rust and Python.

Note that this does break `cargo run`; it has to be `cd src/bootstrap && cargo run` now.
Given that we're planning to make the main entrypoint a shell script (or rust binary),
I think this is a good tradeoff for reduced complexity in bootstrap.py.
2022-06-21 22:55:43 -05:00
Pietro Albini
c1a0f49e9f
keep the same config values in stage0 between invocations
This commit allows users to change the contents of the "config" key in
src/stage0.json without having it overridden the next time the
bump-stage0 tool is executed.
2022-06-09 17:54:11 +02:00
Joshua Nelson
81f511cc2b Move beta rustfmt downloads to rustbuild 2022-06-07 10:16:55 -05:00
bors
6dadfc06fe Auto merge of #93717 - pietroalbini:pa-ci-profiler, r=Mark-Simulacrum
Add build metrics to rustbuild

This PR adds a new module of rustbuild, `ci_profiler`, whose job is to gather as much information as possible about the CI build as possible and store it in a JSON file uploaded to `ci-artifacts`. Right now for each step it collects:

* Type name and debug representation of the `Step` object.
* Duration of the step (excluding child steps).
* Systemwide CPU stats for the duration of the step (both single core and all cores).
* Which child steps were executed.

This is capable of replacing both the scripts to collect CPU stats and the `[TIMING]` lines in build logs (not yet removed, until we port our tooling to use the CI profiler). The format is also extensible to be able in the future to collect more information.

r? `@Mark-Simulacrum`
2022-06-05 01:35:03 +00:00
binggh
c0f18f9412 Re-add help_on_error for download-ci-llvm
Remove dead code

Missing }

./x.py fmt

Remove duplicate check

Recursively remove all usage of help_on_error
2022-05-29 23:16:10 +08:00