Commit Graph

296 Commits

Author SHA1 Message Date
Alex Crichton
32089ae2c6 rustbuild: Fix dependencies of check-docs step
Some of the doc tests depend on `extern crate test`, so depend on libtest
instead of libstd here.
2016-10-07 12:28:54 -07:00
Ahmed Charles
9ca382f95f Use workspaces and switch to a single Cargo.lock.
This involves hacking the code used to run cargo test on various
packages, because it reads Cargo.lock to determine which packages should
be tested. This change implements a blacklist, since that will catch new
crates when they are added in the future.
2016-10-07 12:04:32 -07:00
Ahmed Charles
f171d98804 Prevent accidentally running 'make install' as sudo. 2016-10-06 19:38:30 -07:00
bors
75c155b834 Auto merge of #35641 - ahmedcharles:install, r=alexcrichton
rustbuild: Add install target. #34675

It just prints to the screen currently.

r? @alexcrichton

I'm working on the next commit to actually have it install.
2016-10-06 16:31:27 -07:00
Ahmed Charles
fa230825c1 Add support for docdir, libdir and mandir. 2016-10-05 22:42:40 -07:00
Ahmed Charles
a580f8f80d Install docs, std and rustc using results from dist. 2016-10-05 22:42:40 -07:00
Ahmed Charles
e6985b2a6d rustbuild: Add install target. #34675
It just prints to the screen currently.
2016-10-05 22:42:40 -07:00
Alex Crichton
19d192920b configure: Add options for separate musl roots
This allows using the `./configure` script to enable rustbuild to compile
multiple musl targets at once. We'll hopefully use this soon on our bots to
produce a bunch of targets.
2016-10-05 11:00:55 -07:00
Nick Stevens
7937f6ccde rustbuild: Fix panic message when musl-root not set
The previous panic message delivered when a musl target was specified
but musl-root was not specified incorrectly instructed the user to add
the musl-root key to the "build" section of config.toml. The key
actually needs to be added to the "rust" section.
2016-10-04 20:22:51 -05:00
Nick Stevens
51ef2b315b rustbuild: Fix bug preventing per-target musl-root
In #36292, support was added to target musl libc for ARM targets using
rustbuild. Specifically, that change allowed the addition of per-target
"musl-root" options in the rustbuild config.toml so that multiple
targets depending on musl could be built. However, that implementation
contained a couple of omissions: the musl-root option was added to the
config, but was never added to the TOML parsing, and therefore was not
actually being loaded from config.toml. This commit rectifies that and
allows successful building of musl-based ARM targets.
2016-10-04 20:17:53 -05:00
bors
ff713464e6 Auto merge of #36847 - alexcrichton:rustc-macro-doc, r=nrc
rustdoc: Fix documenting rustc-macro crates

This commit adds a "hack" to the session to track whether we're a rustdoc
session or not. If we're rustdoc then we skip the expansion to add the
rustc-macro infrastructure.

Closes #36820
2016-10-03 07:40:22 -07:00
bors
fe36876ce1 Auto merge of #36853 - TimNN:rustbuild-out-of-tree, r=alexcrichton
fix out-of-tree rustbuild

See https://github.com/rust-lang/rust/pull/36456#issuecomment-250589906

