Commit graph

2824 commits

Author SHA1 Message Date
Niels Sascha Reedijk
7b652d341e Haiku: explicitly set CMAKE_SYSTEM_NAME when cross-compiling
This resolves issues where the cross-build of LLVM fails because it tries to
link to the host's system libraries instead of the target's system libraries.
2020-10-16 08:32:41 +01:00
bors
19e1aac6ea Auto merge of #77756 - alarsyo:setup-llvm-detect, r=jyn514
Detect configuration for LLVM during setup

This is a first draft to address #77579, setting `download-ci-llvm` to true on Linux, but I could also implement the `if-available` setting mentioned in the issue.

On other platforms I was thinking about using [the which crate](https://crates.io/crates/which), if adding a dependency on it is considered okay of course, to detect the presence of `llvm-config` in the path, and use it if found. Still a work in progress of course.
2020-10-15 02:10:11 +00:00
Ian Jackson
636728e394 x.py setup: Avoid infinite loop if stdin is /dev/null
EOF is not an error; it just causes read_line to produce "".

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2020-10-14 11:40:53 +01:00
Ian Jackson
e9058571ce x.py setup: Fix handling of wrong interactive input
We need a fresh input buffer each time, or we reuse the previous
data (since `read_line` appends).

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2020-10-14 11:40:53 +01:00
Ian Jackson
6e9e040bf8 x.py: setup: Offer keywords in interactive prompt
We understand these profile names because we use .to_str().
Mention them in the question.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2020-10-14 11:40:53 +01:00
Ian Jackson
b7c6041df1 x.py: setup: Provide a description of what it does
Co-authored-by: Joshua Nelson <joshua@yottadb.com>
2020-10-14 11:40:53 +01:00
Ian Jackson
c4c5653a48 x.py: setup: Refactor to centralise list of profiles
Put all()'s otuput in the order we want to print things in, and add a
comment about why they are in this order.  Provide purpose() and
all_for_help().  Use these things everywhere.

Move all the abbrev character ("a", "b", etc.) processing into
interactive_path.

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2020-10-14 11:40:53 +01:00
Dylan DPC
31799bade5
Rollup merge of #77829 - gburgessiv:unused-features-var, r=alexcrichton
bootstrap: only use compiler-builtins-c if they exist

The assignment of `features` above was added in rust-lang#60981, but
never used. Presumably the intent was to replace the string literal here
with it.

While I'm in the area, `compiler_builtins_c_feature` doesn't need to be
a `String`.

I'm not entirely sure of a great way to locally test this -- `./x.py test`
passed on my machine, but 🤷‍♂️.

r? @alexcrichton
2020-10-14 02:30:44 +02:00
Yuki Okushi
b4a3b5617f
Rollup merge of #77909 - pietroalbini:fix-build-manifest-path, r=Mark-Simulacrum
bootstrap: set correct path for the build-manifest binary

This changes the path of the binary inside the tarball to be:

```
build-manifest-{release}-{target}/build-manifest/bin/build-manifest
```

...instead of:

```
build-manifest-{release}-{target}/build-manifest/bin/build-manifest/build-manifest
```

r? @Mark-Simulacrum
2020-10-14 06:02:41 +09:00
Yuki Okushi
c82478719b
Rollup merge of #77868 - Aaron1011:llvm-tools-opt-llc, r=Mark-Simulacrum
Include `llvm-dis`, `llc` and `opt` in `llvm-tools-preview` component

Fixes #55890

It's useful to have `llc` and `opt` available when debugging an LLVM
miscompilation,.
2020-10-14 06:02:31 +09:00
Yuki Okushi
ec0cabd0fe
Rollup merge of #77786 - jyn514:rustdoc, r=Mark-Simulacrum
Mention rustdoc in `x.py setup`

This lets new contributors know which option they should pick; previously it wasn't clear 'compiler' also included rustdoc.

Unresolved questions: should this say 'compiler and tools' instead? I don't know of any tools that are modified in-tree other than rustdoc, though.

r? @Mark-Simulacrum
2020-10-14 06:02:27 +09:00
Yuki Okushi
fe7e794b6a
Rollup merge of #77776 - jyn514:wrong-way, r=Mark-Simulacrum
Give an error when running `x.py test --stage 0 src/test/ui`

The error can be overridden with `COMPILETEST_FORCE_STAGE0=1`. In practice I don't know why anyone would do this.

r? @Mark-Simulacrum

Closes https://github.com/rust-lang/rust/issues/77711
2020-10-14 06:02:25 +09:00
Pietro Albini
6091538105
bootstrap: set correct path for the build-manifest binary 2020-10-13 20:37:38 +02:00
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
Joshua Nelson
b7080e6fd4 Give an error when running x.py test --stage 0 src/test/ui 2020-10-13 10:33:32 -04:00
bors
d772879df3 Auto merge of #77762 - pietroalbini:dist-build-manifest, r=Mark-Simulacrum
Dist build manifest

This PR makes two changes that should remove a significant chunk of the time spent in our release process: cloning the `rust-lang/rust` monorepo, all its submodules, and building `bootstrap` to then invoke `build-manifest`:

* `build-manifest` doesn't rely on a clone of the monorepo being present anymore. The only remaining bit of information it fetched from it (the Rust version) is instead bundled in the binary.
* A new "component" is added, `build-manifest`. That component includes a prebuilt version of the tool, and it's *not* included in the Rustup manifest. This will allow `promote-release` to directly invoke the tool without interacting with our build system.
* The Linux x86_64 CI is changed to also build the component mentioned above. It's the only CI builder tasked to do so, and to cleanly support this a new `--include-default-paths` flag was added to `./x.py`.
* The `BUILD_MANIFEST_NUM_THREADS` environment variable is added to configure the number of threads at runtime.

This PR is best reviewed commit-by-commit.
r? `@Mark-Simulacrum`
2020-10-13 12:11:47 +00:00
Aaron Hill
c16c8acae1
Include llvm-dis, llc and opt in llvm-tools-preview component
Fixes #55890

It's useful to have `llc` and `opt` available when debugging an LLVM
miscompilation,.
2020-10-12 17:05:48 -04:00
Yuki Okushi
93ec29b0cb
Rollup merge of #77852 - 12101111:fix-bootstrap-doc, r=jonas-schievink
update url in bootstrap README (gcc-rs -> cc-rs)

gcc-rs is renamed to cc-rs 3 years ago.
2020-10-13 04:08:05 +09:00
Yuki Okushi
dde997710a
Rollup merge of #77746 - winnayx:issue-77572-fix, r=jyn514
Fix `x.py setup` sets `changelog-seen`

Fixes #77572 by setting changelog-seen in setup.rs
2020-10-13 04:07:56 +09:00
Pietro Albini
0b7ee9d522
build-manifest: bundle the rustc version in the binary 2020-10-12 19:54:40 +02:00
Pietro Albini
60ae018bf1
bootstrap: add --include-default-paths to ./x.py 2020-10-12 19:53:25 +02:00
Pietro Albini
2f387e9d11
bootstrap: add disabled by default build-manifest dist component 2020-10-12 19:53:24 +02:00
Pietro Albini
25cc75c924
build-manifest: accept the Rust version instead of the monorepo path
This commit changes the way build-manifest is invoked, to let it accept
the Rust version directly instead of requiring the path of the Rust
monorepo and letting build-manifest figure out the path on its own.

This allows to run build-manifest without a clone of the monorepo.
2020-10-12 19:53:22 +02:00
12101111
5d44402345 update url in bootstrap README 2020-10-12 21:17:11 +08:00
Winnie Xiao
d7494af551 Mostly print statements to see where things are
More print statementsstatements lol

Solved the basic case of eliminating check_version ifk_version if subcommand = setup

Finished v1

checking out old bootstrap.py

checked out old irrelevant files

fixed tidy

Moved VERSION from bin/main.rs to lib.rs

Fixed semicolon return issue

x.py fmt
2020-10-11 22:32:06 +02:00
George Burgess IV
ca5478a5df bootstrap: only use compiler-builtins-c if they exist
The assignment of `features` above was added in rust-lang#60981, but
never used. Presumably the intent was to replace the string literal here
with it.

While I'm in the area, `compiler_builtins_c_feature` doesn't need to be
a `String`.
2020-10-11 12:36:13 -07:00
Joshua Nelson
23c3356f9a Mention rustdoc in x.py setup
This also allows 'rustdoc' as a string for the compiler profile.
2020-10-10 10:27:11 -04:00
Pietro Albini
8d2b15943b
bootstrap: always use the Rust version in package names
The format of the tarballs produced by CI is roughly the following:

    {component}-{release}-{target}.{ext}

While on the beta and nightly channels `{release}` is just the channel
name, on the stable channel is either the Rust version or the version of
the component we're shipping:

    cargo-0.47.0-x86_64-unknown-linux-gnu.tar.xz
    clippy-0.0.212-x86_64-unknown-linux-gnu.tar.xz
    llvm-tools-1.46.0-x86_64-unknown-linux-gnu.tar.xz
    miri-0.1.0-x86_64-unknown-linux-gnu.tar.xz
    rls-1.41.0-x86_64-unknown-linux-gnu.tar.xz
    rust-1.46.0-x86_64-unknown-linux-gnu.tar.xz
    ...

This makes it really hard to get the package URL without having access
to the manifest (and there is no manifest on ci-artifacts.rlo), as there
is no consistent version number to use.

This commit addresses the problem by always using the Rust version
number as `{release}` for the stable channel, regardless of the version
number of the component we're shipping. I chose that instead of "stable"
to avoid breaking the URL scheme *that* much.

Rustup should not be affected by this change, as it fetches the URLs
from the manifest. Unfortunately we don't have a way to test other
clients before making a stable release, as this change only affects the
stable channel.
2020-10-09 15:21:45 +02:00
bors
9c07010b7f Auto merge of #77631 - jyn514:helpful-changelog, r=RalfJung
Make src/bootstrap/CHANGELOG.md more helpful

Addresses fe6fc555ac (r42949241).

r? `@RalfJung`
cc `@Mark-Simulacrum`
2020-10-08 05:50:49 +00:00
Joshua Nelson
2a41342e9c Make src/bootstrap/CHANGELOG.md more helpful 2020-10-06 18:28:01 -04:00
Dylan DPC
f600154be6
Rollup merge of #77624 - akoptelov:c-all-targets-fix, r=jyn514
Add c as a shorthand check alternative for new options #77603

There is a missing "c" that is a shorthand for "check" in newly added match arm for handling check-specific options.
2020-10-07 00:16:16 +02:00
Dylan DPC
59707c5748
Rollup merge of #77400 - alarsyo:xpy-setup-suggestions, r=jyn514
Fix suggestions for x.py setup

#76631 introduced a new `setup` command to x.py

By default the command prompts for a profile to use:

```
Welcome to the Rust project! What do you want to do with x.py?
a) Contribute to the standard library
b) Contribute to the compiler
c) Contribute to the compiler, and also modify LLVM or codegen
d) Install Rust from source
```

and then displays command suggestions, depending on which profile was chosen. However [the mapping between chosen profile](9cba260df0/src/bootstrap/setup.rs (L75-L85)) and [suggestion](9cba260df0/src/bootstrap/setup.rs (L42-L47)) isn't exact, leading to suggestions not being shown if the user presses `c` or `d`. (because "c" is translated to "llvm" and "d" to "maintainer", but suggestions trigger for "codegen" and "user" respectively)

A more thorough refactor would stop using "strings-as-type" to make sure this kind of error doesn't happen, but it may be overkill for that kind of "script" program?

Tagging the setup command author: @jyn514
2020-10-07 00:16:01 +02:00
Alexander Koptelov
db46f43977 Add c as a shorthand check alternative for new options #77603 2020-10-06 22:05:11 +03:00
bors
9fdaeb393a Auto merge of #76356 - caass:hooks, r=jyn514
Add a command to install a git hook to automatically run `x.py test tidy --bless`

Some folks (such as myself) would probably find a lot of convenience in a pre-commit hook that automatically runs tidy before committing, to avoid burning CI time learning that your commit wasn't tidy.

I'm absolutely positive I have missed some stuff. I basically just got this to where you can run `./x.py run install-git-hook` and then clicked the commit button. Please let me know what else you'd like me to add before this can be merged!

[rustc-dev-guide companion PR](https://github.com/rust-lang/rustc-dev-guide/pull/848)
2020-10-06 14:51:51 +00:00
Antoine Martin
d67a7e6cfc Use String type for Profile parse error 2020-10-06 16:40:30 +02:00
Antoine Martin
3afc004845 Show available profiles on error 2020-10-06 16:40:30 +02:00
Antoine Martin
d3d3397121 Use Profile enum for x.py setup 2020-10-06 16:40:30 +02:00
Antoine Martin
6e06388a7f Fix suggestions for x.py setup 2020-10-06 15:53:58 +02:00
Yuki Okushi
54d72d73e9
Rollup merge of #77558 - thomcc:defaults-toml-extension, r=jyn514
Rename bootstrap/defaults/{config.toml.PROFILE => config.PROFILE.toml}

This allows these files to have okay syntax highlighting in editors, and helps avoid nagging from editors which want to suggest that I install a plugin for `*.library` files to view the `config.toml.library` or whatever.

It's a very minor change.

r?@jyn514
2020-10-06 16:26:07 +09:00
Cassandra Fridkin
0845627f73
Make changes based on @jyn514's comments 2020-10-05 22:00:43 -04:00
Cassandra Fridkin
d585c96eaf
Add install_git_hook_maybe to setup.rs 2020-10-05 20:22:11 -04:00
Cassandra Fridkin
f53d436638
Remove the rust stuff and just make it a simple shell script
It's ok, now I'm writing enough Rust that i'm able to get my fix elsewhere
2020-10-05 18:59:47 -04:00
Cassandra Fridkin
44af74f6dd
Merge branch 'master' into hooks 2020-10-05 18:49:51 -04:00
Thom Chiovoloni
5388eb41e9 Add changelog entry mentioning the renamed profile files 2020-10-04 18:39:59 -07:00
Thom Chiovoloni
afe83d4c1c Rename bootstrap/defaults/{config.toml.PROFILE => config.PROFILE.toml} 2020-10-04 18:35:16 -07:00
Dylan DPC
fffeaa7b83
Rollup merge of #77407 - pietroalbini:less-build-manifest, r=Mark-Simulacrum
Improve build-manifest to work with the improved promote-release

This PR makes some changes to build-manifest to have it work better with the other improvements I'm making to [promote-release](https://github.com/rust-lang/promote-release).

A new way to invoke the tool was added: `./x.py run src/tools/build-manifest`. The new invocation disables the generation of `.sha256` files and the generation of GPG signatures, as those steps are not tied to the Rust version we're building the manifest of: handling them in `promote-release` will improve the maintenability of our release process. Invocations through the old command (`./x.py dist hash-and-sign`) are referred inside the source code as "legacy". The new invocation also enables internal parallelism, disabled on legacy to avoid overloading our old server.

Improvements were also made on how the checksums included in the manifest are generated:

* The manifest is first generated with placeholder checksums, and then a function walks through the manifes and calculates only the needed hashes. Before this PR, all the hashes were calculated beforehand, including the hashes of unused files.
* Calculating the hashes is now done in parallel with rayon, to better utilize all the available disk bandwidth.
* The `sha2` crate is now used instead of the `sha256sum` CLI tool: this avoids the overhead of calling another process, but more importantly enables hardware acceleration whenever available (the `sha256sum` CLI tool doesn't support it at all).

r? @Mark-Simulacrum
This PR is best reviewed commit-by-commit.
2020-10-05 02:29:33 +02:00
Yuki Okushi
69f2cf5ad9
Rollup merge of #77473 - Mark-Simulacrum:check-limited, r=ecstatic-morse
Make --all-targets in x.py check opt-in

In particular due to #76822, making this the default is currently suboptimal.

r? @ecstatic-morse
2020-10-04 11:45:10 +09:00
ecstatic-morse
eaa0186662
Add quotes around command in CHANGELOG 2020-10-03 09:29:50 -07:00
Mark Rousskov
f2961638c8 Place all-targets checking behind a flag
This matches Cargo behavior and avoids the (somewhat expensive) double checking,
as well as the unfortunate duplicate error messages (#76822,
rust-lang/cargo#5128).
2020-10-03 09:53:13 -04:00