587 Commits

Author SHA1 Message Date
Matt Brubeck
befeb04370 Remove unused param from bootstrap::clean::rm_rf 2017-03-15 16:32:30 -07:00
Alex Crichton
5de04060ba rustbuild: Retry downloads of OpenSSL source
We need this to compile Cargo and we download it at build time, but as like all
other network requests it has a chance of failing. This commit moves the source
of the tarball to a mirror (S3 seems semi-more-reliable most of the time) and
also wraps the download in a retry loop.

cc #40474
2017-03-15 07:13:59 -07:00
bors
0aeb9c1297 Auto merge of #40383 - ishitatsuyuki:easy-dist-analysis, r=alexcrichton
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-15 13:50:13 +00:00
Nick Cameron
2a3663f606 Handle feature=rustbuild
Taken from https://github.com/rust-lang/rust/pull/40347/files

And update rls-span to a version with the rustbuild boilerplate
2017-03-15 21:21:20 +13:00
Peter Wagenet
61d93877b7 Target builds for older macOS 2017-03-14 10:08:29 -07:00
bors
fd182c4010 Auto merge of #40329 - petrochenkov:llreuse, r=alexcrichton
rustbuild: Add option for enabling partial LLVM rebuilds

@alexcrichton , you probably didn't notice my [late comment](https://github.com/rust-lang/rust/pull/40236#issuecomment-284160749) on https://github.com/rust-lang/rust/pull/40236, but here's an implementation of that suggestion, it supersedes c652a4fb56.

r? @alexcrichton
2017-03-13 15:31:51 +00:00
bors
75fb56f152 Auto merge of #40448 - ollie27:rustbuild_docs_compiler, r=alexcrichton
rustbuild: Fix compiler docs

* Make sure std docs are generated before compiler docs so rustdoc uses
relative links.
* Don't document the rustc and rustdoc binary crates as they overwrite
the real rustc and rustdoc crates.

Fixes #40217

r? @alexcrichton
2017-03-13 02:24:16 +00:00
Corey Farwell
97a1b6a055 Update usages of 'OSX' (and other old names) to 'macOS'.
As of last year with version 'Sierra', the Mac operating system is now
called 'macOS'.
2017-03-12 14:59:04 -04:00
Alex Crichton
b5798a9be8 Update Cargo to fix nightly channel
This commit updates Cargo with rust-lang/cargo#3820 which includes a fix for
rust-lang/cargo#3819. At the same time this also slightly tweaks how rustbuild
builds cargo to ensure that all the build information (including git info and
such) makes its way into the binary.

Closes rust-lang/cargo#3820
2017-03-12 10:18:16 -07:00
Alex Crichton
4cda4d67f1 Allow cleaning llvm build dir to fail
It may not exist, so we don't want to spuriously generate an error.
2017-03-12 14:02:49 +03:00
Vadim Petrochenkov
362aa9a317 Default llvm.clean-rebuild to false 2017-03-12 14:02:49 +03:00
Vadim Petrochenkov
9b8b3b2b03 rustbuild: Add option for enabling partial LLVM rebuilds 2017-03-12 14:02:49 +03:00
bors
d9cf601ae8 Auto merge of #39770 - alexcrichton:configure-clean, r=brson
Delete more swaths of the configure script

This PR deletes more swaths of the `./configure` script which are either no longer necessary or already available in rustbuild (where an implementation is preferred)
2017-03-12 05:27:45 +00:00
Oliver Middleton
0e0bac914c rustbuild: Fix tests
Use the same step names as the actual build.
2017-03-12 05:09:10 +00:00
Oliver Middleton
7b04f7fa63 rustbuild: Fix compiler docs
* Make sure std docs are generated before compiler docs so rustdoc uses
relative links.
* Don't document the rustc and rustdoc binary crates as they overwrite
the real rustc and rustdoc crates.
2017-03-12 02:45:20 +00:00
Alex Crichton
8db566ee96 rustbuild: Fix a bug when manifesting with Cargo
The wrong Cargo version was passed down so it ended up panicking the
build-manifest script as it couldn't find the right tarball.
2017-03-11 09:30:51 -08:00
Alex Crichton
f8ca805422 configure: Remove --build detection
This commit removes detection of CFG_OSTYPE and CFG_CPUTYPE from the configure
script, which means that the default value of `--build` is no longer present in
the configure script. All this logic is now available in rustbuild itself, so
there's no need to duplicate it.
2017-03-11 08:41:36 -08:00
bors
5d0be0d72a Auto merge of #40199 - alexcrichton:doc-proc-macro, r=brson
rustbuild: Build documentation for `proc_macro`