r? @alexcrichton
2016-10-01 23:53:35 -07:00
Brian Anderson
afa72b5dd6 Don't build any native compiler-builtin components for emscripten 2016-09-30 14:04:09 -07:00
Brian Anderson
4f5e73be1b Build a dummy alloc_jemalloc crate on platforms that don't support it
This is a hack to support building targets that don't support jemalloc
alongside hosts that do. The jemalloc build is controlled by a feature
of the std crate, and if that feature changes between targets, it
invalidates the fingerprint of std's build script (this is a cargo
bug); so we must ensure that the feature set used by std is the same
across all targets, which means we have to build the alloc_jemalloc
crate for targets like emscripten, even if we don't use it.
2016-09-30 14:03:00 -07:00
Brian Anderson
badfd6200b Cleanup bootstrap 2016-09-30 14:02:58 -07:00
Brian Anderson
834bbab11b rustbuild: Only build 'dist' when building the host
Doing this step for the target results in the build system
trying to build rustc for asmjs, which doesn't work.
2016-09-30 14:02:56 -07:00
Brian Anderson
8401e37495 Update bootstrap and compiletest to use the detected nodejs 2016-09-30 14:02:53 -07:00
Brian Anderson
37abec06e5 Tidy 2016-09-30 14:02:51 -07:00
Brian Anderson
fcd3279f36 Improve bootstrap crate testing for emscripten 2016-09-30 14:02:47 -07:00
Brian Anderson
b8b50f0eda Preliminary wasm32 support 2016-09-30 14:02:45 -07:00
Ross Schulman
ad9184c9bf Adapting bootstrap to run tests on asmjs. 2016-09-30 14:02:43 -07:00
Brian Anderson
c62d8b12bf Update gcc-rs for emscripten 2016-09-30 14:02:43 -07:00
Brian Anderson
1231ce33db Support emscripten in rustbuild 2016-09-30 14:02:42 -07:00
Jan-Erik Rediger
939bd47339 Configure LLVM to use js backend
Initialize the asmjs backend for LLVM
2016-09-30 14:02:39 -07:00
Alex Crichton
7724a04b0f rustdoc: Fix documenting rustc-macro crates
This commit adds a "hack" to the session to track whether we're a rustdoc
session or not. If we're rustdoc then we skip the expansion to add the
rustc-macro infrastructure.

Closes #36820
2016-09-30 10:49:30 -07:00
Tim Neumann
62fb242ad6 fix out-of-tree rustbuild 2016-09-30 18:04:41 +02:00
bors
704bcc0dda Auto merge of #36456 - alexcrichton:rustbuild-dont-use-c, r=jonathandturner
rustbuild: Use current_dir instead of -C

Apparently some versions of git don't support the `-C` flag, so let's use the
guaranteed-to-work `current_dir` function.
2016-09-29 03:48:02 -07:00
Jonathan Turner
02c050644b Rollup merge of #36811 - brson:bootstrap, r=alexcrichton
Update bootstrap compiler
2016-09-28 20:21:52 -07:00
Jonathan Turner
47a335b677 Rollup merge of #36803 - brson:node, r=alexcrichton
Move nodejs detection into bootstrap

This avoids issues with mingw path conversions.

r? @alexcrichton
2016-09-28 20:21:52 -07:00
Alex Crichton
d68f7eb865 rustbuild: Use current_dir instead of -C
Apparently some versions of git don't support the `-C` flag, so let's use the
guaranteed-to-work `current_dir` function.
2016-09-28 16:45:17 -07:00
Brian Anderson
3b49c60ab7 Remove stage0 hacks 2016-09-28 23:17:56 +00:00
Brian Anderson
27588dd7a1 Move nodejs detection into bootstrap
This avoids issues with mingw path conversions.
2016-09-28 09:05:19 -07:00
Jonathan Turner
5b6638ace0 Remove requirement to use 10.7 (fixes macOS) 2016-09-27 13:13:09 -07:00
Jonathan Turner
96577e4871 Rollup merge of #36663 - brson:build-plan, r=alexcrichton
rustbuild: Print out all build steps when --verbose

These helped me debug some problems with the asmjs target. It's just vomiting debug representations, so not the prettiest stuff.

r? @alexcrichton
2016-09-26 17:29:48 -07:00
bors
8ccfc695b5 Auto merge of #36719 - shepmaster:build-env-var-reporting, r=alexcrichton
Report which required build-time environment variable is not set
2016-09-26 11:12:42 -07:00
bors
95abee1a68 Auto merge of #36442 - alexcrichton:rustbuild-cross, r=brson
rustbuild: Nicer error for host builds of targets

If a triple is configured only as a target, not a host, then trying to build
that triple with host artifacts would cause a panic. Fail a little nicer
instead.

