Commit Graph

187 Commits

Author SHA1 Message Date
Antoine Martin
b8ae4c5e36 Handle included config in bootstrap.py 2020-10-13 18:08:02 +02:00
Antoine Martin
ab614b0f01 Implement "if-available" option for download-ci-llvm 2020-10-13 18:00:25 +02:00
Mark Rousskov
df004df3a7 Re-download LLVM on submodule updates only 2020-09-23 19:03:52 -04:00
bors
33aa8be8b5 Auto merge of #76864 - est31:downloaded_llvm_no_clone_sources, r=Mark-Simulacrum
Don't download/sync llvm-project submodule if download-ci-llvm is set

llvm-project takes > 1GB storage space and a long time to download.
It's better to not download it unless needed.
2020-09-23 10:38:18 +00:00
Mark Rousskov
a625ab77e8 Discover Rust toolchain without Python 2020-09-20 16:18:58 -04:00
Mark Rousskov
e21eb613e0 Remove support for different src directory
This requires that bootstrap is run from the same worktree as the sources it'll
build, but this is basically required for the build to work anyway. You can
still run it from a different directory, just that the files it builds must be
beside it.
2020-09-20 16:18:58 -04:00
Mark Rousskov
6d19561587 Set BUILD_TRIPLE via build script
This moves build triple discovery for rustbuild from bootstrap.py into a build
script, meaning it will "just work" if building rustbuild via Cargo rather than
Python.
2020-09-20 16:18:58 -04:00
est31
f05b47ccdf Don't download/sync llvm-project submodule if download-ci-llvm is set
llvm-project takes > 1GB storage space and a long time to download.
It's better to not download it unless needed.
2020-09-18 06:21:06 +02:00
Aleksey Kladov
cf0720146e Fix CI LLVM to work on NixOS out of the box 2020-09-13 14:47:15 +02:00
Mark Rousskov
a7b092f418 Download LLVM from CI to bootstrap 2020-09-12 15:10:09 -04:00
bors
f5b7dd8181 Auto merge of #76381 - petrochenkov:nomingwcomp, r=Mark-Simulacrum
rustbuild: Do not use `rust-mingw` component when bootstrapping windows-gnu targets

Addresses https://github.com/rust-lang/rust/pull/76326#issuecomment-687273473 (ancient `x86_64-w64-mingw32-gcc` is selected as a linker wrapper, which is not usable in `use_lld=true` mode).

Perhaps the comment about incompatible mingw was true in the past, but many things changed since then.
With this change I was able to build everything successfully locally using a newer mingw toolchain, if it passes through the older toolchain on CI, then it should be good, I think.
2020-09-11 06:36:43 +00:00
Mark Rousskov
2656d3414c Make bootstrap build on stable
This is generally a good idea, and will help with being able to build bootstrap
without Python over time as it means we can "just" build with cargo +beta build
rather than needing the user to set environment variables. This is a minor step,
but a necessary one on that road.
2020-09-06 21:26:09 -04:00
Vadim Petrochenkov
8754884b78 rustbuild: Do not use rust-mingw component when bootstrapping windows-gnu targets 2020-09-05 20:49:59 +03:00
Eduard-Mihai Burtescu
b5076fbb96 bootstrap.py: patch RPATH on NixOS to handle the new zlib dependency. 2020-07-17 16:25:05 +03:00
Eduard-Mihai Burtescu
d866160b85 bootstrap.py: guard against GC in NixOS patching support. 2020-07-17 15:35:49 +03:00
Aleksey Kladov
058c1b60a5 Add rust-analyzer submodule
The current plan is that submodule tracks the `release` branch of
rust-analyzer, which is updated once a week.

rust-analyzer is a workspace (with a virtual manifest), the actual
binary is provide by `crates/rust-analyzer` package.

Note that we intentionally don't add rust-analyzer to `Kind::Test`,
for two reasons.

*First*, at the moment rust-analyzer's test suite does a couple of
things which might not work in the context of rust repository. For
example, it shells out directly to `rustup` and `rustfmt`. So, making
this work requires non-trivial efforts.

*Second*, it seems unlikely that running tests in rust-lang/rust repo
would provide any additional guarantees. rust-analyzer builds with
stable and does not depend on the specifics of the compiler, so
changes to compiler can't break ra, unless they break stability
guarantee. Additionally, rust-analyzer itself is gated on bors, so we
are pretty confident that test suite passes.
2020-07-03 16:55:35 +02:00
Andrew Paverd
8b368dbcbb Bootstrap: fallback detection of Windows 2020-06-25 15:45:24 +01:00
David Wood
b60ec47a06
bootstrap: no config.toml exists regression
This commit fixes a regression introduced in #73317 where an oversight
meant that `config.toml` was assumed to exist.

Signed-off-by: David Wood <david@davidtw.co>
2020-06-22 10:02:00 +01:00
David Wood
93022be991
bootstrap: read config from $RUST_BOOTSTRAP_CONFIG
This commit modifies bootstrap so that `config.toml` is read first from
`RUST_BOOTSTRAP_CONFIG`, then `--config` and finally `config.toml` in the
current directory.

This is a subjective change, intended to improve the ergnomics when
using "development shells" for rustc development (for example, using tools
such as Nix) which set environment variables to ensure a reproducible
environment (these development shells can then be version controlled). By
optionally reading `config.toml` from an environment variable, a `config.toml`
can be defined in the development shell and a path to it exposed in the
`RUST_BOOTSTRAP_CONFIG` environment variable - avoiding the need to manually
symlink the contents of this file to `config.toml` in the working
directory.

Signed-off-by: David Wood <david@davidtw.co>
2020-06-16 10:07:34 +01:00
Joshua Cotton
34b2072599 Fix bootstrap failing on win32 2020-05-12 10:51:44 -04:00
Joshua Nelson
df36ec0b7e x.py: allow configuring the build directory
This allows configuring the directory for build artifacts, instead of having it always be ./build. This means you can set it to a constant location, letting you reuse the same cache while working in several different directories.

The configuration lives in config.toml under build.build-dir. By default, it keeps the existing default of ./build, but it can be configured to any relative or absolute path. Additionally, it allows making outputs relative to the root of the git repository using $ROOT.
2020-05-08 20:33:50 -04:00
Joshua Nelson
9bcf4097e3 x.py: Give a more helpful error message if curl isn't installed
This also abstracts checking for a command into `require`.

Before:

```
Updating only changed submodules
Submodules updated in 0.01 seconds
Traceback (most recent call last):
  File "./x.py", line 11, in <module>
    bootstrap.main()
  ...
  File "/home/joshua/src/rust/src/bootstrap/bootstrap.py", line 137, in run
    ret = subprocess.Popen(args, **kwargs)
  File "/usr/lib/python2.7/subprocess.py", line 394, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1047, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory
```

After:

```
error: unable to run `curl --version`: [Errno 2] No such file or directory
Please make sure it's installed and in the path.
```
2020-05-03 09:39:25 -04:00
Dillon Amburgey
7ac093fda9 Detect git version before attempting to use --progress
Otherwise each update is run twice and errors are printed
2020-04-25 16:30:48 -04:00
lzutao
a39e96407a
Remove CARGO_BUILD_TARGET from bootstrap.py 2020-03-21 21:54:01 +07:00
Chris Simpkins
19aaf63945 PEP8 format spacing 2020-02-07 22:04:44 -05:00
Chris Simpkins
3998249ae7 remove unnecessary local variable assignment in context manager 2020-02-07 22:00:25 -05:00
Mark Rousskov
b613b0cb36 Correctly reinstall rustfmt on channel change 2020-01-31 12:25:14 -05:00
Adam Perry
72a844dee7 bootstrap.py fetches rustfmt.
Co-Authored-By: Mark Rousskov <mark.simulacrum@gmail.com>
2019-12-21 20:23:39 -05:00
Ximin Luo
0533249fd7 rustbuild: don't clobber RUSTFLAGS, append to it 2019-12-01 00:53:25 +00:00
Guanqun Lu
0019371e3d bootstrap: don't call support_xz in hot-path 2019-11-12 00:16:05 +08:00
Guanqun Lu
8d56bcc59c download .tar.xz if python3 is used 2019-11-10 16:34:31 +08:00
Alex Crichton
c7d285b781 Remove src/llvm-emscripten submodule
With #65251 landed there's no need to build two LLVM backends and ship
them with rustc, every target we have now uses the same LLVM backend!