This commit fixes #38749 by building documentation for the `proc_macro` crate by
default for configured hosts. Unfortunately did not turn out to be a trivial
fix. Currently rustbuild generates documentation into multiple locations: one
for std, one for test, and one for rustc. The initial fix for this issue simply
actually executed `cargo doc -p proc_macro` which was otherwise completely
elided before.

Unfortunately rustbuild was the left to merge two documentation trees together.
One for the standard library and one for the rustc tree (which only had docs for
the `proc_macro` crate). Rustdoc itself knows how to merge documentation files
(specifically around search indexes, etc) but rustbuild was unaware of this, so
an initial fix ended up destroying the sidebar and the search bar from the
libstd docs.

To solve this issue the method of documentation has been tweaked slightly in
rustbuild. The build system will not use symlinks (or directory junctions on
Windows) to generate all documentation into the same location initially. This'll
rely on rustdoc's logic to weave together all the output and ensure that it ends
up all consistent.

Closes #38749
2017-03-11 11:42:09 +00:00
Tatsuyuki Ishi
d4040c3a3f rustbuild: Add save-analysis to install 2017-03-11 20:00:06 +09:00
Tatsuyuki Ishi
5a88c7e5a1 rustbuild: Skip saving analysis when disabled 2017-03-11 20:00:06 +09:00
Tatsuyuki Ishi
e31e264c55 rustbuild: Make save-analysis an option 2017-03-11 20:00:05 +09:00
Alex Crichton
3493d91a18 Test fixes and rebase conflicts 2017-03-10 20:05:06 -08:00
Alex Crichton
ac1bbf7cee Rollup merge of #40297 - alexcrichton:fix-submodules, r=brson
Don't put Cargo into the rustc workspace

This causes problems when first cloning and bootstrapping the repository
unfortunately, so let's ensure that Cargo sticks around in its own workspace.
Because Cargo is a submodule it's not available by default on the inital clone
of the rust-lang/rust repository. Normally it's the responsibility of the
rustbuild to take care of this, but unfortunately to build rustbuild itself we
need to resolve the workspace conflicts.

To deal with this we'll just have to ensure that all submodules are in their own
workspace, which sort of makes sense anyway as updates to dependencies as
bugfixes to Cargo should go to rust-lang/cargo instead of rust-lang/rust. In any
case this commit removes Cargo from the global workspace which should resolve
the issues that we've been seeing.

To actually perform this the `cargo` submodule has been moved to a new `vendor`
directory to ensure it's outside the scope of `src/Cargo.toml` as a workspace.

Closes https://github.com/rust-lang/rust/issues/40284
2017-03-10 16:18:28 -08:00
Alex Crichton
416889f499 Rollup merge of #40277 - rkruppe:llvm-parallel-link-jobs, r=alexcrichton
rustbuild: expose LLVM_PARALLEL_LINK_JOBS

This allows limiting the number of linker jobs to avoid swapping when linking LLVM with debug info.
2017-03-10 16:18:27 -08:00
Alex Crichton
0ce745bc30 Rollup merge of #40261 - infinity0:patch-1, r=alexcrichton
Support armhf abi on 64-bit ARM cpus

They report their `uname -m` as armv8l rather than aarch64.

Patch originally by Matthias Klose <doko@debian.org>
2017-03-10 16:18:27 -08:00
Alex Crichton
5c715dee38 Rollup merge of #40259 - TimNN:fix-emscripten-tests, r=alexcrichton
Fix emscripten test detection

Without this change `rustbuild` will attempt to run `.js.map` files (if they exist) resulting in lots of sadness.

