1004 Commits

Author SHA1 Message Date
bors
f0073a59cf Auto merge of #80435 - pietroalbini:compression-formats, r=Mark-Simulacrum
Only produce .xz tarballs on CI

This PR adds a `./configure` option to choose which tarball compression formats to produce, and changes our CI configuration to only produce `.xz` tarballs. The release process will then recompress everything into `.gz` when producing a release.

This will drastically reduce our storage costs for CI artifacts, as we'd stop storing the same data twice. **Stable, beta and nightly releases will not be affected by this at all.**

Before landing this we'll need to increase the VM size of our release process, to recompress everything in a reasonable amount of time.
r? `@Mark-Simulacrum`
2020-12-31 00:23:13 +00:00
Vadim Petrochenkov
4d2d0bad4e Remove compile-fail test suite 2020-12-29 23:39:56 +03:00
Pietro Albini
d0d0ee0b5d
ci: stop producing gzip-compressed dist tarballs 2020-12-29 11:56:25 +01:00
Mark Rousskov
a448f88b69 Utilize PGO for rustc linux dist builds
This implements support for applying PGO to the rustc compilation step (not
standard library or any tooling, including rustdoc). Expanding PGO to more tools
is not terribly difficult but will involve more work and greater CI time
commitment.

For the same reason of avoiding greater time commitment, this currently avoids
implementing for platforms outside of x86_64-unknown-linux-gnu, though in
practice it should be quite simple to extend over time to more platforms. The
initial implementation is intentionally minimal here to avoid too much work
investment before we start seeing wins for a subset of Rust users.

The choice of workloads to profile here is somewhat arbitrary, but the general
rationale was to aim for a small set that largely avoided time regressions on
perf.rust-lang.org's full suite of crates. The set chosen is libcore, cargo (and
its dependencies), and a few ad-hoc stress tests from perf.rlo. The stress tests
are arguably the most controversial, but they benefit those cases (avoiding
regressions) and do not really remove wins from other benchmarks.

The primary next step after this PR lands is to implement support for PGO in
LLVM. It is unclear whether we can afford a full LLVM rebuild in CI, though, so
the approach taken there may need to be more staggered. rustc-only PGO seems
well affordable on linux at least, giving us up to 20% wall time wins on some
crates for 15 minutes of extra CI time (1 hour up from 45 minutes).