This removes the `src/llvm-emscripten` submodule and additionally
removes all support from rustbuild for building the emscripten LLVM
backend. Multiple codegen backend support is left in place for now, and
this is intended to be an easy 10-15 minute win on CI times by avoiding
having to build LLVM twice.
2019-10-21 13:05:31 -07:00
Guanqun Lu
b117bd7366 check git in bootstrap.py when trying to update submodule 2019-09-09 22:28:57 +08:00
Guanqun Lu
85e09c6531 use 'get_toml' instead of regular expression 2019-09-09 00:21:05 +08:00
Mazdak Farrokhzad
3c4a586221
Rollup merge of #64098 - Mark-Simulacrum:always-warn, r=alexcrichton
Ensure edition lints and internal lints are enabled with deny-warnings=false

Previously we only passed the deny command line flags if deny-warnings was enabled, but now we either pass -W... or -D... for each of the flags as appropriate.

This is also a breaking change to x.py as it changes `--warnings=allow` to `--warnings=warn` which is what that flag actually did; we don't have an allow warnings mode.
2019-09-07 20:01:43 +02:00
Guanqun Lu
ba7d1b80d0 it's more pythonic to use 'is not None' in python files 2019-09-06 15:14:25 +08:00
Mark Rousskov
c86ea34639 Ensure all warnings are emitted even on warnings=warn 2019-09-04 14:21:35 -04:00
Mazdak Farrokhzad
78e728e2c2
Rollup merge of #63953 - crlf0710:bootstrap_mirroring, r=Mark-Simulacrum
bootstrap: allow specifying mirror for bootstrap compiler download.
2019-08-29 17:13:59 +02:00
Charles Lew
c9bf5c0bff bootstrap: allow specifying mirror for bootstrap compiler download. 2019-08-28 00:47:12 +08:00
Marc-Antoine Perennou
935c1c8607 rustbuild: allow disabling deny(warnings) for bootstrap
When deny-warnings is not specified or set to true, the behaviour is the same as before.
When deny-warnings is set to false, warnings are now allowed

Fixes #63911

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2019-08-27 17:26:54 +02:00
Eric Huss
06c3256a6b Update cargo-vendor usage 2019-07-09 16:12:41 -07:00
Marcel Hellwig
cc314b066a Remove bitrig support from rust 2019-05-13 11:09:06 +02:00
Nathan Froyd
a0d63354f2 intelligently handle older version of git in bootstrap
If we fail to run with `--progress`, try running without instead.

Fixes #57080.
2019-04-29 17:01:42 -04:00
Pietro Albini
19e39cb9cb
Rollup merge of #58080 - MikaelUrankar:freebsd_arm, r=sanxiyn
Add FreeBSD armv6 and armv7 targets
2019-03-08 09:41:36 +01:00
varkor
890ef48eb9 Fix an indexing error when using x.py help 2019-02-23 18:57:25 +00:00
MikaelUrankar
adddee4946 Add FreeBSD armv6 and armv7 targets 2019-02-13 12:19:50 +01:00
Josh Stone
df0466d0bb Rebase to the llvm-project monorepo
The new git submodule src/llvm-project is a monorepo replacing src/llvm
and src/tools/{clang,lld,lldb}.  This also serves as a rebase for these
projects to the new 8.x branch from trunk.

The src/llvm-emscripten fork is unchanged for now.
2019-01-25 15:39:54 -08:00
lenoil98
c2863dd1b4
Update bootstrap.py
Add PowerPC64 support on FreeBSD
2019-01-17 13:20:00 -05:00
Mark Rousskov
2a663555dd Remove licenses 2018-12-25 21:08:33 -07:00
Matthias Krüger
49eb1e5419 x.py: fixup 6130fc884b
./x.py used to automatically check out the right commit when a submodule was outdated and ./x.py build was run
and submodules handling was enabled in config.toml (submodules = true).

But it threw an error:
[...]
failed to run: git submodule -q sync --progress src/tools/clippy

The commit removes the --progress from git submodule call.

Fixes #57080
2018-12-24 20:23:00 +01:00