r? @alexcrichton
2017-03-10 16:18:27 -08:00
Alex Crichton
c65996ea3b Don't put Cargo into the rustc workspace
This causes problems when first cloning and bootstrapping the repository
unfortunately, so let's ensure that Cargo sticks around in its own workspace.
Because Cargo is a submodule it's not available by default on the inital clone
of the rust-lang/rust repository. Normally it's the responsibility of the
rustbuild to take care of this, but unfortunately to build rustbuild itself we
need to resolve the workspace conflicts.

To deal with this we'll just have to ensure that all submodules are in their own
workspace, which sort of makes sense anyway as updates to dependencies as
bugfixes to Cargo should go to rust-lang/cargo instead of rust-lang/rust. In any
case this commit removes Cargo from the global workspace which should resolve
the issues that we've been seeing.

To actually perform this the `cargo` submodule has been moved to the top
directory to ensure it's outside the scope of `src/Cargo.toml` as a workspace.
2017-03-10 14:49:19 -08:00
Alex Crichton
f846aaf81f rustbuild: Build documentation for proc_macro
This commit fixes #38749 by building documentation for the `proc_macro` crate by
default for configured hosts. Unfortunately did not turn out to be a trivial
fix. Currently rustbuild generates documentation into multiple locations: one
for std, one for test, and one for rustc. The initial fix for this issue simply
actually executed `cargo doc -p proc_macro` which was otherwise completely
elided before.

Unfortunately rustbuild was the left to merge two documentation trees together.
One for the standard library and one for the rustc tree (which only had docs for
the `proc_macro` crate). Rustdoc itself knows how to merge documentation files
(specifically around search indexes, etc) but rustbuild was unaware of this, so
an initial fix ended up destroying the sidebar and the search bar from the
libstd docs.

To solve this issue the method of documentation has been tweaked slightly in
rustbuild. The build system will not use symlinks (or directory junctions on
Windows) to generate all documentation into the same location initially. This'll
rely on rustdoc's logic to weave together all the output and ensure that it ends
up all consistent.

Closes #38749
2017-03-10 13:04:49 -08:00
Ximin Luo
0a55c8e659 Support armhf abi on 64-bit ARM cpus
They report their `uname -m` as armv8l rather than aarch64.

