issue-130 copy contents related x.py from rust-forge
This commit is contained in:
parent
8f85624f2b
commit
df96e80e0d
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Build distribution artifacts
|
||||||
|
|
||||||
|
You might want to build and package up the compiler for distribution.
|
||||||
|
You’ll want to run this command to do it:
|
||||||
|
|
||||||
|
`./x.py dist`
|
||||||
|
|
||||||
|
Other Flags
|
||||||
|
|
||||||
|
The same flags from build are available here.
|
||||||
|
You might want to consider adding on the -j flag for faster builds
|
||||||
|
when building a distribution artifact.
|
||||||
|
|
||||||
|
```
|
||||||
|
-j, --jobs JOBS number of jobs to run in parallel
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
# Install distribution artifacts
|
||||||
|
|
||||||
|
If you’ve built a distribution artifact you might want to install it and
|
||||||
|
test that it works on your target system. You’ll want to run this command:
|
||||||
|
|
||||||
|
`./x.py install`
|
||||||
|
|
||||||
|
Other Flags
|
||||||
|
The same flags from build are available
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Benchmarking rustc
|
||||||
|
|
||||||
|
This one is a easier compared to the others.
|
||||||
|
All you’re doing is running benchmarks of the compiler itself
|
||||||
|
so it’ll build it and run the one set of benchmarks available to it.
|
||||||
|
The command is:
|
||||||
|
|
||||||
|
`./x.py bench`
|
||||||
|
|
||||||
|
Benchmarking lacks `--no-fail-fast` flag that `test` command has.
|
||||||
|
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
# Documenting rustc
|
||||||
|
|
||||||
|
You might want to build documentation of the various components
|
||||||
|
available like the standard library. There’s two ways to go about this.
|
||||||
|
You can run rustdoc directly on the file to make sure the HTML is
|
||||||
|
correct which is fast or you can build the documentation as part of the
|
||||||
|
build process through x.py. Both are viable methods since documentation
|
||||||
|
is more about the content.
|
||||||
|
|
||||||
|
## Document everything
|
||||||
|
|
||||||
|
`./x.py doc`
|
||||||
|
|
||||||
|
## If you want to avoid the whole Stage 2 build
|
||||||
|
|
||||||
|
`./x.py doc --stage 1`
|
||||||
|
|
||||||
|
First the compiler and rustdoc get built to make sure everything is okay
|
||||||
|
and then it documents the files.
|
||||||
|
|
||||||
|
## Document specific components
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./x.py doc src/doc/book
|
||||||
|
./x.py doc src/doc/nomicon
|
||||||
|
./x.py doc src/doc/book src/libstd
|
||||||
|
```
|
||||||
|
|
||||||
|
Much like individual tests or building certain components you can build only
|
||||||
|
the documentation you want.
|
||||||
|
|
||||||
|
## Document internal rustc items
|
||||||
|
By default rustc does not build the compiler docs for its internal items.
|
||||||
|
Mostly because this is useless for the average user. However, you might need
|
||||||
|
to have it available so you can understand the types. Here’s how you can
|
||||||
|
compile it yourself. From the top level directory where x.py is located run:
|
||||||
|
|
||||||
|
cp config.toml.example config.toml
|
||||||
|
|
||||||
|
Next open up config.toml and make sure these two lines are set to true:
|
||||||
|
|
||||||
|
docs = true
|
||||||
|
compiler-docs = true
|
||||||
|
When you want to build the compiler docs as well run this command:
|
||||||
|
|
||||||
|
`./x.py doc`
|
||||||
|
|
||||||
|
This will see that the docs and compiler-docs options are set to true
|
||||||
|
and build the normally hidden compiler docs!
|
||||||
|
|
@ -134,6 +134,44 @@ build`) has quite a few more steps:
|
||||||
|
|
||||||
<a name=toolchain></a>
|
<a name=toolchain></a>
|
||||||
|
|
||||||
|
### Build different stages
|
||||||
|
|
||||||
|
`./x.py build --stage 0`
|
||||||
|
|
||||||
|
# Stage 1 is typically enough to test out all of your changes
|
||||||
|
# to the compiler
|
||||||
|
|
||||||
|
`./x.py build --stage 1`
|
||||||
|
|
||||||
|
# Equivalent to ./x.py build
|
||||||
|
|
||||||
|
`./x.py build --stage 2`
|
||||||
|
|
||||||
|
You can pass the --stage flag with what stage you want to build to.
|
||||||
|
It is recommended that you build to Stage 1 as this is enough to know
|
||||||
|
your changes can successfully compile and should let you run tests
|
||||||
|
with your changes.
|
||||||
|
|
||||||
|
### Build specific components
|
||||||
|
|
||||||
|
Build only the libcore library
|
||||||
|
|
||||||
|
`./x.py build src/libcore`
|
||||||
|
|
||||||
|
Build the libcore and libproc_macro library only
|
||||||
|
|
||||||
|
`./x.py build src/libcore src/libproc_macro`
|
||||||
|
|
||||||
|
Build only libcore up to Stage 1
|
||||||
|
|
||||||
|
`./x.py build src/libcore --stage 1`
|
||||||
|
|
||||||
|
Sometimes you might just want to test if the part you’re working on can
|
||||||
|
compile. Using these commands you can test that it compiles before doing
|
||||||
|
a bigger build to make sure it works with the compiler. As shown before
|
||||||
|
you can also pass flags at the end such as --stage.
|
||||||
|
|
||||||
|
|
||||||
### Creating a rustup toolchain
|
### Creating a rustup toolchain
|
||||||
|
|
||||||
Once you have successfully built rustc, you will have created a bunch
|
Once you have successfully built rustc, you will have created a bunch
|
||||||
|
|
@ -145,8 +183,8 @@ you will likely need to build at some point; for example, if you want
|
||||||
to run the entire test suite).
|
to run the entire test suite).
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
> rustup toolchain link stage1 build/<host-triple>/stage1
|
rustup toolchain link stage1 build/<host-triple>/stage1
|
||||||
> rustup toolchain link stage2 build/<host-triple>/stage2
|
rustup toolchain link stage2 build/<host-triple>/stage2
|
||||||
```
|
```
|
||||||
|
|
||||||
The `<host-triple>` would typically be one of the following:
|
The `<host-triple>` would typically be one of the following:
|
||||||
|
|
@ -263,3 +301,12 @@ This allows you to do "jump-to-def" with whatever functions were around when
|
||||||
you last built, which is ridiculously useful.
|
you last built, which is ridiculously useful.
|
||||||
|
|
||||||
[etags]: https://github.com/nikomatsakis/rust-etags
|
[etags]: https://github.com/nikomatsakis/rust-etags
|
||||||
|
|
||||||
|
### Cleaning out build directories
|
||||||
|
|
||||||
|
Sometimes you need to start fresh, but this is normally not the case.
|
||||||
|
If you need to run this then rustbuild is most likely not acting right and
|
||||||
|
you should file a bug as to what is going wrong. If you do need to clean
|
||||||
|
everything up then you only need to run one command!
|
||||||
|
|
||||||
|
`./x.py clean`
|
||||||
|
|
@ -93,3 +93,26 @@ This is much faster, but doesn't always work. For example, some tests
|
||||||
include directives that specify specific compiler flags, or which rely
|
include directives that specify specific compiler flags, or which rely
|
||||||
on other crates, and they may not run the same without those options.
|
on other crates, and they may not run the same without those options.
|
||||||
|
|
||||||
|
### Run specific tests
|
||||||
|
|
||||||
|
# Run only the tidy script
|
||||||
|
```bash
|
||||||
|
> ./x.py test src/tools/tidy
|
||||||
|
```
|
||||||
|
# Run tests on the standard library
|
||||||
|
```bash
|
||||||
|
> ./x.py test src/libstd
|
||||||
|
```
|
||||||
|
|
||||||
|
# Run tests on the standard library and run the tidy script
|
||||||
|
```bash
|
||||||
|
> ./x.py test src/libstd src/tools/tidy
|
||||||
|
```
|
||||||
|
|
||||||
|
# Run tests on the standard library using a stage 1 compiler
|
||||||
|
```bash
|
||||||
|
> ./x.py test src/libstd --stage 1
|
||||||
|
```
|
||||||
|
|
||||||
|
By listing which test suites you want to run you avoid having to run tests for
|
||||||
|
components you did not change at all.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
# what is x.py?
|
||||||
|
|
||||||
|
x.py is the script used to orchestrate the tooling in the rustc repository.
|
||||||
|
It is the script that can build docs, run tests, and compile rustc.
|
||||||
|
It is the now preferred way to build rustc and it replaces the old makefiles
|
||||||
|
from before. Below are the different ways to utilize x.py in order to
|
||||||
|
effectively deal with the repo for various common tasks.
|
||||||
|
|
||||||
|
### Build Flags
|
||||||
|
|
||||||
|
There are other flags you can pass to the build portion of x.py that can be
|
||||||
|
beneficial to cutting down compile times or fitting other things you might
|
||||||
|
need to change. They are:
|
||||||
|
|
||||||
|
```
|
||||||
|
Options:
|
||||||
|
-v, --verbose use verbose output (-vv for very verbose)
|
||||||
|
-i, --incremental use incremental compilation
|
||||||
|
--config FILE TOML configuration file for build
|
||||||
|
--build BUILD build target of the stage0 compiler
|
||||||
|
--host HOST host targets to build
|
||||||
|
--target TARGET target targets to build
|
||||||
|
--on-fail CMD command to run on failure
|
||||||
|
--stage N stage to build
|
||||||
|
--keep-stage N stage to keep without recompiling
|
||||||
|
--src DIR path to the root of the rust checkout
|
||||||
|
-j, --jobs JOBS number of jobs to run in parallel
|
||||||
|
-h, --help print this help message
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that the options --incremental, --keep-stage 0 and --jobs JOBS can be
|
||||||
|
used in tandem with --stage to help reduce build times significantly by
|
||||||
|
reusing already built components, reusing the first bootstrapped stage, and
|
||||||
|
running compilation in parallel. To test changes you could run something like:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./x.py build --stage 1 --keep-stage 0 -j 4 -i
|
||||||
|
```
|
||||||
|
|
||||||
|
Please follow the links to build, document, test, benchmark and install
|
||||||
|
distribution
|
||||||
|
artifacts for rustc respectively.
|
||||||
Loading…
Reference in New Issue