about summary refs log tree commit diff
path: root/src/bootstrap/config.toml.example
AgeCommit message (Collapse)AuthorLines
2017-08-11Move config.toml.example to the root dirSteven Fackler-332/+0
It's way more discoverable here.
2017-08-11Build support for no llvmbjorn3-0/+4
2017-08-02extend config.toml docRalf Jung-1/+1
2017-07-30rustbuild: Remove `--enable-llvm-clean-rebuild`Alex Crichton-5/+0
This was intended for bots back in the day where we'd persist caches of LLVM builds across runs, but nowadays we don't do that on any of the bots so this option is no longer necessary
2017-06-16Add target to use LLVM wasm backendThomas Lively-0/+8
The new target is wasm32-experimental-emscripten. Adds a new configuration option to opt in to building experimental LLVM backends such as the WebAssembly backend. The target name was chosen to be similar to the existing wasm32-unknown-emscripten target so that the build and tests would work with minimal other code changes. When/if the new target replaces the old target, simply renaming it should just work.
2017-06-04Merge branch 'profiling' of github.com:whitequark/rust into profilingMarco Castelluccio-0/+3
2017-05-22rustbuild: split Install out of Dist subcommandMarc-Antoine Perennou-0/+6
only create source tarball for the Dist subcommand mark install rule as default for Kind::Install split install-docs split install-std factor out empty_dir handling split install-cargo split install-analysis split install-src rework install-rustc properly handle cross-compilation setups for install use pkgname in install split plain source tarball generation from rust-src dist document src-tarball in config.toml.exmaple Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-05-20Auto merge of #42069 - QuietMisdreavus:low_pri, r=alexchrichtonbors-0/+4
Add an option to run rustbuild on low priority on Windows and Unix This is a resurrection of #40776, combining their Windows setup with an additional setup on Unix to set the program group's *nice*ness to +10 (low-but-not-lowest priority, mirroring the priority in the Windows setup) when the `low_priority` option is on.
2017-05-18update config name and description for low-priorityQuietMisdreavus-2/+3
2017-05-16Add an option to run rustbuild on low priorityJohn Kåre Alsaker-0/+3
This is a resurrection of #40776, combining their Windows setup with an additional setup on Unix to set the program group's niceness to +10 (low-but-not-lowest priority) when the `low_priority` option is on.
2017-05-16rustbuild: allow configuring sysconfdirMarc-Antoine Perennou-0/+4
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-05-16rustbuild: allow configuring bindirMarc-Antoine Perennou-3/+6
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-05-12config.toml.example: add note that optimize = false won't speed up a full ↵est31-0/+3
bootstrap
2017-05-01Add profiling support, through the rustc -Z profile flag.whitequark-0/+3
When -Z profile is passed, the GCDAProfiling LLVM pass is added to the pipeline, which uses debug information to instrument the IR. After compiling with -Z profile, the $(OUT_DIR)/$(CRATE_NAME).gcno file is created, containing initial profiling information. After running the program built, the $(OUT_DIR)/$(CRATE_NAME).gcda file is created, containing branch counters. The created *.gcno and *.gcda files can be processed using the "llvm-cov gcov" and "lcov" tools. The profiling data LLVM generates does not faithfully follow the GCC's format for *.gcno and *.gcda files, and so it will probably not work with other tools (such as gcov itself) that consume these files.
2017-04-26Enable building the LLVM Hexagon targetMichael Wu-1/+1
2017-04-10Remove --enable-save-analysis configure flagNick Cameron-3/+0
2017-03-20config.toml.example: nightlies.txt got removedest31-2/+2
Instead, stage0.txt got introduced. See also commit 02538d463a350f5c3658f7aabefca16eb599d31c
2017-03-15Auto merge of #40383 - ishitatsuyuki:easy-dist-analysis, r=alexcrichtonbors-0/+3
rustbuild: Make save-analysis an option This makes save-analysis an option independent from the release channel. The CI build scripts have been modified to enable the flag. *Merge with caution.* I haven't tested this, and this can cause nightly breakage.
2017-03-12Default llvm.clean-rebuild to falseVadim Petrochenkov-5/+3
2017-03-12rustbuild: Add option for enabling partial LLVM rebuildsVadim Petrochenkov-0/+7
2017-03-11rustbuild: Make save-analysis an optionTatsuyuki Ishi-0/+3
2017-03-09rustbuild: expose LLVM_PARALLEL_LINK_JOBSRobin Kruppe-0/+8
This allows limiting the number of linker jobs to avoid swapping when linking LLVM with debug info.
2017-03-03rustbuild: Add support for compiling CargoAlex Crichton-0/+5
This commit adds support to rustbuild for compiling Cargo as part of the release process. Previously rustbuild would simply download a Cargo snapshot and repackage it. With this change we should be able to turn off artifacts from the rust-lang/cargo repository and purely rely on the artifacts Cargo produces here. The infrastructure added here is intended to be extensible to other components, such as the RLS. It won't exactly be a one-line addition, but the addition of Cargo didn't require too much hooplah anyway. The process for release Cargo will now look like: * The rust-lang/rust repository has a Cargo submodule which is used to build a Cargo to pair with the rust-lang/rust release * Periodically we'll update the cargo submodule as necessary on rust-lang/rust's master branch * When branching beta we'll create a new branch of Cargo (as we do today), and the first commit to the beta branch will be to update the Cargo submodule to this exact revision. * When branching stable, we'll ensure that the Cargo submodule is updated and then make a stable release. Backports to Cargo will look like: * Send a PR to cargo's master branch * Send a PR to cargo's release branch (e.g. rust-1.16.0) * Send a PR to rust-lang/rust's beta branch updating the submodule * Eventually send a PR to rust-lang/rust's master branch updating the submodule For reference, the process to add a new component to the rust-lang/rust release would look like: * Add `$foo` as a submodule in `src/tools` * Add a `tool-$foo` step which compiles `$foo` with the specified compiler, likely mirroring what Cargo does. * Add a `dist-$foo` step which uses `src/tools/$foo` and the `tool-$foo` output to create a rust-installer package for `$foo` likely mirroring what Cargo does. * Update the `dist-extended` step with a new dependency on `dist-$foo` * Update `src/tools/build-manifest` for the new component.
2017-02-14Automatically vendor Cargo deps when building the source tarballs.Eduard-Mihai Burtescu-0/+4
2017-02-09Merge branch 'master' of git://github.com/rust-lang/rustMarc-Antoine Perennou-0/+3
* 'master' of git://github.com/rust-lang/rust: (70 commits) sanitizer-dylib: only run where std for x86_64-linux is available travis: Fix build order of dist-x86-linux fix the sanitizer-dylib test on non x86_64 linux hosts dist-x86-linux: install newer kernel headers enable sanitizers on build job that tests x86_64 linux enable sanitizers on x86_64-linux releases use helper function in the rebuild logic of the rustc_*san crates build/test the sanitizers only when --enable-sanitizers is used sanitizer support Add missing urls on join_paths Add test for #27433 Add more examples, get everything passing at last. Remove some leftover makefiles. Add more test for rustdoc --test Rename manifest_version to manifest-version reference: clarify #[cfg] section Bump stable release date rustbuild: Clean build/dist on `make clean` Add missing urls for current_dir review nits ...
2017-02-08build/test the sanitizers only when --enable-sanitizers is usedJorge Aparicio-0/+3
2017-02-06rustbuild: add verbose to config.toml.exampleMarc-Antoine Perennou-0/+3
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-01-25rustbuild: Add manifest generation in-treeAlex Crichton-0/+30
This commit adds a new tool, `build-manifest`, which is used to generate a distribution manifest of all produced artifacts. This tool is intended to replace the `build-rust-manifest.py` script that's currently located on the buildmaster. The intention is that we'll have a builder which periodically: * Downloads all artifacts for a commit * Runs `./x.py dist hash-and-sign`. This will generate `sha256` and `asc` files as well as TOML manifests. * Upload all generated hashes and manifests to the directory the artifacts came from. * Upload *all* artifacts (tarballs and hashes and manifests) to an archived location. * If necessary, upload all artifacts to the main location. This script is intended to just be the second step here where orchestrating uploads and such will all happen externally from the build system itself.
2017-01-24rustbuild: Start building --enable-extendedAlex Crichton-0/+6
This commit adds a new flag to the configure script, `--enable-extended`, which is intended for specifying a desire to compile the full suite of Rust tools such as Cargo, the RLS, etc. This is also an indication that the build system should create combined installers such as the pkg/exe/msi artifacts. Currently the `--enable-extended` flag just indicates that combined installers should be built, and Cargo is itself not compiled just yet but rather only downloaded from its location. The intention here is to quickly get to feature parity with the current release process and then we can start improving it afterwards. All new files in this PR inside `src/etc/installer` are copied from the rust-packaging repository.
2017-01-12Auto merge of #38654 - alexcrichton:rustbuild-destdir, r=brsonbors-1/+10
rustbuild: Implement DESTDIR support This commit primarily starts supporting the `DESTDIR` environment variable like the old build system. Along the way this brings `config.toml` up to date with support in `config.mk` with install options supported. Closes #38441
2017-01-10rustbuild: Don't enable debuginfo in rustcAlex Crichton-0/+5
In #37280 we enabled line number debugging information in release artifacts, primarily to close out #36452 where debugging information was critical for MSVC builds of Rust to be useful in production. This commit, however, apparently had some unfortunate side effects. Namely it was noticed in #37477 that if `RUST_BACKTRACE=1` was set then any compiler error would take a very long time for the compiler to exit. The cause of the problem here was somewhat deep: * For all compiler errors, the compiler will `panic!` with a known value. This tears down the main compiler thread and allows cleaning up all the various resources. By default, however, this panic output is suppressed for "normal" compiler errors. * When `RUST_BACKTRACE=1` was set this caused every compiler error to generate a backtrace. * The libbacktrace library hits a pathological case where it spends a very long time in its custom allocation function, `backtrace_alloc`, because the compiler has so much debugging information. More information about this can be found in #29293 with a summary at the end of #37477. To solve this problem this commit simply removes debuginfo from the compiler but not from the standard library. This should allow us to keep #36452 closed while also closing #37477. I've measured the difference to be orders of magnitude faster than it was before, so we should see a much quicker time-to-exit after a compile error when `RUST_BACKTRACE=1` is set. Closes #37477 Closes #37571
2016-12-29A few small test fixes and such from rollupAlex Crichton-1/+1
2016-12-29Merge branch 'rustbuild-llvm-targets' of https://github.com/xen0n/rust into ↵Alex Crichton-0/+11
rollup
2016-12-28rustbuild: Compile rustc twice, not thriceAlex Crichton-0/+7
This commit switches the rustbuild build system to compiling the compiler twice for a normal bootstrap rather than the historical three times. Rust is a bootstrapped language which means that a previous version of the compiler is used to build the next version of the compiler. Over time, however, we change many parts of compiler artifacts such as the metadata format, symbol names, etc. These changes make artifacts from one compiler incompatible from another compiler. Consequently if a compiler wants to be able to use some artifacts then it itself must have compiled the artifacts. Historically the rustc build system has achieved this by compiling the compiler three times: * An older compiler (stage0) is downloaded to kick off the chain. * This compiler now compiles a new compiler (stage1) * The stage1 compiler then compiles another compiler (stage2) * Finally, the stage2 compiler needs libraries to link against, so it compiles all the libraries again. This entire process amounts in compiling the compiler three times. Additionally, this process always guarantees that the Rust source tree can compile itself because the stage2 compiler (created by a freshly created compiler) would successfully compile itself again. This property, ensuring Rust can compile itself, is quite important! In general, though, this third compilation is not required for general purpose development on the compiler. The third compiler (stage2) can reuse the libraries that were created during the second compile. In other words, the second compilation can produce both a compiler and the libraries that compiler will use. These artifacts *must* be compatible due to the way plugins work today anyway, and they were created by the same source code so they *should* be compatible as well. So given all that, this commit switches the default build process to only compile the compiler three times, avoiding this third compilation by copying artifacts from the previous one. Along the way a new entry in the Travis matrix was also added to ensure that our full bootstrap can succeed. This entry does not run tests, though, as it should not be necessary. To restore the old behavior of a full bootstrap (three compiles) you can either pass: ./configure --enable-full-bootstrap or if you're using config.toml: [build] full-bootstrap = true Overall this will hopefully be an easy 33% win in build times of the compiler. If we do 33% less work we should be 33% faster! This in turn should affect cycle times and such on Travis and AppVeyor positively as well as making it easier to work on the compiler itself.
2016-12-29rustbuild: allow overriding list of LLVM targets to buildWang Xuerui-0/+11
A new option is introduced under the `[llvm]` section of `config.toml`, `targets`, for overriding the list of LLVM targets to build support for. The option is passed through to LLVM configure script. Also notes are added about the implications of (ab)using the option; since the default is not changed, and users of the option are expected to know what they're doing anyway (as every porter should), the impact should be minimal. Fixes #38200.
2016-12-28rustbuild: Implement DESTDIR supportAlex Crichton-1/+10
This commit primarily starts supporting the `DESTDIR` environment variable like the old build system. Along the way this brings `config.toml` up to date with support in `config.mk` with install options supported. Closes #38441
2016-12-20Rollup merge of #38388 - redox-os:config_toml_prefix, r=alexcrichtonAlex Crichton-0/+8
Add prefix to config.toml This allows `rustbuild` to be used to install to a prefix. ```toml [build] prefix = "/path/to/install" ``` For example, the following `config.toml` will cause `x.py dist --install` to install to `/path/to/install`
2016-12-19Move prefix to [install] sectionJeremy Soller-3/+8
2016-12-15Update config.toml.exampleJeremy Soller-1/+1
2016-12-15Add prefix to config.tomlJeremy Soller-0/+3
2016-12-14rustbuild: Add sccache supportAlex Crichton-0/+2
This commit adds support for sccache, a ccache-like compiler which works on MSVC and stores results into an S3 bucket. This also switches over all Travis and AppVeyor automation to using sccache to ensure a shared and unified cache over time which can be shared across builders. The support for sccache manifests as a new `--enable-sccache` option which instructs us to configure LLVM differently to use a 'sccache' binary instead of a 'ccache' binary. All docker images for Travis builds are updated to download Mozilla's tooltool builds of sccache onto various containers and systems. Additionally a new `rust-lang-ci-sccache` bucket is configured to hold all of our ccache goodies.
2016-11-14rustbuild: Allow configuration of python interpreterAlex Crichton-1/+11
Add a configuration key to `config.toml`, read it from `./configure`, and add auto-detection if none of those were specified. Closes #35760
2016-11-10rustbuild: support RelWithDebInfo for llvmTim Neumann-0/+3
2016-11-08rustbuild: Tweak for vendored dependenciesAlex Crichton-0/+3
A few changes are included here: * The `winapi` and `url` dependencies were dropped. The source code for these projects is pretty weighty, and we're about to vendor them, so let's not commit to that intake just yet. If necessary we can vendor them later but for now it shouldn't be necessary. * The `--frozen` flag is now always passed to Cargo, obviating the need for tidy's `cargo_lock` check. * Tidy was updated to not check the vendor directory Closes #34687
2016-10-31detect gdb version & rust support in compiletestTim Neumann-0/+3
2016-10-19Enable line number debuginfo in releasesAlex Crichton-0/+3
This commit enables by default passing the `-C debuginfo=1` argument to the compiler for the stable, beta, and nightly release channels. A new configure option was also added, `--enable-debuginfo-lines`, to enable this behavior in developer builds as well. Closes #36452
2016-10-14Add AppVeyor configuration to the repoAlex Crichton-0/+3
We hope to move to AppVeyor in the near future off of Buildbot + EC2. This adds an `appveyor.yml` configuration file which is ready to run builds on the auto branch. This is also accompanied with a few minor fixes to the build system and such to accomodate AppVeyor. The intention is that we're not switching over to AppVeyor entirely just yet, but rather we'll watch the builds for a week or so. If everything checks out then we'll start gating on AppVeyor instead of Buildbot!
2016-09-07Auto merge of #36292 - japaric:musl-root, r=alexcrichtonbors-4/+6
rustbuild: per target musl-root config.toml now accepts a target.$TARGET.musl-root key that lets you override the "build" musl-root value, which is set via the --musl-root flag or via the build.musl-root key. With this change, it's now possible to compile std for several musl targets at once. Here's are the sample commands to do such thing: ``` $ configure \ --enable-rustbuild \ --target=x86_64-unknown-linux-musl,arm-unknown-linux-musleabi \ --musl-root=/musl/x86_64-unknown-linux-musl/ $ edit config.toml && tail config.toml [target.arm-unknown-linux-musleabi] musl-root = "/x-tools/arm-unknown-linux-musleabi/arm-unknown-linux-musleabi/sysroot/usr" $ make ``` r? @alexcrichton With this we should be able to start producing releases of std for arm musl targets
2016-09-06add utility musl_root method, update config.toml.exampleJorge Aparicio-4/+6
2016-09-04Rollup merge of #36234 - durka:disable-codegen-config, r=alexcrichtonManish Goregaokar-0/+4
rustbuild: add config.toml option to disable codegen tests Fixes #36232. I think it worked? Here's a build log where I tried to bootstrap, it crashed, then I added the setting to config.toml and it continued: https://gist.github.com/durka/cbf97cf04b8e065f1a2cfda4c1b6bf95 r? @alexcrichton