Commit graph

2234 commits

Author SHA1 Message Date
Alex Crichton
f94b0e6af3
Fix a test in the bootstrap test suite 2019-12-11 09:50:12 -05:00
Alex Crichton
91b25a84df
Fix some linking of LLVM's dynamic library
Ensure it shows up in the same places it did before so tools can find it
at runtime.
2019-12-11 09:50:11 -05:00
Alex Crichton
7f23e6e8d7
rustc: Link LLVM directly into rustc again
This commit builds on #65501 continue to simplify the build system and
compiler now that we no longer have multiple LLVM backends to ship by
default. Here this switches the compiler back to what it once was long
long ago, which is linking LLVM directly to the compiler rather than
dynamically loading it at runtime. The `codegen-backends` directory of
the sysroot no longer exists and all relevant support in the build
system is removed. Note that `rustc` still supports a dynamically loaded
codegen backend as it did previously, it just no longer supports
dynamically loaded codegen backends in its own sysroot.

Additionally as part of this the `librustc_codegen_llvm` crate now once
again explicitly depends on all of its crates instead of implicitly
loading them through the sysroot. This involved filling out its
`Cargo.toml` and deleting all the now-unnecessary `extern crate`
annotations in the header of the crate. (this in turn required adding a
number of imports for names of macros too).

The end results of this change are:

* Rustbuild's build process for the compiler as all the "oh don't forget
  the codegen backend" checks can be easily removed.
* Building `rustc_codegen_llvm` is much simpler since it's simply
  another compiler crate.
* Managing the dependencies of `rustc_codegen_llvm` is much simpler since
  it's "just another `Cargo.toml` to edit"
* The build process should be a smidge faster because there's more
  parallelism in the main rustc build step rather than splitting
  `librustc_codegen_llvm` out to its own step.
* The compiler is expected to be slightly faster by default because the
  codegen backend does not need to be dynamically loaded.
* Disabling LLVM as part of rustbuild is still supported, supporting
  multiple codegen backends is still supported, and dynamic loading of a
  codegen backend is still supported.
2019-12-11 09:50:11 -05:00
Mark Rousskov
97d936423c Move CI to new builtin check-toolstate 2019-12-10 09:30:09 -05:00
Mark Rousskov
a68d5314fb Add toolstate checking into bootstrap
This is not yet actually used by CI, but implements the logic for
checking that tools are properly building on beta/stable and during beta
cutoff week.

This attempts to mirror the checking functionality in
src/ci/docker/x86_64-gnu-tools/checktools.sh, and called scripts. It
does not attempt to run the relevant steps (that functionality was
originally desired to be moved into bootstrap as well, but doing so
proved more difficult than expected).

This is intended as a way to centralize and make clearer the logic
involved in toolstate checking. In particular, the previous logic was
spread across numerous python and shell scripts in such a way that made
interpretation quite difficult.
2019-12-10 09:26:34 -05:00
Jethro Beekman
22d9f20f60 SGX: Fix target linker used by bootstrap 2019-12-04 16:02:28 +01:00
Josh Stone
2304c25f31 Update the minimum external LLVM to 7
LLVM 7 is over a year old, which should be plenty for compatibility. The
last LLVM 6 holdout was llvm-emscripten, which went away in #65501.

I've also included a fix for LLVM 8 lacking `MemorySanitizerOptions`,
which was broken by #66522.
2019-12-02 11:36:21 -08:00
Ximin Luo
0533249fd7 rustbuild: don't clobber RUSTFLAGS, append to it 2019-12-01 00:53:25 +00:00
Ximin Luo
a9dca3b243 rustbuild: fix cross-compile install
although, not sure why this works - it wasn't needed before
2019-12-01 00:53:25 +00:00
Brian Wignall
16fabd8efd Fix spelling typos 2019-11-26 22:19:54 -05:00
Pietro Albini
c75044f463
Rollup merge of #66569 - pietroalbini:gha-1, r=alexcrichton
GitHub Actions: preparations, part 1

This PR adds the first batch of commits in preparation for GitHub Actions:

* Added GitHub Actions support in `src/ci/shared.sh` and bootstrap.
* Addded a `setup-environment.sh` script which guesses and sets the `DEPLOY`, `DEPLOY_ALT` and `IMAGE` environment variables automatically, to reduce the verbosity of the CI configuration.

This PR does **not** yet add any builders on GitHub Actions.

r? @alexcrichton
2019-11-25 15:05:21 +01:00
Pietro Albini
262ce313d0
ci: add support for GitHub Actions in the CI scripts 2019-11-22 15:36:37 +01:00
MaulingMonkey
839d58ca56 debuginfo: Support for std::collections::Hash* in windows debuggers. 2019-11-20 19:27:42 -08:00
Yuki Okushi
1cbd34faf2
Rollup merge of #66317 - cuviper:bindir_relative, r=Mark-Simulacrum
Use a relative bindir for rustdoc to find rustc

In bootstrap, we set `RUSTC_INSTALL_BINDIR` to `config.bindir`, so
rustdoc can find rustc relative to the toolchain sysroot. However, if a
distro script like Fedora's `%configure` sets an absolute path, then
rustdoc's `sysroot.join(bin_path)` ignores that sysroot altogether.

That would be OK once the toolchain is actually installed, but it breaks
the in-tree doc tests during the build, since `/usr/bin/rustc` is still
the old version. So now we try to make `RUSTC_INSTALL_BINDIR` relative
to the sysroot prefix in the first place.

r? @Mark-Simulacrum
2019-11-13 22:09:23 +09:00
Yuki Okushi
6eea5001b5
Rollup merge of #66166 - GuillaumeGomez:rename-rustdoc-to-doc, r=QuietMisdreavus
rename cfg(rustdoc) into cfg(doc)

Needed by https://github.com/rust-lang/rust/pull/61351

r? @QuietMisdreavus
2019-11-13 22:09:13 +09:00
Yuki Okushi
4ac230ad3d
Rollup merge of #65932 - guanqun:download-xz, r=alexcrichton
download .tar.xz if python3 is used

fixes https://github.com/rust-lang/rust/issues/65757
2019-11-13 22:09:10 +09:00
Mark Rousskov
8783766215 Hopefully fix rustdoc build
It's super unclear why this broke when we switched to beta but not
previously -- but at least it's hopefully fixed now.
2019-11-12 16:36:57 -05:00
Mark Rousskov
f4edc81ac4 Bump version to 1.41 2019-11-12 16:36:57 -05:00
Josh Stone
bfa5e5f788 Fallback to the unmodified path in bindir_relative 2019-11-12 09:42:46 -08:00
Yuki Okushi
896484c71f
Rollup merge of #66263 - guanqun:make-error-explicit, r=alexcrichton
make the error message more readable

When I type it wrong e.g. `--stage --bless`, missing a number here, this change would make it more explicit what's going wrong here.
2019-11-12 16:36:08 +09:00
Josh Stone
1aee3e4d08 Use a relative bindir for rustdoc to find rustc
In bootstrap, we set `RUSTC_INSTALL_BINDIR` to `config.bindir`, so
rustdoc can find rustc relative to the toolchain sysroot. However, if a
distro script like Fedora's `%configure` sets an absolute path, then
rustdoc's `sysroot.join(bin_path)` ignores that sysroot altogether.

That would be OK once the toolchain is actually installed, but it breaks
the in-tree doc tests during the build, since `/usr/bin/rustc` is still
the old version. So now we try to make `RUSTC_INSTALL_BINDIR` relative
to the sysroot prefix in the first place.
2019-11-11 14:22:23 -08:00
Guanqun Lu
0019371e3d bootstrap: don't call support_xz in hot-path 2019-11-12 00:16:05 +08:00
Manish Goregaokar
955f861075 Update clippy 2019-11-11 07:27:46 +01:00
Guanqun Lu
8d56bcc59c download .tar.xz if python3 is used 2019-11-10 16:34:31 +08:00
Guanqun Lu
fd7d3420d3 make the error message more readable 2019-11-10 15:41:04 +08:00
Guillaume Gomez
0282c27781 rename cfg(rustdoc) into cfg(doc) 2019-11-06 18:32:51 +01:00
bors
d2185f6752 Auto merge of #65911 - mati865:static-libstdcxx-mingw, r=alexcrichton
Statically link libstdc++ on windows-gnu

Fixes https://github.com/rust-lang/rust/issues/61561 by not shipping `libstdc++-6.dll` which can conflict with the GCC.
2019-11-05 00:30:58 +00:00
Mazdak Farrokhzad
6cee78c4f0
Rollup merge of #65274 - pietroalbini:ci-upload-toolstate, r=alexcrichton
Upload toolstates.json to rust-lang-ci2

This PR does two things:

* Following up with https://github.com/rust-lang/rust/pull/65202, it migrates deploying artifacts to CI in a script. Both uploading release artifacts and CPU stats were merged into the same script, designing it to be easily extended.
* Uploads the toolstate JSON to `rust-lang-ci2` along with the release artifacts, both for Linux and Windows. This is needed because @RalfJung wants to stop shipping MIRI when its tests are failing, and the toolstate repo doesn't have entries for each commit. Having the toolstate data (just for that specific commit) on `rust-lang-ci2` will simplify the code a lot.

r? @alexcrichton
cc @RalfJung
2019-10-31 02:54:04 +01:00
Mateusz Mikuła
b20d8d3396 Statically link libstdc++ on windows-gnu 2019-10-30 23:18:57 +01:00
Pietro Albini
ca3468768d
ci: move toolstates.json to /tmp/toolstate/ and docker mount it
Before this commit toolstates.json was stored in /tmp and it wasn't
mounted outside the build container. That caused uploading the file in
the upload-artifacts task to fail, as the file was missing on the host.

Mounting /tmp/toolstates.json alone is not the best approach: if the
file is missing when the container is started the Docker engine will
create a *directory* named /tmp/toolstates.json.

The Docker issue could be solved by pre-creating an empty file named
/tmp/toolstates.json, but doing that could cause problems if bootstrap
fails to generate the file and the toolstate scripts receive an empty
JSON.

The approach I took in this commit is to instead mount a /tmp/toolstate
directory inside Docker, and create the toolstates.json file in it. That
also required a small bootstrap change to ensure the directory is
created if it's missing.
2019-10-30 19:41:22 +01:00
Tyler Mandry
4359666daa
Rollup merge of #65920 - smaeul:patch/workspace-hack, r=alexcrichton
Use rustc-workspace-hack for rustbook

As rustbook now depends transitively on openssl, it needs access to the
rustc-workspace-hack/all-static feature to pick up openssl-sys/vendored.
This fixes the rust build with `all-static = true` on systems where
openssl is not installed (e.g. when cross-compiling).
2019-10-29 12:01:46 -07:00
Tyler Mandry
e15f1be63e
Rollup merge of #65843 - xen0n:mips64-musl-targets-with-ci, r=alexcrichton
Enable dist for MIPS64 musl targets

Continuing work in #63165, necessary libc changes are in place and published so here we go!
2019-10-29 12:01:40 -07:00
Tyler Mandry
8aa23125bb
Rollup merge of #65832 - tlively:emscripten-exception-handling, r=alexcrichton
Re-enable Emscripten's exception handling support

Passes LLVM codegen and Emscripten link-time flags for exception
handling if and only if the panic strategy is `unwind`. Sets the
default panic strategy for Emscripten targets to `unwind`. Re-enables
tests that depend on unwinding support for Emscripten, including
`should_panic` tests.

r? @alexcrichton
2019-10-29 12:01:38 -07:00
Samuel Holland
c648ad587c Use rustc-workspace-hack for rustbook
As rustbook now depends transitively on openssl, it needs access to the
rustc-workspace-hack/all-static feature to pick up openssl-sys/vendored.
This fixes the rust build with `all-static = true` on systems where
openssl is not installed (e.g. when cross-compiling).
2019-10-28 22:34:43 -05:00
bors
fae75cd216 Auto merge of #65167 - hermitcore:rusty-hermit, r=alexcrichton
Redesign the interface to the unikernel HermitCore

We are developing the unikernel HermitCore, where the kernel is written in Rust and is already part of the Rust Standard Library. The interface between the standard library and the kernel based on a small C library. With this pull request, we remove completely the dependency to C and use lld as linker. Currently, the kernel will be linked to the application as static library, which is published at https://github.com/hermitcore/libhermit-rs.

We don’t longer support the C interface to the kernel. Consequently, we remove this part from the Rust Standard Library.
2019-10-26 19:35:59 +00:00
Wang Xuerui
23b382755d
ci: add support for MIPS64 musl targets 2019-10-26 18:47:08 +08:00
Ralf Jung
327ae38a0b use plain cargo to install xargo 2019-10-26 10:15:06 +02:00
Ralf Jung
f809f9e08f bootstrap now takes care of installing xargo 2019-10-26 10:15:06 +02:00
Thomas Lively
62c3443e96 Re-enable Emscripten's exception handling support
Passes LLVM codegen and Emscripten link-time flags for exception
handling if and only if the panic strategy is `unwind`. Sets the
default panic strategy for Emscripten targets to `unwind`. Re-enables
tests that depend on unwinding support for Emscripten, including
`should_panic` tests.
2019-10-25 15:16:36 -07:00
Stefan Lankes
d349e32fc7 Merge branch 'master' into rusty-hermit, resolve conflicts 2019-10-25 09:09:55 +02:00
Mazdak Farrokhzad
ee7f9de4c4
Rollup merge of #65408 - guanqun:remove-rust-optimize, r=Mark-Simulacrum
reorder config.toml.example options and add one missing option

r? @Mark-Simulacrum
2019-10-25 06:18:04 +02:00
Guanqun Lu
5defe06f96 reorder TomlTarget struct's fields based on the order in config.toml.example 2019-10-24 23:54:31 +08:00
Guanqun Lu
2c93fd2cb6 reorder Rust struct's fields based on the order in config.toml.example 2019-10-24 23:53:45 +08:00
Guanqun Lu
e1e60c339a reorder Install struct's fields based on the order in config.toml.example 2019-10-24 23:51:02 +08:00
Guanqun Lu
945223128a reorder Build struct's fields based on the order in config.toml.example 2019-10-24 23:50:03 +08:00
Guanqun Lu
a90954163b reorder Llvm struct's fields based on the order in config.toml.example 2019-10-24 23:46:05 +08:00
bors
8e0007f829 Auto merge of #65474 - Mark-Simulacrum:rustc-dev-split, r=pietroalbini
Split the rustc target libraries into separate rustc-dev component

This is re-applies a squashed version of #64823 as well as including #65337 to fix bugs noted after merging the first PR.

The second PR is confirmed as fixing windows-gnu, and presumably also fixes other platforms, such as musl (i.e. #65335 should be fixed); `RUSTUP_DIST_SERVER=https://dev-static.rust-lang.org rustup toolchain install nightly-2019-10-16` can be installed to confirm that this is indeed the case.
2019-10-24 07:27:00 +00:00
Stefan Lankes
ddcd157d03
Merge branch 'master' into rusty-hermit 2019-10-22 19:01:09 +02:00
bors
50ffa79589 Auto merge of #65501 - alexcrichton:remove-emscripten-backend, r=Mark-Simulacrum
Remove `src/llvm-emscripten` submodule

With #65251 landed there's no need to build two LLVM backends and ship
them with rustc, every target we have now uses the same LLVM backend!

This removes the `src/llvm-emscripten` submodule and additionally
removes all support from rustbuild for building the emscripten LLVM
backend. Multiple codegen backend support is left in place for now, and
this is intended to be an easy 10-15 minute win on CI times by avoiding
having to build LLVM twice.
2019-10-22 04:09:28 +00:00
Alex Crichton
c7d285b781 Remove src/llvm-emscripten submodule
With #65251 landed there's no need to build two LLVM backends and ship
them with rustc, every target we have now uses the same LLVM backend!

This removes the `src/llvm-emscripten` submodule and additionally
removes all support from rustbuild for building the emscripten LLVM
backend. Multiple codegen backend support is left in place for now, and
this is intended to be an easy 10-15 minute win on CI times by avoiding
having to build LLVM twice.
2019-10-21 13:05:31 -07:00