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>
|
||||
|
||||
### 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
|
||||
|
||||
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).
|
||||
|
||||
```bash
|
||||
> rustup toolchain link stage1 build/<host-triple>/stage1
|
||||
> rustup toolchain link stage2 build/<host-triple>/stage2
|
||||
rustup toolchain link stage1 build/<host-triple>/stage1
|
||||
rustup toolchain link stage2 build/<host-triple>/stage2
|
||||
```
|
||||
|
||||
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.
|
||||
|
||||
[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
|
||||
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