Closes #36268
2016-09-25 15:30:01 -07:00
Jake Goulding
cc8727e675 Report which required build-time environment variable is not set 2016-09-25 12:18:09 -04:00
Brian Anderson
fa5eb54881 rustbuild: Print out all build steps when --verbose 2016-09-23 01:37:31 +00:00
Eitan Adler
9c3cf06b29 inherit from object 2016-09-17 23:31:06 -07:00
Jonathan Turner
c6f1db6f60 Rollup merge of #36509 - nagisa:rustbuild-py3, r=alexcrichton
Try to support py3 with rustbuild better

Annoying to have it fail when you run with `python` only to have to rerun later with `python2`.

r? @alexcrichton
2016-09-16 09:29:49 -07:00
bors
8394685b83 Auto merge of #36441 - alexcrichton:rustbuild-target, r=brson
rustbuild: Fix cross-compiles to MinGW on Linux

Closes #36290
Closes #36291
2016-09-16 04:01:01 -07:00
bors
a36e069288 Auto merge of #36213 - josephDunne:dist_version, r=brson
Add rustc version info (git hash + date) to dist tarball

a fix for #32444
2016-09-15 20:48:58 -07:00
bors
5511a93c8a Auto merge of #36439 - alexcrichton:fix-rustbuild, r=japaric
rustbuild: Fix dependency tracking with new Cargo

The recent Cargo update changed filenames, which broke a lot of incremental
rustbuild builds. What it thought were the output files were indeed no longer
the output files! (wreaking havoc).

This commit updates this to stop guessing filenames of Cargo and just manage
stamp files instead.
2016-09-15 17:19:09 -07:00
Simonas Kazlauskas
3f79310174 Try to support py3 with rustbuild better 2016-09-16 01:52:26 +03:00
bors
739d57180f Auto merge of #36041 - ahmedcharles:try, r=nrc
Replace try! with ?.
2016-09-13 22:41:34 -07:00
Alex Crichton
6d78620bd7 rustbuild: Nicer error for host builds of targets
If a triple is configured only as a target, not a host, then trying to build
that triple with host artifacts would cause a panic. Fail a little nicer
instead.

Closes #36268
2016-09-12 22:45:36 -07:00
Alex Crichton
5841678f51 rustbuild: Fix cross-compiles to MinGW on Linux
Closes #36290
Closes #36291
2016-09-12 22:41:17 -07:00
Alex Crichton
194a91b0ce rustbuild: Fix dependency tracking with new Cargo
The recent Cargo update changed filenames, which broke a lot of incremental
rustbuild builds. What it thought were the output files were indeed no longer
the output files! (wreaking havoc).

This commit updates this to stop guessing filenames of Cargo and just manage
stamp files instead.
2016-09-12 21:49:17 -07:00
Jorge Aparicio
521ffe9dbe it's also compiler-rt.lib on windows-gnu 2016-09-12 21:22:15 -07:00
Jorge Aparicio
3fd5fdd8d3 crate-ify compiler-rt into compiler-builtins
libcompiler-rt.a is dead, long live libcompiler-builtins.rlib

This commit moves the logic that used to build libcompiler-rt.a into a
compiler-builtins crate on top of the core crate and below the std crate.
This new crate still compiles the compiler-rt instrinsics using gcc-rs
but produces an .rlib instead of a static library.

Also, with this commit rustc no longer passes -lcompiler-rt to the
linker. This effectively makes the "no-compiler-rt" field of target
specifications a no-op. Users of `no_std` will have to explicitly add
the compiler-builtins crate to their crate dependency graph *if* they
need the compiler-rt intrinsics. Users of the `std` have to do nothing
extra as the std crate depends on compiler-builtins.

Finally, this a step towards lazy compilation of std with Cargo as the
compiler-rt intrinsics can now be built by Cargo instead of having to
be supplied by the user by some other method.