The PGO data is uploaded to allow others to reuse it if attempting to reproduce
the CI build or potentially, in the future, on other platforms where an
off-by-one strategy is used for dist builds at minimal performance cost.
2020-12-22 12:23:37 -05:00
David Wood
fb75c329c5
ci: use 20.04 on x86_64-gnu-nopt builder
This commit switches the x86_64-gnu-nopt builder to use Ubuntu 20.04,
which contains a more recent gdb version than Ubuntu 16.04 (newer gdb
versions fix a bug that Split DWARF can trigger, see
rust-lang/rust#77177 for motivation). x86_64-gnu-nopt is chosen because
it runs compare modes, which is how Split DWARF testing is implemented
in rust-lang/rust#77177.

Signed-off-by: David Wood <david@davidtw.co>
2020-12-10 15:04:48 +00:00
Sreehari S
7e00222aab add enable-full-tools to freebsd builds to prevent occasional link errors when compiling rust programs 2020-11-27 14:21:23 -08:00
Mark Rousskov
457329a77b Mirror centos vault to S3 2020-11-25 22:01:15 -05:00
Lzu Tao
6bfe27a3e0 Drop support for cloudabi targets 2020-11-22 17:11:41 -05:00
DevJPM
b8f682b5e2 Fixed missing / bad header when cross-compiling to i686
It seems that by default the 32-bit headers are not actually installed
when installing development tooling. As we're using gcc headers,
we need to install them as an extra package.

See for reference:
- https://stackoverflow.com/a/54082790
- https://askubuntu.com/a/106092

Also removed the now unused arm tooling
2020-11-15 14:56:18 +01:00
DevJPM
a015c21f16 Applied LLVM 9 fixes to LLVM 9 PR CI Dockerfile
Now with LLVM 9 being the minimum supported version, we can
finally remove the hacks in the dockerfile.

This wasn't in the main PR bumping the version as I didn't quite
understand what's going on and needed here.
2020-11-15 13:17:59 +01:00
DevJPM
63235651e8 explicitly add llvm-9-dev in dockerfile
apparently llvm-8-tools already had llvm-8-dev as a dependency
which was removed in llvm-9-tools, so we need to explicitly pull
llvm-9-dev to make a build
2020-11-12 14:39:47 +01:00
DevJPM
f8a32e9a4e Bumped minimal tested LLVM version to 9
This bumps the minimal tested llvm version to 9.
This should enable supporting newer LLVM features (and CPU extensions).
2020-11-12 14:39:47 +01:00
Jethro Beekman
d2ad47269b Linux dist: don't include unique symbols in libLLVM 2020-11-11 14:46:04 +01:00
Dylan DPC
4e0695b79f
Rollup merge of #78746 - pietroalbini:i686-freebsd, r=Mark-Simulacrum
Demote i686-unknown-freebsd to tier 2 compiler target

While technically the `i686-unknown-freebsd` target has been a tier 2 development platform for a long time, with full toolchain tarballs available on static.rust-lang.org, due to a bug in the manifest generation the target was never available for download through rustup.

The infrastructure team privately inquired the FreeBSD package maintainers, and they weren't relying on those tarballs either, so it's a fair assumption to say practically nobody is using those tarballs.

This PR then removes the CI builder that produces full tarballs for the target, and moves the compilation of `rust-std` for the target in `dist-various-2`. The `x86_64-unknown-freebsd` target is *not* affected.

cc `@rust-lang/infra` `@rust-lang/compiler` `@rust-lang/release`
r? `@Mark-Simulacrum`
2020-11-09 19:06:57 +01:00
Dylan DPC
391136ed58
Rollup merge of #77016 - Mark-Simulacrum:clippy-tests, r=pietroalbini
Test clippy on PR CI on changes

This runs the tools builder (which builds and tests tools, including clippy) when the clippy submodule changes. This essentially returns us to the prior state when clippy was a submodule; it makes sense for us to test it on CI when it changes. It might make sense for it to be tested regardless of changing but it is somewhat rare for it to fail and we don't want to add to CI time for the majority of PRs which don't affect it.

Fixes #76999.
2020-11-09 19:06:42 +01:00
Dylan DPC
50086afb5d
Rollup merge of #78228 - pietroalbini:finally, r=Mark-Simulacrum
Promote aarch64-unknown-linux-gnu to Tier 1

This PR promotes the `aarch64-unknown-linux-gnu` target to Tier 1, as proposed by [RFC 2959]:

* The `aarch64-gnu` CI job is moved from `auto-fallible` to `auto`.
* The platform support documentation is updated, uplifting the target to Tiert 1 with a note about missing stack probes support.
* Building the documentation is enabled for the target, as we produce the `rust-docs` component for all Tier 1 platforms.

[RFC 2959]: https://github.com/rust-lang/rfcs/pull/2959
2020-11-09 01:13:33 +01:00
Mark Rousskov
d847299674 Run tools builder on subtree changes 2020-11-07 21:26:42 -05:00
Mark Rousskov
3ca882986b Add debug asserts to PR builder
This is helpful to catch slightly more bugs before things hit main CI, and
doesn't cost too much extra CI time.
2020-11-06 14:32:14 -05:00
Mark Rousskov
51331e4739 Re-enable debug and LLVM assertions
Historically we've disabled these assertions on a number of platforms with the
goal of speeding up CI. Now, though, having migrated to GitHub actions, CI is
already pretty fast, and these debug assertions do bring us some value.

This does leave in some debug assertions that are performance-related: macOS
currently hovers at just under 2 hours.

There are also some other builders which have debug and LLVM assertions
disabled:

llvm-8, PR builder:

In one view, this builder tests our support for older LLVMs. But in reality, a
lot of our tests already disable themselves on older LLVMs, and I think our
general stance is that we really only support the in-tree LLVM. Plus, we really
want CI times on this builder to be really low, as it's run on *every* PR --
that's a lot of CI time.

test-various:

This disables debug asserts still -- as noted in the Dockerfile, we test code
size, and we need debug asserts off for that to work well.
2020-11-06 14:32:14 -05:00
Yuki Okushi
7931b2454d
Rollup merge of #78666 - sasurau4:fix/shellcheck-error, r=jyn514
Fix shellcheck error

## Overview

Helps with #77290

This pr fix only errors of shellcheck, the result of `git ls-files '*.sh' | xargs shellcheck --severity=error`.

Fixing error are following.

- https://github.com/koalaman/shellcheck/wiki/SC2148
- https://github.com/koalaman/shellcheck/wiki/SC1008

Disable error following.
- https://github.com/koalaman/shellcheck/wiki/SC2068
2020-11-07 01:02:14 +09:00
Daiki Ihara
5ea028ef76 ignore shellcheck error SC2068 2020-11-06 20:33:12 +09:00
Daiki Ihara
a1af001a55 fix shellcheck error of SC2068 2020-11-06 20:33:12 +09:00
Daiki Ihara
ce4c124292 fix shellcheck error of SC1008 2020-11-06 20:33:12 +09:00
Daiki Ihara
f197da655f fix shellcheck error of SC2148 2020-11-06 20:33:12 +09:00
Pietro Albini
874cbb88e0
ci: build docs for aarch64-unknown-linux-gnu 2020-11-05 11:54:32 +01:00
Pietro Albini
54a0a98347
ci: gate on aarch64-gnu passing tests 2020-11-05 11:54:29 +01:00
Pietro Albini
308dbdd9fe
ci: bump actions/checkout to version 2
This was recommended by GitHub Support to try reducing the things that
could've caused #78743. I checked the changelog and there should be no
practical impact for us (we already set an explicit fetch-depth).
2020-11-05 00:05:20 +01:00
Pietro Albini
53c1eb7a26
ci: demote i686-unknown-freebsd to tier 2 compiler target
While technically the i686-unknown-freebsd target has been a tier 2
development platform for a long time, with full toolchain tarballs
available on static.rust-lang.org, due to a bug in the manifest
generation the target was never available for download through rustup.

The infrastructure team privately inquired the FreeBSD package
maintainers, and they weren't relying on those tarballs either, so it's
a fair assumption to say practically nobody is using those tarballs.

This PR then removes the CI builder that produces full tarballs for the
target, and moves the compilation of rust-std for the target in
dist-various-2.

The x86_64-unknown-freebsd target is *not* affected.
2020-11-04 18:38:49 +01:00
Josh Stone
d9cbd192eb ci: update x86_64-gnu and x86_64-gnu-debug to ubuntu:20.04
The former `ubuntu:19.10` reached EOL in July, 2020, whereas
`ubuntu:20.04` is an LTS release supported until 2025.

These are non-dist CI images, so the impact should be low.
2020-10-28 17:26:03 -07:00
Mara Bos
76e51b8987 Rollup merge of #78309 2020-10-24 11:17:02 +02:00
Mara Bos
21bd9eea74 Use own mirror for linux headers in musl-toolchain CI script. 2020-10-24 11:16:53 +02:00
Jonas Schievink
f3265fec7a Fix Ubuntu download URL 2020-10-23 23:52:06 +02:00
Jake Goulding
d959011de0 Update Xcode beta version to allow aarch64-apple-darwin to compile again 2020-10-14 13:51:28 -04:00
Yuki Okushi
16612a9292
Rollup merge of #77239 - shepmaster:silicon-ci-plus, r=pietroalbini
Enable building Cargo for aarch64-apple-darwin

r? @ghost
2020-10-14 06:02:12 +09:00
bors
d772879df3 Auto merge of #77762 - pietroalbini:dist-build-manifest, r=Mark-Simulacrum
Dist build manifest

This PR makes two changes that should remove a significant chunk of the time spent in our release process: cloning the `rust-lang/rust` monorepo, all its submodules, and building `bootstrap` to then invoke `build-manifest`:

* `build-manifest` doesn't rely on a clone of the monorepo being present anymore. The only remaining bit of information it fetched from it (the Rust version) is instead bundled in the binary.
* A new "component" is added, `build-manifest`. That component includes a prebuilt version of the tool, and it's *not* included in the Rustup manifest. This will allow `promote-release` to directly invoke the tool without interacting with our build system.
* The Linux x86_64 CI is changed to also build the component mentioned above. It's the only CI builder tasked to do so, and to cleanly support this a new `--include-default-paths` flag was added to `./x.py`.
* The `BUILD_MANIFEST_NUM_THREADS` environment variable is added to configure the number of threads at runtime.

This PR is best reviewed commit-by-commit.
r? `@Mark-Simulacrum`
2020-10-13 12:11:47 +00:00
bors
e8529c79cc Auto merge of #77759 - tblah:fix_riscv_qemu, r=pietroalbini
ci: Fix riscv64gc linux test QEMU fault, plus doc link fix

Newer versions of the `qemu` package (used for riscv64gc-unknown-linux-gnu testing) don't work with the version of the RISC-V bootloader we were using. a4a0342cf5  bumps to a revision which should fix the problem.

e0b033e965 fixes a documentation failure I encountered while running the tests.
2020-10-13 08:27:01 +00:00
Jake Goulding
eb0c996ee2 Configure jemalloc for cross-compilation to aarch64-apple-darwin 2020-10-12 16:36:46 -04:00
Jake Goulding
5ae5b0e790 Enable building Cargo for aarch64-apple-darwin 2020-10-12 13:58:03 -04:00
Pietro Albini
24d04ccd39
ci: also build the build-manifest component on dist-x86_64-linux 2020-10-12 19:53:26 +02:00
bors
d9b931669b Auto merge of #75914 - arlosi:aarch64-ci, r=pietroalbini
Promote aarch64-pc-windows-msvc to Tier 2 Development Platform

Adds a GitHub Actions CI build for `aarch64-pc-windows-msvc` via cross-compilation on an x86_64 host.

This promotes `aarch64-pc-windows-msvc` from a Tier 2 Compilation Target (std) to a Tier 2 Development Platform (std+rustc+cargo+tools).

Fixes #72881

r? `@pietroalbini`
2020-10-12 10:17:48 +00:00
bors
576e2277ac Auto merge of #75991 - shepmaster:silicon-ci, r=pietroalbini
Set up CI for aarch64-apple-darwin
2020-10-11 23:23:48 +00:00
Tom Eccles
a4a0342cf5 ci: disabled: riscv: work around QEMU regression
This bumps the version of the bbl bootloader not to perform 64-bit
accesses to the PLIC. Doing so resulted in the QEMU test machine to fail
to boot:

bbl loader
../machine/mtrap.c:21: machine mode: unhandlable trap 7 @ 0x0000000080001f6e
Power off

Signed-off-by: Tom Eccles <tom.eccles@codethink.co.uk>
2020-10-09 16:11:18 +01:00
Mark Rousskov
bcab97c12e Check all Cargo targets on CI 2020-10-03 09:53:13 -04:00
Jonas Schievink
0c5f0b1c69
Rollup merge of #77453 - pietroalbini:ci-no-more-azure, r=Mark-Simulacrum
Stop running macOS builds on Azure Pipelines

The Infrastructure Team agreed to migrate macOS builds to GitHub Actions, so this commit stops running those builders on Azure Pipelines. The GitHub Actions runners are already configured to upload to the production bucket.

We can't still fully remove the Azure Pipelines configuration, as we still need to have that available until no stable releases run any of their builds on Azure Pipelines anymore. I'll open an issue to track fully removing our Azure Pipelines setup once the PR is merged.

r? @Mark-Simulacrum
2020-10-02 20:27:18 +02:00
Pietro Albini
b9070f3fd4
ci: stop running macOS builds on Azure Pipelines 2020-10-02 16:15:05 +02:00
Pietro Albini
b710f9c5d5
ci: switch to environment files to change the environment on GHA
See GitHub's blog post on why the change was necessary:

    https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/
2020-10-01 19:26:50 +02:00
Jake Goulding
225ec813a9 Add a cross-compiling aarch64-apple-darwin CI builder 2020-10-01 07:53:38 -04:00
Jonas Schievink
a4dc8dae02
Rollup merge of #77280 - petrochenkov:llvmcomp, r=Mark-Simulacrum
Ensure that all LLVM components requested by tests are available on CI

Addresses https://github.com/rust-lang/rust/pull/75064#issuecomment-667722652

I used an environment variable because passing a command line option all the way from CI to compiletest would be just too much hassle for this task.
I added a new variable, but any of the already existing ones defined by CI could be used instead.
r? @Mark-Simulacrum
2020-09-30 20:56:09 +02:00
bors
12f667fac3 Auto merge of #77294 - shepmaster:try-anchors, r=pietroalbini
Use YAML anchors for try builds

r? `@pietroalbini`
2020-09-30 07:57:48 +00:00
Tyler Mandry
63eaa60294 Use --host='' instead of --host ''
Trying to fix a problem in CI. Maybe some version of Docker is not
passing '' args correctly?
2020-09-29 20:13:52 +00:00