Patch originally by Matthias Klose <doko@debian.org>
2017-03-10 08:13:21 -08:00
Alex Crichton
3be02fc410 rustbuild: Use copies instead of hard links
The original motivation for hard links was to speed up the various stages of
rustbuild, but in the end this is causing problems on Windows (#39504).

This commit tweaks the build system to use copies instead of hard links
unconditionally to ensure that the files accessed by Windows are always
disjoint.

Locally this added .3s to a noop build, so it shouldn't be too much of a
regression hopefully!
2017-03-09 07:00:13 -08:00
Robin Kruppe
58ff4f67e3 rustbuild: expose LLVM_PARALLEL_LINK_JOBS
This allows limiting the number of linker jobs to avoid swapping when
linking LLVM with debug info.
2017-03-09 15:07:42 +01:00
Tim Neumann
4eeede3e0f fix emscripten test detection 2017-03-09 11:43:53 +01:00
Jorge Aparicio
872a0ebf21 cleanup: remove the *san Cargo features from std
these belong to a previous iteration of the sanitizer implementation
2017-03-05 14:25:47 -05:00
Vadim Petrochenkov
c652a4fb56 Do not purge LLVM build directory on rebuild
Add some comments
2017-03-04 21:38:26 +03:00
Vadim Petrochenkov
e2f6185294 Separate "ui-fulldeps" tests from "ui" tests 2017-03-04 21:38:26 +03:00
Vadim Petrochenkov
11adac350b bootstrap.py: Report build status
Move some code from x.py to bootstrap.py
2017-03-04 21:38:26 +03:00
Vadim Petrochenkov
a7c8afd28d Support combination MSVC + Ninja 2017-03-04 21:38:26 +03:00
bors
52080902d9 Auto merge of #39917 - alexcrichton:build-cargo, r=brson
rustbuild: Add support for compiling Cargo

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-03-03 23:26:26 +00:00
Alex Crichton
44a01b8a54 rustbuild: Add support for compiling Cargo
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-03-03 07:29:31 -08:00
bors
2c6e0e445e Auto merge of #40152 - eddyb:order-in-rustbuild, r=alexcrichton
rustbuild: use deterministic step ordering and respect path order on the command-line.

Restores similar behavior to `make` rules, where:
* the step order was always the same, e.g. the testsuite order in `make check`
* `make check-stage1-{cfail,rpass}` would *always* run `cfail` before `rpass`
  * `./x.py test--stage 1 src/test/{compile-fail,run-pass}` is now equivalent

r? @alexcrichton
2017-03-03 03:15:52 +00:00
Eduard-Mihai Burtescu
4c8b39d973 rustbuild: sort rules by the order of matching CLI paths. 2017-02-28 20:13:21 +02:00
Eduard-Mihai Burtescu
146c462e1a rustbuild: use a BTreeMap for the ruleset for determinism. 2017-02-28 20:12:26 +02:00
Alex Crichton
500076e141 travis: Split Android into dist/test images
PRs can't land againt beta right now because the android bot is filling up on
disk space. I don't really know what's going on but the android bot is the
longest one to run anyway so it'll benefit from being split up regardless.
2017-02-27 21:20:23 -08:00
Alex Crichton
c08f3824cd travis: Make more network requests retryable
This commit attempts to move more network operations to being retryable through
various operations. For example git submodule updates, downloading snapshots,
etc, are now all in retryable steps.

Hopefully this commit can cut down on the number of network failures we've been
seeing!
2017-02-25 21:28:54 -08:00
Eduard-Mihai Burtescu
411d8e95db Rollup merge of #40019 - alexcrichton:fix-musl, r=brson
travis: Compile a more compatible libc.a for musl

The mitigations for #34978 involve passing `-Wa,-mrelax-relocations=no` to all C
code we compile, and we just forgot to pass it when compiling musl itself.

Closes #39979
2017-02-25 14:13:30 +02:00
Eduard-Mihai Burtescu
be66a607da Rollup merge of #39950 - ishitatsuyuki:stop-trashing-ldpath, r=alexcrichton
bootstrap: stop trashing (DY)LD_LIBRARY_PATH

This generated an ugly error with fakeroot before.
2017-02-25 14:13:22 +02:00
Eduard-Mihai Burtescu
a6924177e4 Rollup merge of #39903 - binarycrusader:issue-39901, r=alexcrichton
add solaris sparcv9 support

Fixes #39901
2017-02-25 14:13:18 +02:00
Eduard-Mihai Burtescu
e31d46402d Rollup merge of #39888 - nagisa:on-fail-bootstrap, r=alexcrichton
[rustbuild] add a way to run command after failure

This is a simple way to workaround the debugging issues caused by the rustc
wrapper used in the bootstrap process. Namely, it uses some obscure environment
variables and you can't just copy the failed command and run it in the shell or
debugger to examine the failure more closely.

With `--on-fail` its possible to run an arbitrary command within exactly the
same environment under which rustc failed. Theres's multiple ways to use this
new flag:

$ python x.py build --stage=1 --on-fail=env

    would print a list of environment variables and the failed command, so a
    few copy-pastes and you now can run the same rust in your shell outside the
    bootstrap system.

$ python x.py build --stage=1 --on-fail=bash

    Is a more useful variation of the command above in that it launches a whole
    shell with environment already in place! All that's left to do is copy-paste
    the command just above the shell prompt!

Fixes #38686
Fixes #38221
2017-02-25 14:13:17 +02:00
bors
e78aa5d754 Auto merge of #40060 - alexcrichton:retry-downloads, r=aturon
rustbuild: Retry downloads by default

Don't rely on curl's --retry, it appears to not work for some errors like SSL
errors.
2017-02-25 05:50:08 +00:00
bors
08230775a0 Auto merge of #39892 - petrochenkov:rt, r=alexcrichton
Fix test caching on Windows/GNU

Addresses https://github.com/rust-lang/rust/issues/36385#issuecomment-277131231

Previously the sysroot directory was purged on every build and mingw startup objects were rebuilt unconditionally and always triggered test reruns.
Now mingw startup objects are built in the native directory and then copied into the sysroot directory. They are also rebuilt only when necessary, so test caching works.
2017-02-24 16:06:15 +00:00