Change `x.py` into `x`, add explanation for `x`
This commit is contained in:
parent
a04ad82e3c
commit
e2487ebdc4
|
|
@ -107,7 +107,7 @@ to be identical to before, unless something has broken.
|
||||||
|
|
||||||
### Building the stages
|
### Building the stages
|
||||||
|
|
||||||
`x.py` tries to be helpful and pick the stage you most likely meant for each subcommand.
|
`x` tries to be helpful and pick the stage you most likely meant for each subcommand.
|
||||||
These defaults are as follows:
|
These defaults are as follows:
|
||||||
|
|
||||||
- `check`: `--stage 0`
|
- `check`: `--stage 0`
|
||||||
|
|
@ -152,7 +152,7 @@ bootstrapping the compiler.
|
||||||
|
|
||||||
This is a detailed look into the separate bootstrap stages.
|
This is a detailed look into the separate bootstrap stages.
|
||||||
|
|
||||||
The convention `x.py` uses is that:
|
The convention `x` uses is that:
|
||||||
|
|
||||||
- A `--stage N` flag means to run the stage N compiler (`stageN/rustc`).
|
- A `--stage N` flag means to run the stage N compiler (`stageN/rustc`).
|
||||||
- A "stage N artifact" is a build artifact that is _produced_ by the stage N compiler.
|
- A "stage N artifact" is a build artifact that is _produced_ by the stage N compiler.
|
||||||
|
|
@ -161,7 +161,7 @@ The convention `x.py` uses is that:
|
||||||
|
|
||||||
#### Build artifacts
|
#### Build artifacts
|
||||||
|
|
||||||
Anything you can build with `x.py` is a _build artifact_.
|
Anything you can build with `x` is a _build artifact_.
|
||||||
Build artifacts include, but are not limited to:
|
Build artifacts include, but are not limited to:
|
||||||
|
|
||||||
- binaries, like `stage0-rustc/rustc-main`
|
- binaries, like `stage0-rustc/rustc-main`
|
||||||
|
|
@ -243,7 +243,7 @@ artifacts into the appropriate place, skipping the cargo invocation.
|
||||||
For instance, you might want to build an ARM version of rustc using an x86 machine.
|
For instance, you might want to build an ARM version of rustc using an x86 machine.
|
||||||
Building stage2 `std` is different when you are cross-compiling.
|
Building stage2 `std` is different when you are cross-compiling.
|
||||||
|
|
||||||
This is because `x.py` uses a trick: if `HOST` and `TARGET` are the same,
|
This is because `x` uses a trick: if `HOST` and `TARGET` are the same,
|
||||||
it will reuse stage1 `std` for stage2! This is sound because stage1 `std`
|
it will reuse stage1 `std` for stage2! This is sound because stage1 `std`
|
||||||
was compiled with the stage1 compiler, i.e. a compiler using the source code
|
was compiled with the stage1 compiler, i.e. a compiler using the source code
|
||||||
you currently have checked out. So it should be identical (and therefore ABI-compatible)
|
you currently have checked out. So it should be identical (and therefore ABI-compatible)
|
||||||
|
|
@ -362,7 +362,7 @@ You can find more discussion about sysroots in:
|
||||||
|
|
||||||
## Passing flags to commands invoked by `bootstrap`
|
## Passing flags to commands invoked by `bootstrap`
|
||||||
|
|
||||||
`x.py` allows you to pass stage-specific flags to `rustc` and `cargo` when bootstrapping.
|
`x` allows you to pass stage-specific flags to `rustc` and `cargo` when bootstrapping.
|
||||||
The `RUSTFLAGS_BOOTSTRAP` environment variable is passed as `RUSTFLAGS` to the bootstrap stage
|
The `RUSTFLAGS_BOOTSTRAP` environment variable is passed as `RUSTFLAGS` to the bootstrap stage
|
||||||
(stage0), and `RUSTFLAGS_NOT_BOOTSTRAP` is passed when building artifacts for later stages.
|
(stage0), and `RUSTFLAGS_NOT_BOOTSTRAP` is passed when building artifacts for later stages.
|
||||||
`RUSTFLAGS` will work, but also affects the build of `bootstrap` itself, so it will be rare to want
|
`RUSTFLAGS` will work, but also affects the build of `bootstrap` itself, so it will be rare to want
|
||||||
|
|
@ -395,7 +395,7 @@ If `./stageN/bin/rustc` gives an error about environment variables, that
|
||||||
usually means something is quite wrong -- or you're trying to compile e.g.
|
usually means something is quite wrong -- or you're trying to compile e.g.
|
||||||
`rustc` or `std` or something that depends on environment variables. In
|
`rustc` or `std` or something that depends on environment variables. In
|
||||||
the unlikely case that you actually need to invoke rustc in such a situation,
|
the unlikely case that you actually need to invoke rustc in such a situation,
|
||||||
you can tell the bootstrap shim to print all env variables by adding `-vvv` to your `x.py` command.
|
you can tell the bootstrap shim to print all env variables by adding `-vvv` to your `x` command.
|
||||||
|
|
||||||
Finally, bootstrap makes use of the [cc-rs crate] which has [its own
|
Finally, bootstrap makes use of the [cc-rs crate] which has [its own
|
||||||
method][env-vars] of configuring C compilers and C flags via environment
|
method][env-vars] of configuring C compilers and C flags via environment
|
||||||
|
|
@ -408,7 +408,7 @@ variables.
|
||||||
|
|
||||||
In this part, we will investigate the build command's stdout in an action
|
In this part, we will investigate the build command's stdout in an action
|
||||||
(similar, but more detailed and complete documentation compare to topic above).
|
(similar, but more detailed and complete documentation compare to topic above).
|
||||||
When you execute `x.py build --dry-run` command, the build output will be something
|
When you execute `x build --dry-run` command, the build output will be something
|
||||||
like the following:
|
like the following:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ like the standard library (std) or the compiler (rustc).
|
||||||
- Document internal rustc items
|
- Document internal rustc items
|
||||||
|
|
||||||
Compiler documentation is not built by default.
|
Compiler documentation is not built by default.
|
||||||
To create it by default with `x.py doc`, modify `config.toml`:
|
To create it by default with `x doc`, modify `config.toml`:
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
[build]
|
[build]
|
||||||
|
|
|
||||||
|
|
@ -108,6 +108,29 @@ of a checkout. It also looks up the appropriate version of `python` to use.
|
||||||
|
|
||||||
You can install it with `cargo install --path src/tools/x`.
|
You can install it with `cargo install --path src/tools/x`.
|
||||||
|
|
||||||
|
Using `x` rather than `x.py` is recommended as:
|
||||||
|
|
||||||
|
> `./x` is the most likely to work on every system (on Unix it runs the shell script
|
||||||
|
> that does python version detection, on Windows it will probably run the
|
||||||
|
> powershell script - certainly less likely to break than `./x.py` which often just
|
||||||
|
> opens the file in an editor).[^1]
|
||||||
|
|
||||||
|
Notice that this is not absolute, for instance, using Nushell in VSCode on Win10,
|
||||||
|
typing `x` or `./x` still open the `x.py` in editor rather invoke the program :)
|
||||||
|
|
||||||
|
In the rest of documents, we use `x` to represent the straightly usage of `x.py`, which
|
||||||
|
means the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./x check
|
||||||
|
```
|
||||||
|
|
||||||
|
could been replaced by:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./x.py check
|
||||||
|
```
|
||||||
|
|
||||||
## Create a `config.toml`
|
## Create a `config.toml`
|
||||||
|
|
||||||
To start, run `./x setup` and select the `compiler` defaults. This will do some initialization
|
To start, run `./x setup` and select the `compiler` defaults. This will do some initialization
|
||||||
|
|
@ -123,9 +146,9 @@ If you have already built `rustc` and you change settings related to LLVM, then
|
||||||
execute `rm -rf build` for subsequent configuration changes to take effect. Note that `./x
|
execute `rm -rf build` for subsequent configuration changes to take effect. Note that `./x
|
||||||
clean` will not cause a rebuild of LLVM.
|
clean` will not cause a rebuild of LLVM.
|
||||||
|
|
||||||
## Common `x.py` commands
|
## Common `x` commands
|
||||||
|
|
||||||
Here are the basic invocations of the `x.py` commands most commonly used when
|
Here are the basic invocations of the `x` commands most commonly used when
|
||||||
working on `rustc`, `std`, `rustdoc`, and other tools.
|
working on `rustc`, `std`, `rustdoc`, and other tools.
|
||||||
|
|
||||||
| Command | When to use it |
|
| Command | When to use it |
|
||||||
|
|
@ -141,9 +164,9 @@ serious development work. In particular, `./x build` and `./x test`
|
||||||
provide many ways to compile or test a subset of the code, which can save a lot
|
provide many ways to compile or test a subset of the code, which can save a lot
|
||||||
of time.
|
of time.
|
||||||
|
|
||||||
Also, note that `x.py` supports all kinds of path suffixes for `compiler`, `library`,
|
Also, note that `x` supports all kinds of path suffixes for `compiler`, `library`,
|
||||||
and `src/tools` directories. So, you can simply run `x.py test tidy` instead of
|
and `src/tools` directories. So, you can simply run `x test tidy` instead of
|
||||||
`x.py test src/tools/tidy`. Or, `x.py build std` instead of `x.py build library/std`.
|
`x test src/tools/tidy`. Or, `x build std` instead of `x build library/std`.
|
||||||
|
|
||||||
[rust-analyzer]: suggested.html#configuring-rust-analyzer-for-rustc
|
[rust-analyzer]: suggested.html#configuring-rust-analyzer-for-rustc
|
||||||
|
|
||||||
|
|
@ -156,7 +179,7 @@ Note that building will require a relatively large amount of storage space.
|
||||||
You may want to have upwards of 10 or 15 gigabytes available to build the compiler.
|
You may want to have upwards of 10 or 15 gigabytes available to build the compiler.
|
||||||
|
|
||||||
Once you've created a `config.toml`, you are now ready to run
|
Once you've created a `config.toml`, you are now ready to run
|
||||||
`x.py`. There are a lot of options here, but let's start with what is
|
`x`. There are a lot of options here, but let's start with what is
|
||||||
probably the best "go to" command for building a local compiler:
|
probably the best "go to" command for building a local compiler:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
@ -206,7 +229,7 @@ Instead, you can just build using the bootstrap compiler.
|
||||||
./x build --stage 0 library
|
./x build --stage 0 library
|
||||||
```
|
```
|
||||||
|
|
||||||
If you choose the `library` profile when running `x.py setup`, you can omit `--stage 0` (it's the
|
If you choose the `library` profile when running `x setup`, you can omit `--stage 0` (it's the
|
||||||
default).
|
default).
|
||||||
|
|
||||||
## Creating a rustup toolchain
|
## Creating a rustup toolchain
|
||||||
|
|
@ -241,7 +264,7 @@ LLVM version: 11.0
|
||||||
```
|
```
|
||||||
|
|
||||||
The rustup toolchain points to the specified toolchain compiled in your `build` directory,
|
The rustup toolchain points to the specified toolchain compiled in your `build` directory,
|
||||||
so the rustup toolchain will be updated whenever `x.py build` or `x.py test` are run for
|
so the rustup toolchain will be updated whenever `x build` or `x test` are run for
|
||||||
that toolchain/stage.
|
that toolchain/stage.
|
||||||
|
|
||||||
**Note:** the toolchain we've built does not include `cargo`. In this case, `rustup` will
|
**Note:** the toolchain we've built does not include `cargo`. In this case, `rustup` will
|
||||||
|
|
@ -262,7 +285,7 @@ want to build this component:
|
||||||
## Building targets for cross-compilation
|
## Building targets for cross-compilation
|
||||||
|
|
||||||
To produce a compiler that can cross-compile for other targets,
|
To produce a compiler that can cross-compile for other targets,
|
||||||
pass any number of `target` flags to `x.py build`.
|
pass any number of `target` flags to `x build`.
|
||||||
For example, if your host platform is `x86_64-unknown-linux-gnu`
|
For example, if your host platform is `x86_64-unknown-linux-gnu`
|
||||||
and your cross-compilation target is `wasm32-wasi`, you can build with:
|
and your cross-compilation target is `wasm32-wasi`, you can build with:
|
||||||
|
|
||||||
|
|
@ -274,7 +297,7 @@ Note that if you want the resulting compiler to be able to build crates that
|
||||||
involve proc macros or build scripts, you must be sure to explicitly build target support for the
|
involve proc macros or build scripts, you must be sure to explicitly build target support for the
|
||||||
host platform (in this case, `x86_64-unknown-linux-gnu`).
|
host platform (in this case, `x86_64-unknown-linux-gnu`).
|
||||||
|
|
||||||
If you want to always build for other targets without needing to pass flags to `x.py build`,
|
If you want to always build for other targets without needing to pass flags to `x build`,
|
||||||
you can configure this in the `[build]` section of your `config.toml` like so:
|
you can configure this in the `[build]` section of your `config.toml` like so:
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
|
|
@ -303,9 +326,9 @@ then once you have built your compiler you will be able to use it to cross-compi
|
||||||
cargo +stage1 build --target wasm32-wasi
|
cargo +stage1 build --target wasm32-wasi
|
||||||
```
|
```
|
||||||
|
|
||||||
## Other `x.py` commands
|
## Other `x` commands
|
||||||
|
|
||||||
Here are a few other useful `x.py` commands. We'll cover some of them in detail
|
Here are a few other useful `x` commands. We'll cover some of them in detail
|
||||||
in other sections:
|
in other sections:
|
||||||
|
|
||||||
- Building things:
|
- Building things:
|
||||||
|
|
@ -335,3 +358,5 @@ everything up then you only need to run one command!
|
||||||
|
|
||||||
`rm -rf build` works too, but then you have to rebuild LLVM, which can take
|
`rm -rf build` works too, but then you have to rebuild LLVM, which can take
|
||||||
a long time even on fast computers.
|
a long time even on fast computers.
|
||||||
|
|
||||||
|
[^1]: issue[#1707](https://github.com/rust-lang/rustc-dev-guide/issues/1707)
|
||||||
|
|
|
||||||
|
|
@ -26,15 +26,15 @@ You can also install the hook as a step of running `./x setup`!
|
||||||
`rust-analyzer` can help you check and format your code whenever you save
|
`rust-analyzer` can help you check and format your code whenever you save
|
||||||
a file. By default, `rust-analyzer` runs the `cargo check` and `rustfmt`
|
a file. By default, `rust-analyzer` runs the `cargo check` and `rustfmt`
|
||||||
commands, but you can override these commands to use more adapted versions
|
commands, but you can override these commands to use more adapted versions
|
||||||
of these tools when hacking on `rustc`. For example, `x.py setup vscode` will prompt
|
of these tools when hacking on `rustc`. For example, `x setup vscode` will prompt
|
||||||
you to create a `.vscode/settings.json` file which will configure Visual Studio code.
|
you to create a `.vscode/settings.json` file which will configure Visual Studio code.
|
||||||
This will ask `rust-analyzer` to use `./x check` to check the sources, and the
|
This will ask `rust-analyzer` to use `./x check` to check the sources, and the
|
||||||
stage 0 rustfmt to format them.
|
stage 0 rustfmt to format them.
|
||||||
The recommended `rust-analyzer` settings live at [`src/etc/rust_analyzer_settings.json`].
|
The recommended `rust-analyzer` settings live at [`src/etc/rust_analyzer_settings.json`].
|
||||||
|
|
||||||
If you have enough free disk space and you would like to be able to run `x.py` commands while
|
If you have enough free disk space and you would like to be able to run `x` commands while
|
||||||
rust-analyzer runs in the background, you can also add `--build-dir build-rust-analyzer` to the
|
rust-analyzer runs in the background, you can also add `--build-dir build-rust-analyzer` to the
|
||||||
`overrideCommand` to avoid x.py locking.
|
`overrideCommand` to avoid x locking.
|
||||||
|
|
||||||
If you're running `coc.nvim`, you can use `:CocLocalConfig` to create a
|
If you're running `coc.nvim`, you can use `:CocLocalConfig` to create a
|
||||||
`.vim/coc-settings.json` and copy the settings from [`src/etc/rust_analyzer_settings.json`].
|
`.vim/coc-settings.json` and copy the settings from [`src/etc/rust_analyzer_settings.json`].
|
||||||
|
|
@ -73,7 +73,7 @@ Rust-Analyzer to already be configured with Neovim. Steps for this can be
|
||||||
[found here](https://rust-analyzer.github.io/manual.html#nvim-lsp).
|
[found here](https://rust-analyzer.github.io/manual.html#nvim-lsp).
|
||||||
|
|
||||||
1. First install the plugin. This can be done by following the steps in the README.
|
1. First install the plugin. This can be done by following the steps in the README.
|
||||||
2. Run `x.py setup`, which will have a prompt for it to create a `.vscode/settings.json` file.
|
2. Run `x setup`, which will have a prompt for it to create a `.vscode/settings.json` file.
|
||||||
`neoconf` is able to read and update Rust-Analyzer settings automatically when the project is
|
`neoconf` is able to read and update Rust-Analyzer settings automatically when the project is
|
||||||
opened when this file is detected.
|
opened when this file is detected.
|
||||||
|
|
||||||
|
|
@ -141,11 +141,11 @@ directories you have [setup a worktree for]. You may need to use the pinned
|
||||||
nightly version from `src/stage0.json`, but often the normal `nightly` channel
|
nightly version from `src/stage0.json`, but often the normal `nightly` channel
|
||||||
will work.
|
will work.
|
||||||
|
|
||||||
**Note** see [the section on vscode] for how to configure it with this real rustfmt `x.py` uses,
|
**Note** see [the section on vscode] for how to configure it with this real rustfmt `x` uses,
|
||||||
and [the section on rustup] for how to setup `rustup` toolchain for your bootstrapped compiler
|
and [the section on rustup] for how to setup `rustup` toolchain for your bootstrapped compiler
|
||||||
|
|
||||||
**Note** This does _not_ allow you to build `rustc` with cargo directly. You
|
**Note** This does _not_ allow you to build `rustc` with cargo directly. You
|
||||||
still have to use `x.py` to work on the compiler or standard library, this just
|
still have to use `x` to work on the compiler or standard library, this just
|
||||||
lets you use `cargo fmt`.
|
lets you use `cargo fmt`.
|
||||||
|
|
||||||
[installing a nightly toolchain]: https://rust-lang.github.io/rustup/concepts/channels.html?highlight=nightl#working-with-nightly-rust
|
[installing a nightly toolchain]: https://rust-lang.github.io/rustup/concepts/channels.html?highlight=nightl#working-with-nightly-rust
|
||||||
|
|
|
||||||
|
|
@ -139,7 +139,7 @@ You might also notice conflicts in the web UI:
|
||||||

|

|
||||||
|
|
||||||
The most common cause is that you rebased after a change and ran `git add .` without first running
|
The most common cause is that you rebased after a change and ran `git add .` without first running
|
||||||
`x.py` to update the submodules. Alternatively, you might have run `cargo fmt` instead of `x fmt`
|
`x` to update the submodules. Alternatively, you might have run `cargo fmt` instead of `x fmt`
|
||||||
and modified files in a submodule, then committed the changes.
|
and modified files in a submodule, then committed the changes.
|
||||||
|
|
||||||
To fix it, do the following things:
|
To fix it, do the following things:
|
||||||
|
|
@ -248,7 +248,7 @@ out if you're using `download-ci-llvm`. To avoid having to keep fetching its hi
|
||||||
|
|
||||||
Note that, as of <!-- date-check --> Aug 2022,
|
Note that, as of <!-- date-check --> Aug 2022,
|
||||||
there is a [bug][#77620] if you use worktrees,
|
there is a [bug][#77620] if you use worktrees,
|
||||||
submodules, and `x.py` in a commit hook.
|
submodules, and `x` in a commit hook.
|
||||||
If you run into an error like the following,
|
If you run into an error like the following,
|
||||||
it's not anything you did wrong:
|
it's not anything you did wrong:
|
||||||
|
|
||||||
|
|
@ -314,7 +314,7 @@ Generally, resolving the conflict consists of two steps: First, fix the
|
||||||
particular conflict. Edit the file to make the changes you want and remove the
|
particular conflict. Edit the file to make the changes you want and remove the
|
||||||
`<<<<<<<`, `=======` and `>>>>>>>` lines in the process. Second, check the
|
`<<<<<<<`, `=======` and `>>>>>>>` lines in the process. Second, check the
|
||||||
surrounding code. If there was a conflict, its likely there are some logical
|
surrounding code. If there was a conflict, its likely there are some logical
|
||||||
errors lying around too! It's a good idea to run `x.py check` here to make sure
|
errors lying around too! It's a good idea to run `x check` here to make sure
|
||||||
there are no glaring errors.
|
there are no glaring errors.
|
||||||
|
|
||||||
Once you're all done fixing the conflicts, you need to stage the files that had
|
Once you're all done fixing the conflicts, you need to stage the files that had
|
||||||
|
|
@ -558,7 +558,7 @@ commit, which doesn't change unless modified manually. If you use `git checkout
|
||||||
in the `llvm-project` directory and go back to the `rust` directory, you can stage this
|
in the `llvm-project` directory and go back to the `rust` directory, you can stage this
|
||||||
change like any other, e.g. by running `git add src/llvm-project`. (Note that if
|
change like any other, e.g. by running `git add src/llvm-project`. (Note that if
|
||||||
you *don't* stage the change to commit, then you run the risk that running
|
you *don't* stage the change to commit, then you run the risk that running
|
||||||
`x.py` will just undo your change by switching back to the previous commit when
|
`x` will just undo your change by switching back to the previous commit when
|
||||||
it automatically "updates" the submodules.)
|
it automatically "updates" the submodules.)
|
||||||
|
|
||||||
This version selection is usually done by the maintainers of the project, and
|
This version selection is usually done by the maintainers of the project, and
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ extension in LLVM bitcode format.
|
||||||
Example usage:
|
Example usage:
|
||||||
```
|
```
|
||||||
cargo install cargo-llvm-lines
|
cargo install cargo-llvm-lines
|
||||||
# On a normal crate you could now run `cargo llvm-lines`, but `x.py` isn't normal :P
|
# On a normal crate you could now run `cargo llvm-lines`, but `x` isn't normal :P
|
||||||
|
|
||||||
# Do a clean before every run, to not mix in the results from previous runs.
|
# Do a clean before every run, to not mix in the results from previous runs.
|
||||||
./x clean
|
./x clean
|
||||||
|
|
|
||||||
|
|
@ -47,11 +47,11 @@ we'll need to build a stage 1 compiler and then a stage 2 compiler ourselves.
|
||||||
To do this, make sure you have set `debuginfo-level = 1` in your `config.toml` file. This tells
|
To do this, make sure you have set `debuginfo-level = 1` in your `config.toml` file. This tells
|
||||||
rustc to generate debug information which includes stack frames when bootstrapping.
|
rustc to generate debug information which includes stack frames when bootstrapping.
|
||||||
|
|
||||||
Now you can build the stage 1 compiler: `python x.py build --stage 1 -i library` or however
|
Now you can build the stage 1 compiler: `x build --stage 1 -i library` or however
|
||||||
else you want to build the stage 1 compiler.
|
else you want to build the stage 1 compiler.
|
||||||
|
|
||||||
Now that the stage 1 compiler is built, we can record the stage 2 build. Go back to WPR, click the
|
Now that the stage 1 compiler is built, we can record the stage 2 build. Go back to WPR, click the
|
||||||
"start" button and build the stage 2 compiler (e.g., `python x build --stage=2 -i library`).
|
"start" button and build the stage 2 compiler (e.g., `x build --stage=2 -i library`).
|
||||||
When this process finishes, stop the recording.
|
When this process finishes, stop the recording.
|
||||||
|
|
||||||
Click the Save button and once that process is complete, click the "Open in WPA" button which
|
Click the Save button and once that process is complete, click the "Open in WPA" button which
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ does is call the `main()` that's in this crate's `lib.rs`, though.)
|
||||||
|
|
||||||
## Cheat sheet
|
## Cheat sheet
|
||||||
|
|
||||||
* Run `./x setup tools` before getting started. This will configure `x.py`
|
* Run `./x setup tools` before getting started. This will configure `x`
|
||||||
with nice settings for developing rustdoc and other tools, including
|
with nice settings for developing rustdoc and other tools, including
|
||||||
downloading a copy of rustc rather than building it.
|
downloading a copy of rustc rather than building it.
|
||||||
* Use `./x check src/tools/rustdoc` to quickly check for compile errors.
|
* Use `./x check src/tools/rustdoc` to quickly check for compile errors.
|
||||||
|
|
|
||||||
|
|
@ -330,7 +330,7 @@ set a baseline for optimizations:
|
||||||
|
|
||||||
The test should be annotated with `// EMIT_MIR` comments that specify files that
|
The test should be annotated with `// EMIT_MIR` comments that specify files that
|
||||||
will contain the expected MIR output.
|
will contain the expected MIR output.
|
||||||
You can use `x.py test --bless` to create the initial expected files.
|
You can use `x test --bless` to create the initial expected files.
|
||||||
|
|
||||||
There are several forms the `EMIT_MIR` comment can take:
|
There are several forms the `EMIT_MIR` comment can take:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ The following header commands will check rustc build settings and target setting
|
||||||
(AddressSanitizer, hardware-assisted AddressSanitizer, LeakSanitizer,
|
(AddressSanitizer, hardware-assisted AddressSanitizer, LeakSanitizer,
|
||||||
MemorySanitizer or ThreadSanitizer respectively)
|
MemorySanitizer or ThreadSanitizer respectively)
|
||||||
* `needs-run-enabled` — ignores if it is a test that gets executed, and
|
* `needs-run-enabled` — ignores if it is a test that gets executed, and
|
||||||
running has been disabled. Running tests can be disabled with the `x.py test
|
running has been disabled. Running tests can be disabled with the `x test
|
||||||
--run=never` flag, or running on fuchsia.
|
--run=never` flag, or running on fuchsia.
|
||||||
* `needs-unwind` — ignores if the target does not support unwinding
|
* `needs-unwind` — ignores if the target does not support unwinding
|
||||||
* `needs-rust-lld` — ignores if the rust lld support is not enabled
|
* `needs-rust-lld` — ignores if the rust lld support is not enabled
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ The [Compiletest chapter][compiletest] goes into detail on how to use this tool.
|
||||||
The standard library and many of the compiler packages include typical Rust `#[test]`
|
The standard library and many of the compiler packages include typical Rust `#[test]`
|
||||||
unit tests, integration tests, and documentation tests.
|
unit tests, integration tests, and documentation tests.
|
||||||
You can pass a path to `x.py` to almost any package in the `library` or `compiler` directory,
|
You can pass a path to `x.py` to almost any package in the `library` or `compiler` directory,
|
||||||
and `x.py` will essentially run `cargo test` on that package.
|
and `x` will essentially run `cargo test` on that package.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<!-- toc -->
|
<!-- toc -->
|
||||||
|
|
||||||
You can run the tests using `x.py`. The most basic command – which
|
You can run the tests using `x`. The most basic command – which
|
||||||
you will almost never want to use! – is as follows:
|
you will almost never want to use! – is as follows:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
@ -122,7 +122,7 @@ But unfortunately, it's impossible. You should invoke following instead:
|
||||||
Another common thing that people want to do is to run an **individual
|
Another common thing that people want to do is to run an **individual
|
||||||
test**, often the test they are trying to fix. As mentioned earlier,
|
test**, often the test they are trying to fix. As mentioned earlier,
|
||||||
you may pass the full file path to achieve this, or alternatively one
|
you may pass the full file path to achieve this, or alternatively one
|
||||||
may invoke `x.py` with the `--test-args` option:
|
may invoke `x` with the `--test-args` option:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./x test tests/ui --test-args issue-1234
|
./x test tests/ui --test-args issue-1234
|
||||||
|
|
@ -247,7 +247,7 @@ pong
|
||||||
```
|
```
|
||||||
|
|
||||||
To run tests using the remote runner, set the `TEST_DEVICE_ADDR` environment
|
To run tests using the remote runner, set the `TEST_DEVICE_ADDR` environment
|
||||||
variable then use `x.py` as usual. For example, to run `ui` tests for a RISC-V
|
variable then use `x` as usual. For example, to run `ui` tests for a RISC-V
|
||||||
machine with the IP address `1.2.3.4` use
|
machine with the IP address `1.2.3.4` use
|
||||||
```sh
|
```sh
|
||||||
export TEST_DEVICE_ADDR="1.2.3.4:12345"
|
export TEST_DEVICE_ADDR="1.2.3.4:12345"
|
||||||
|
|
@ -273,7 +273,7 @@ run "/tmp/work/test1018/a"
|
||||||
[...]
|
[...]
|
||||||
```
|
```
|
||||||
|
|
||||||
Tests are built on the machine running `x.py` not on the remote machine. Tests
|
Tests are built on the machine running `x` not on the remote machine. Tests
|
||||||
which fail to build unexpectedly (or `ui` tests producing incorrect build
|
which fail to build unexpectedly (or `ui` tests producing incorrect build
|
||||||
output) may fail without ever running on the remote machine.
|
output) may fail without ever running on the remote machine.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -485,7 +485,7 @@ Then, it applies the suggestion and compares against `.fixed` (they must match).
|
||||||
Finally, the fixed source is compiled, and this compilation is required to succeed.
|
Finally, the fixed source is compiled, and this compilation is required to succeed.
|
||||||
|
|
||||||
Usually when creating a rustfix test you will generate the `.fixed` file
|
Usually when creating a rustfix test you will generate the `.fixed` file
|
||||||
automatically with the `x.py test --bless` option.
|
automatically with the `x test --bless` option.
|
||||||
|
|
||||||
The `run-rustfix` header will cause *all* suggestions to be applied, even
|
The `run-rustfix` header will cause *all* suggestions to be applied, even
|
||||||
if they are not [`MachineApplicable`](../diagnostics.md#suggestions).
|
if they are not [`MachineApplicable`](../diagnostics.md#suggestions).
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue