Commit graph

2265 commits

Author SHA1 Message Date
Matthew Healy
e44fc4577f Skip LLVM rebuild when skip-rebuild is true 2019-12-26 22:19:18 +00:00
Matthew Healy
2297a8b199 Parse llvm_skip_rebuild into Config 2019-12-26 22:16:42 +00:00
Ralf Jung
04c740bee3 bootstrap miri: remove no longer used env var 2019-12-24 11:54:25 +01:00
Mark Rousskov
a06baa56b9 Format the world 2019-12-22 17:42:47 -05:00
Mark Rousskov
8eb7c58dbb Remove most files from format ignore list
Also moves formatting to use edition 2018, and to be done in parallel.
This brings near-linear speed ups (at least with a small amount of
cores).
2019-12-22 17:41:02 -05:00
bors
0d2817a439 Auto merge of #65939 - anp:incremental-rustfmt-rollout, r=Mark-Simulacrum
Enable incremental rustfmt adoption

Enables an incremental rollout of rustfmt usage within the compiler via a granular ignore configuration and automated enforcement. The decision to format the repository was approved in https://github.com/rust-lang/compiler-team/issues/80#issuecomment-491324079.

This PR includes:

* an `[ignore]` section to `rustfmt.toml` including most of the repository
* `./x.py` downloads rustfmt from a specific nightly (we do not pin to beta or stable as we need unstable features)
* an `./x.py fmt [--check]` command which runs cargo-fmt
* `./x.py fmt --check` runs during the same test step as `src/tools/tidy`, on master, but not on beta or stable as we don't want to depend on nightly rustfmt there.
* a commit to format `src/librustc_fs_util` as an initial target and to ensure enforcement is working from the start
2019-12-22 13:34:05 +00:00
Mark Rousskov
b9e4174d8c Do not run if rustfmt.toml does not exist
distcheck (and generally publishing tarballs) will not package
rustfmt.toml and we for now still support running tidy etc in those
tarballs.
2019-12-22 07:44:09 -05:00
Mazdak Farrokhzad
35ff2f1df3
Rollup merge of #67410 - mati865:mingw_link_fix, r=Mark-Simulacrum
Reenable static linking of libstdc++ on windows-gnu

Fixes https://github.com/rust-lang/rust/issues/67408

Verified locally that `rustc_driver` is now statically linked to libstdc++.
2019-12-22 02:40:01 +01:00
Mark Rousskov
dddd872427 Implement rustfmt running manually using ignore crate
This replaces cargo-fmt with rustfmt with --skip-children which should
allow us to format code without running into rust-lang/rustfmt#3930.

This also bumps up the version of rustfmt used to a more recent one.
2019-12-21 20:23:55 -05:00
Adam Perry
2b081abe94 Include formatting check in the test step for tidy. 2019-12-21 20:23:39 -05:00
Adam Perry
a08c56295a Implement ./x.py fmt [--check]. 2019-12-21 20:23:39 -05:00
Adam Perry
72a844dee7 bootstrap.py fetches rustfmt.
Co-Authored-By: Mark Rousskov <mark.simulacrum@gmail.com>
2019-12-21 20:23:39 -05:00
Mazdak Farrokhzad
7d297044d7
Rollup merge of #67491 - lzutao:res-map-or, r=Mark-Simulacrum
use Result::map_or for bootstrap
2019-12-21 19:07:44 +01:00
Lzu Tao
f3d7e03472 use Result::map_or for bootstrap 2019-12-21 17:04:41 +00:00
Mark Rousskov
28af652793 Drop petgraph dependency from bootstrap
It was essentially unused, likely leftover from a previous refactoring
iteration.
2019-12-21 10:54:15 -05:00
Mark Rousskov
1d9a1799e8 Remove newline from commit in toolstate 2019-12-19 22:32:07 -05:00
Mark Rousskov
8f20e67501
Rollup merge of #67432 - Mark-Simulacrum:fix-toolstate, r=Centril
Fix toolstate history format

We were inserting *before* the existing newline, so we should prepend it
not append it to our inserted string.
2019-12-19 17:53:57 -05:00
Mark Rousskov
380afc1fac
Rollup merge of #67351 - Mark-Simulacrum:always-channel, r=pietroalbini
Set release channel on non-dist builders

Toolstate publication only runs if the channel is "nightly" and
previously the toolstate builders did not know that the channel was
nightly (since they are not dist builders).

A look through bootstrap seems to indicate that nothing should directly
depend on the channel being set to `-dev` on the test builders, though
this may cause some problems with UI tests (if for some reason they're
dumping the channel into stderr), but we cannot find evidence of such so
hopefully this is fine.

r? @pietroalbini
2019-12-19 17:53:54 -05:00
Mark Rousskov
1787b2b5ab Fix toolstate history format
We were inserting *before* the existing newline, so we should prepend it
not append it to our inserted string.
2019-12-19 13:48:36 -05:00
Mazdak Farrokhzad
0f19977797
Rollup merge of #67286 - cuviper:configure-llvm, r=Dylan-DPC
Fix the configure.py TOML field for a couple LLVM options

The actual fields in `config.toml.example` have dashes, not underscores.
2019-12-19 10:29:54 +01:00
Mark Rousskov
cbd1e73124 Set release channel on non-dist builders
Toolstate publication only runs if the channel is "nightly" and
previously the toolstate builders did not know that the channel was
nightly (since they are not dist builders).

A look through bootstrap seems to indicate that nothing should directly
depend on the channel being set to `-dev` on the test builders, though
this may cause some problems with UI tests (if for some reason they're
dumping the channel into stderr), but we cannot find evidence of such so
hopefully this is fine.
2019-12-18 22:44:42 -05:00
Mateusz Mikuła
44603a5cd6 Reenable static linking of libstdc++ on windows-gnu 2019-12-18 22:48:24 +01:00
Mark Rousskov
6a400ee149 Bump stage0 2019-12-18 11:51:31 -05:00
Mark Rousskov
7f00a5f26a Revert "Auto merge of #67362 - Mark-Simulacrum:par-4-default, r=alexcrichton"
This reverts commit 3ed3b8bb7b, reversing
changes made to 99b89533d4.

We will reland a similar patch at a future date but for now we should get a nightly
released in a few hours with the parallel patch, so this should be
reverted to make sure that the next nightly is not parallel-enabled.
2019-12-17 16:28:33 -05:00
Mark Rousskov
5d4e59bc91 Disable cargo tests for now
These depend on rustc being bug-free and it looks like that's not
currently entirely the case (e.g., we know of at least one bug that
introduces nondeterminism).
2019-12-17 12:55:45 -05:00
Josh Stone
6c7c512020 Fix the configure.py TOML field for a couple LLVM options
The actual fields in `config.toml.example` have dashes, not underscores.
2019-12-13 14:00:47 -08:00
bors
3964a55ba5 Auto merge of #67077 - Aaron1011:build-llvm-in-binary, r=alexcrichton
rustc: Link LLVM directly into rustc again (take two)

This is a continuation of PR https://github.com/rust-lang/rust/pull/65703
2019-12-13 10:07:38 +00:00
bors
3eeb8d4f2f Auto merge of #67172 - jethrogb:jb/bootstrap-linker, r=alexcrichton
Bootstrap: change logic for choosing linker and rpath

This is a follow-up from #66957 and #67023. Apparently there was one more location with a hard-coded list of targets to influence linking.

I've filed #67171 to track this madness.

r? @alexcrichton
2019-12-12 19:52:27 +00:00
Aaron Hill
9245182420
Add comment explaining original maybe_install_llvm_dylib call 2019-12-11 09:50:12 -05:00
Aaron Hill
8b9c5396ca
Fix missing libLLVM.so in stage0 sysroot.
When we dynamically link against libLLVM.so (as opposed to statically
linking LLVM), we need libLLVM.so to be present in the stage0 sysroot,
so that stage1 tools (which are built against the stage0
compiler+sysroot) can see it at build time (when the linker is run)

See the comment in the commit for more details
2019-12-11 09:50:12 -05:00
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
786b9d0d62 Bootstrap: change logic for choosing linker and rpath 2019-12-09 09:46:55 +01: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