closes #34400
2016-09-12 21:22:15 -07:00
Ahmed Charles
6d88ab57b3 Fix typo in bootstrap/lib.rs. 2016-09-11 16:00:50 -07:00
bors
1284081d33 Auto merge of #36256 - rjgoldsborough:make-configure-detect-nodejs-36207, r=alexcrichton
adding a check to bootstrap script

and a check to the rust config script

refs #36207

first crack at making configure detect nodejs
2016-09-09 14:04:31 -07:00
Jake Goldsborough
89bc13c37d tweaking the nodejs cmd sanity check 2016-09-08 17:51:06 -07:00
bors
a7b2232d20 Auto merge of #36292 - japaric:musl-root, r=alexcrichton
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-07 15:45:14 -07:00
Jake Goldsborough
7e46f2ceaa moving nodejs detection logic to configure and adding
a nodejs cmd sanity check
2016-09-07 13:13:37 -07:00
Jorge Aparicio
8cfc69ecea add utility musl_root method, update config.toml.example 2016-09-06 21:49:02 -05:00
Jake Goldsborough
0adcf46cdf detecting nodejs in configure 2016-09-06 18:31:00 -07:00
Jake Goldsborough
79644ac3c4 adding a check to sanity to look for the nodejs command 2016-09-06 07:41:20 -07:00
Jorge Aparicio
8df4a768a7 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
```
2016-09-06 01:04:41 -05:00
bors
9cc430d2cf Auto merge of #36144 - japaric:rustbuild-musl, r=alexcrichton
rustbuild: fix building std for musl targets

closes #36143

r? @alexcrichton
2016-09-04 10:22:26 -07:00
Manish Goregaokar
55893f0da7 Rollup merge of #36234 - durka:disable-codegen-config, r=alexcrichton
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
2016-09-04 21:01:00 +08:00
Manish Goregaokar
8ee0b6b6c1 Rollup merge of #36231 - durka:patch-29, r=alexcrichton
indicate where to copy config.toml.example

r? @alexcrichton
2016-09-04 21:01:00 +08:00
Jake Goldsborough
b66410043a adding a check to bootstrap script
and a check to the rust config script
2016-09-03 20:22:12 -07:00
Joseph Dunne
72da8b82c1 Add rustc version info (git hash + date) to dist tarball
fixes #32444
2016-09-03 13:34:21 +01:00
Alex Burka
0efc4bf387 rustbuild: add config.toml option to disable codegen tests 2016-09-03 06:04:03 +00:00
Alex Burka
a34485ff19 change wording 2016-09-03 02:02:03 -04:00
Alex Burka
63520c1089 indicate where to copy config.toml.example 2016-09-02 19:54:02 -04:00
Jonathan Turner
b9996909ac Rollup merge of #36198 - alexcrichton:fix-travis, r=brson
test: Add a min-llvm-version directive

We've got tests which require a particular version of LLVM to run as they're
testing bug fixes. Our build system, however, supports multiple LLVM versions,
so we can't run these tests on all LLVM versions.

This adds a new `min-llvm-version` directive for tests so they can opt out of
being run on older versions of LLVM. This then namely applies that logic to the
`issue-36023.rs` test case and...

Closes #36138
2016-09-02 15:28:52 -07:00
Jonathan Turner
49125bd794 Rollup merge of #36180 - frewsxcv:patch-33, r=alexcrichton
Transition Travis CI to use rustbuild.
2016-09-02 15:28:51 -07:00
Corey Farwell
3a96fe3275 Transition Travis CI to use rustbuild. 2016-09-02 12:48:55 -04:00
Alex Crichton
96283fc083 test: Add a min-llvm-version directive
We've got tests which require a particular version of LLVM to run as they're
testing bug fixes. Our build system, however, supports multiple LLVM versions,
so we can't run these tests on all LLVM versions.

This adds a new `min-llvm-version` directive for tests so they can opt out of
being run on older versions of LLVM. This then namely applies that logic to the
`issue-36023.rs` test case and...

Closes #36138
2016-09-01 16:14:17 -07:00
Jorge Aparicio
25145b2ef1 copy_third_party_objects -> copy_musl_third_party_objects 2016-08-30 16:30:57 -05:00
Jorge Aparicio
bab60124a5 rustbuild: fix building std for musl targets
closes #36143
2016-08-30 10:22:41 -05:00
king6cong
9ce47e318a fix git submodule status check 2016-08-29 16:53:38 +08:00
bors
86dde9bbda Auto merge of #36062 - japaric:smarter-submodules, r=alexcrichton
rustbuild: smarter `git submodule`-ing

With this commit, if one bootstraps rust against system llvm then the
src/llvm submodule is not updated/checked-out. This saves considerable
network bandwith when starting from a fresh clone of rust-lang/rust as
the llvm submodule is never cloned.

cc #30107

r? @alexcrichton
cc @petevine

~~We could also avoid updating the jemalloc submodule if --disable-jemalloc is used. It just hasn't been implemented.~~ Done

This probably doesn't handle "recursive" submodules correctly but I think we don't have any of those right now.

I'm still testing a bootstrap but already confirmed that the llvm submodule doesn't get updated when `--llvm-root` is passed to `configure`.
2016-08-28 21:57:51 -07:00
Jorge Aparicio
4b5007a1a2 fix tidy error 2016-08-28 22:13:35 -05:00
bors
b17fa8bf01 Auto merge of #36055 - japaric:rustbuild-no-filecheck, r=alexcrichton
rustbuild: skip filecheck check if codegen tests are disabled

to match the behavior of the old Makefile-based build system

closes #35752

r? @alexcrichton
2016-08-28 03:28:38 -07:00
bors
78a0838756 Auto merge of #36028 - japaric:s390x, r=alexcrichton
initial support for s390x

A new target, `s390x-unknown-linux-gnu`, has been added to the compiler
and can be used to build no_core/no_std Rust programs.

Known limitations:

- librustc_trans/cabi_s390x.rs is missing. This means no support for
  `extern "C" fn`.
- No support for this arch in libc. This means std can't be cross
  compiled for this target.

r? @alexcrichton

This time I couldn't test running a binary cross compiled to this target under QEMU because the qemu-s390x that ships with Ubuntu 16.04 SIGABRTs with every s390x binary I run it with.

Change in binary size of `librustc_llvm.so`:

Without this commit (stage1): 41895736 bytes
With this commit (stage1): 42899016 bytes

~2.4% increase
2016-08-28 00:36:16 -07:00
Jorge Aparicio
5683bf9e20 don't update the src/jemalloc submodule is jemalloc has been disabled
i.e. via the --disable-jemalloc configure flag
2016-08-27 22:53:19 -05:00
Jorge Aparicio
b8ebc1347c don't run codegen tests when they have been disabled 2016-08-27 22:14:29 -05:00
Jorge Aparicio
a375799f7a rustbuild: smarter git submodule-ing
With this commit, if one bootstraps rust against system llvm then the
src/llvm submodule is not updated/checked-out. This saves considerable
network bandwith when starting from a fresh clone of rust-lang/rust as
the llvm submodule is never cloned.

cc #30107
2016-08-27 21:44:12 -05:00
Jorge Aparicio
c70d633e94 rustbuild: skip filecheck check if codegen tests are disabled
to match the behavior of the old Makefile-based build system

closes #35752
2016-08-27 17:13:13 -05:00
Manish Goregaokar
668d63132e
Fixup rustbuild on #35124 2016-08-27 15:40:25 +05:30
Jorge Aparicio
027eab2f87 initial support for s390x
A new target, `s390x-unknown-linux-gnu`, has been added to the compiler
and can be used to build no_core/no_std Rust programs.

Known limitations:

- librustc_trans/cabi_s390x.rs is missing. This means no support for
  `extern "C" fn`.
- No support for this arch in libc. This means std can be cross compiled
  for this target.
2016-08-26 21:05:50 -05:00
bors
599f1b96b1 Auto merge of #35766 - brson:bump, r=alexcrichton
Upgrade bootstrap compiler to 1.12

r? @alexcrichton
2016-08-22 20:51:54 -07:00
Brian Anderson
144cc7285f Update cargo bootstrap rev and add fix for cargo#3005 2016-08-23 00:05:33 +00:00
Jonathan Turner
ffbb8600fb Add workaround to detect correct compiler version 2016-08-18 15:22:23 -07:00
Simon Sapin
12a159abea Add 'make help' for rustbuild
It is still advertised by the configure script.
2016-08-17 16:23:11 +02:00
bors
13ff307f07 Auto merge of #35666 - eddyb:rollup, r=eddyb
Rollup of 30 pull requests

- Successful merges: #34941, #35392, #35444, #35447, #35491, #35533, #35539, #35558, #35573, #35574, #35577, #35586, #35588, #35594, #35596, #35597, #35598, #35606, #35611, #35615, #35616, #35620, #35622, #35640, #35643, #35644, #35646, #35647, #35648, #35661
- Failed merges: #35395, #35415
2016-08-14 15:27:15 -07:00
Eduard-Mihai Burtescu
da2328b0b1 Rollup merge of #35577 - japaric:relax, r=alexcrichton
add -mrelax-relocations=no to i686-musl and i586-gnu

I've been experiencing #34978 with these two targets. This applies the
hack in #35178 to these targets as well.

r? @alexcrichton
2016-08-14 20:29:49 +03:00
Eduard-Mihai Burtescu
8ade28e9a2 Rollup merge of #35574 - badboy:emscripten-test-fixes, r=brson
Emscripten test fixes

This picks up parts of #31623 to disable certain tests that emscripten can't run, as threads/processes are not supported.
I re-applied @tomaka's changes manually, I can rebase those commits with his credentials if he wants.

It also disables jemalloc for emscripten (at least in Rustbuild, I have to check if there is another setting for the same thing in the old makefile approach).

This should not impact anything for normal builds.
2016-08-14 20:29:49 +03:00
Diggory Blake
7341d68a40 Produce source package in rust-installer format in addition to vanilla tarball
Copy source files from rust code

Add missing wildcard

Remove unused function

Remove use of tar --transform
2016-08-12 18:13:18 +01:00
Jorge Aparicio
c0ff3c1070 fix match 2016-08-11 11:22:39 -05:00
Jorge Aparicio
ae58a87594 add -mrelax-relocations=no to i686-musl and i586-gnu
I've been experiencing #34978 with these two targets. This applies the
hack in #35178 to these targets as well.
2016-08-10 14:35:09 -05:00
Jan-Erik Rediger
5dac93d59c [emscripten] Disable jemalloc for emscripten 2016-08-10 16:38:23 +02:00
Cameron Hart
05045da9fd Improved checking of target's llvm_config
Point llvm @bitshifter branch until PR accepted

Use today's date for LLVM auto clean trigger

Update LLVM submodule to point at rust-lang fork.

Handle case when target is set
2016-08-10 22:24:51 +10:00
Cameron Hart
cbb88faad7 Merge branch 'master' into issue-30961 2016-08-06 15:50:48 +10:00
m4b
5383cd7163 Fix style issues 2016-08-02 09:54:05 -07:00
m4b
884b969f2a Add -mrelax-relocations=no hacks to fix musl build 2016-08-01 23:42:15 -07:00
bors
724f811794 Auto merge of #35060 - japaric:arm-musl, r=alexcrichton
Add ARM MUSL targets

Rebase of #33189.

I tested this by producing a std for `arm-unknown-linux-musleabi` then I cross compiled Hello world to said target. Checked that the produced binary was statically linked and verified that the binary worked under QEMU.

This depends on rust-lang/libc#341. I'll have to update this PR after that libc PR is merged.

I'm also working on generating ARM musl cross toolchain via crosstool-ng. Once I verified those work, I'll send a PR to rust-buildbot.

r? @alexcrichton
cc @timonvo
2016-07-30 23:21:46 -07:00