about summary refs log tree commit diff
path: root/src/ci/docker
AgeCommit message (Collapse)AuthorLines
2023-11-07add note to remember to update a url when bumping to gcc 10.1.0Rémy Rakic-0/+6
2023-11-07ci: bump gcc on dist x64 linux builder to 9.5Rémy Rakic-1/+1
Support for `-fuse-ld=lld` was added in GCC 9
2023-11-06Auto merge of #117607 - klensy:clang-17.0.4, r=Mark-Simulacrumbors-1/+1
bump clang version for dist-x86_64-linux from 17.0.2 to 17.0.4 This fixes few miscompiles, so nice to have. Release notes: https://discourse.llvm.org/t/llvm-17-0-3-released/74172 https://discourse.llvm.org/t/llvm-17-0-4-released/74548 >The next release will be 17.0.5, in two weeks 14th of November. Or maybe delay until 17.0.5?
2023-11-05bump clang version for dist-x86_64-linux from 17.0.2 to 17.0.4klensy-1/+1
This fixes few miscompiles, so nice to have.
2023-11-04pass `CODEGEN_BACKENDS` to dockerRémy Rakic-0/+1
2023-11-04Auto merge of #115274 - bjorn3:tidy_improvements, r=davidtwcobors-0/+16
Run tidy license checker on more workspaces The license checker didn't run on several workspaces before this PR. The same applied to the "external package sources" check. There were also two missing lockfiles which I have added now.
2023-11-03Revert "Auto merge of #117328 - lqd:cranelift-rocket, r=Mark-Simulacrum"Ralf Jung-1/+0
This reverts commit 1dfb6b162be402d8ca37e8aad4f58898b44e3a15, reversing changes made to bcb5798dd890a691644af9d371f3bd7fcc465584. That commit broke generating nightly rustc docs. Revert it until we can figure out how to have both, cranelift and docs.
2023-11-03Set some environment variables value only if ENABLE_GCC_CODEGEN is setGuillaume Gomez-6/+17
2023-11-02Add comment explaining why the ENABLE_GCC_CODEGEN env variable is neededGuillaume Gomez-0/+4
2023-11-02Rename `SKIP_CODEGEN_TESTS` into `ENABLE_GCC_CODEGEN`Guillaume Gomez-3/+3
2023-11-02Run codegen tests outside if not llvm-15Guillaume Gomez-2/+11
2023-11-02Skip codegen tests in llvm-15 CI checkGuillaume Gomez-2/+2
2023-11-02Force mangling version for rustc_codegen_gccGuillaume Gomez-2/+4
2023-11-02Fix rustc_codegen_gcc lto issueGuillaume Gomez-0/+4
2023-11-02Fix missing error libgccjit in CIGuillaume Gomez-0/+8
2023-10-30Auto merge of #117267 - RalfJung:miri-tests, r=Mark-Simulacrumbors-3/+28
update which targets we test Miri on I hope this doesn't cost too much time; running only the "pass" tests should be reasonably fast (1-2 minutes on my system). Fixes https://github.com/rust-lang/rust/issues/117167
2023-10-30update which targets we test Miri onRalf Jung-3/+28
2023-10-28pass `CODEGEN_BACKENDS` to dockerRémy Rakic-0/+1
2023-10-24Auto merge of #116998 - pcc:new-ndk2, r=onur-ozkanbors-7/+2
Improve android-ndk property interface Re-creating #102994 which was closed. --- PR #105716 added support for NDK r25b, and removed support for r15. Since the switch to r25b would have broken existing r15 users anyway, let's take the opportunity to make the interface more user friendly. Firstly move the android-ndk property to [build] instead of the targets. This is possible now that the NDK has obsoleted the concept of target-specific toolchains. Also make the property take the NDK root directory instead of the "toolchains/llvm/prebuilt/<host tag>" subdirectory.
2023-10-23Improve android-ndk property interfacePeter Collingbourne-7/+2
PR #105716 added support for NDK r25b, and removed support for r15. Since the switch to r25b would have broken existing r15 users anyway, let's take the opportunity to make the interface more user friendly. Firstly move the android-ndk property to [build] instead of the targets. This is possible now that the NDK has obsoleted the concept of target-specific toolchains. Also make the property take the NDK root directory instead of the "toolchains/llvm/prebuilt/<host tag>" subdirectory.
2023-10-22Update rustc-perf versionJakub Beránek-2/+2
2023-10-22Auto merge of #116950 - cuviper:ci-llvm-17, r=Mark-Simulacrumbors-0/+54
ci: add a runner for vanilla LLVM 17 For CI cost, this can be seen as replacing the llvm-14 runner we dropped in #114148. Also, I've set `IS_NOT_LATEST_LLVM` in the llvm-16 runner, since that's not the latest anymore.
2023-10-19ci: set IS_NOT_LATEST_LLVM for llvm-16Josh Stone-0/+4
2023-10-19ci: add a runner for vanilla LLVM 17Josh Stone-0/+50
2023-10-19Fix x64_64-gnu-llvm-15 CI testsJakub Beránek-28/+28
There were two command chains separated by `&&` in the script, and since `set -e` doesn't exit for chained commands, if the first chain has failed, the command would happily continue forward, ignoring any test failures.
2023-10-15Fix podman detection in CI scriptsNilstrieb-1/+1
When docker-podman compat was set up in a way that causes "docker" to be the argv[0] of podman, the previous detection did not work. This was for example the case in the compat package from nixpkgs. This checks the output and should work everywhere.
2023-10-10Add two lockfilesbjorn3-0/+16
2023-10-09Build GCC with support for BOLTJakub Beránek-1/+6
2023-10-08Drop all MIPS targets from CIJubilee Young-76/+1
2023-10-08Auto merge of #114623 - Kobzol:opt-dist-gha-summaries, r=Mark-Simulacrumbors-0/+6
Print some information from try builds to GitHub summary This PR adds some logs from `opt-dist` (the duration of the individual steps of the build pipeline, and the size of the resulting artifacts) to GitHub [job summaries](https://github.blog/2022-05-09-supercharging-github-actions-with-job-summaries/), in order to quickly show useful information right in the GHA CI job page, without needing to read the full log. [This](https://github.com/rust-lang-ci/rust/actions/runs/5810621086) is how the summary currently looks like. r? `@ghost`
2023-10-07Auto merge of #116416 - Kobzol:ci-host-llvm-17-0-2, r=Mark-Simulacrumbors-1/+1
Bump host compiler on x64 dist Linux to LLVM 17.0.2 17.0.0-rc3 had a bunch of miscompilations, and it's probably better in general not to use a RC version of LLVM long term on CI.
2023-10-04Bump host compiler on x64 dist Linux to LLVM 17.0.2Jakub Beránek-1/+1
2023-10-03Drop the wasm32 builderMark Rousskov-63/+0
This builder tested the wasm32-unknown-emscripten target, which is tier 2 (and so not eligible for testing). In the recent beta promotion, we ran into a problem with this target: emscripten doesn't support passing environment variables into the std environment, so we can't enable RUSTC_BOOTSTRAP for libtest in order to pass -Zunstable-options. We worked around this for the beta/stable branches, but given this problem, and its tier 2 status, just dropping the target's tests entirely seems warranted. Downgrading to tier 3 may also be a good idea, but that is a separate conversation not proposed here.
2023-10-02Add artifact size and step duration summaries from `opt-dist` to github job ↵Jakub Beránek-0/+6
summary
2023-10-01Auto merge of #115554 - Kobzol:single-cgu, r=Mark-Simulacrumbors-1/+2
Build `rustc` with a single CGU on x64 Linux This PR adds the `rust.codegen-units=1` setting when compiling the 64-bit Linux `rustc` artifact (the one used for try builds and Linux rustup distribution). This had mixed results in the past, however after the bump to LLVM 17, the results now seem pretty [incredible](https://github.com/rust-lang/rust/pull/115554#issuecomment-1706518199). Instruction counts, cycles, wall time, max RSS and even artifact sizes see large improvements. The last [try build](https://github.com/rust-lang-ci/rust/actions/runs/6077686494/job/16487768049) with this setting took 1h 8m, which is basically the same duration for try builds that we have seen recently. So there shouldn't be any large hit to CI/build time. I hope that this could potentially also reduce codegen noise of `rustc` a little bit, since small changes within a single `rustc` crate should no longer perturb optimizations because of CGU movement. We still do cross-crate LTO, so it won't eliminate it though. r? `@Mark-Simulacrum`
2023-09-30Auto merge of #115368 - loongarch-rs:none-tier2, r=pietroalbinibors-0/+2
Promote loongarch64-unknown-none* to Tier 2 MCP: https://github.com/rust-lang/compiler-team/issues/664
2023-09-28Build `rustc` with a single CGU on x64 LinuxJakub Beránek-1/+2
2023-09-28ci: upgrade to crosstool-ng 1.26.0WANG Rui-23/+5
2023-09-26Promote loongarch64-unknown-none* to Tier 2WANG Rui-0/+2
MCP: https://github.com/rust-lang/compiler-team/issues/664
2023-09-21Make ui-fulldeps --stage=1 builds in CIMichael Goulet-9/+12
2023-09-20Update browser-ui-test version to 0.16.10Guillaume Gomez-1/+1
2023-09-19Rollup merge of #115949 - GuillaumeGomez:update-browser-ui-test, r=notriddleMatthias Krüger-1/+1
Update browser-ui-test version It includes the fix from `@notriddle` (https://github.com/GuillaumeGomez/browser-UI-test/pull/537). r? `@notriddle`
2023-09-18Update browser-ui-test versionGuillaume Gomez-1/+1
2023-09-18Auto merge of #115795 - Kobzol:opt-dist-custom, r=Mark-Simulacrumbors-1/+1
Refactor `opt-dist` to simplify local building This PR refactors the `opt-dist` tool to make it easier to invoke it locally, outside of CI, and thus simplify building PGO/BOLT optimized `rustc` builds e.g. for distro maintainers. It should also make it easier to run the PGO/BOLT workflow locally e.g. to profile performance or debug issues (looking at you, https://github.com/rust-lang/rust/pull/115554).
2023-09-16Move to older, mirrored redox installMark Rousskov-1/+1
2023-09-16Bump to supported UbuntuMark Rousskov-2/+2
The 22.10 Ubuntu repositories were returning 404s in last stable build.
2023-09-12Refactor EnvironmentJakub Beránek-1/+1
2023-09-08Rollup merge of #115088 - LuuuXXX:issue-112009, r=albertlarsan68Guillaume Gomez-1/+2
Fix Step Skipping Caused by Using the `--exclude` Option The original code was overreacting to the `--exclude` option, https://github.com/rust-lang/rust/blob/eadf69a6c6edfe220fc5b1b659e46e271d75a3a1/src/bootstrap/builder.rs#L257-L260 For example: When `x test --exclude alloc` or `x test --exclude library/alloc` is passed, the entire libraray test is skipped. Related issues: https://github.com/rust-lang/rust/issues/112009
2023-09-08Fix Issue 112009LuuuX-1/+2
modify fuction clond() -> cloned() optimize the code Handle the problem that the pathset is empty and modify the judgment of the builder::tests::test_exclude_kind Delete unnecessary judegment conditions skip test for library/std duo to OOM in benches as library/alloc Add FIXME for WASM32
2023-09-08Rollup merge of #115345 - g0djan:godjan/tier2-wasi-threads, r=WaffleLapkinMatthias Krüger-2/+2
MCP661: Move wasm32-wasi-preview1-threads target to Tier 2 https://github.com/rust-lang/compiler-team/issues/661 >A tier 2 target must have value to people other than its maintainers. (It may still be a niche target, but it must not be exclusively useful for an inherently closed group.) The feature is already implemented in [wasi-sdk(](https://github.com/WebAssembly/wasi-sdk) (C toolchain for WASM), and four different WASM runtimes([Wasmtime](https://github.com/bytecodealliance/wasmtime), [WAMR](https://github.com/bytecodealliance/wasm-micro-runtime), [Wasmer](https://github.com/wasmerio/wasmer), [toywasm](https://github.com/yamt/toywasm)) are compatible with it. >A tier 2 target must have a designated team of developers (the "target maintainers") available to consult on target-specific build-breaking issues, or if necessary to develop target-specific language or library implementation details. This team must have at least 2 developers. >The target maintainers should not only fix target-specific issues, but should use any such issue as an opportunity to educate the Rust community about portability to their target, and enhance documentation of the target. We already have a team of 4 developers. See [src/doc/rustc/src/platform-support/wasm32-wasi-preview1-threads.md](https://github.com/rust-lang/rust/blob/master/src/doc/rustc/src/platform-support/wasm32-wasi-preview1-threads.md). The documentation is being updated in this PR as the first occurrence. >The target must not place undue burden on Rust developers not specifically concerned with that target. Rust developers are expected to not gratuitously break a tier 2 target, but are not expected to become experts in every tier 2 target, and are not expected to provide target-specific implementations for every tier 2 target. It doesn't as it’s built on top of existing wasm32-wasi tier-2 target and it only extends stdlib by implementing std:: thread::spawn/join. > The target must provide documentation for the Rust community explaining how to build for the target using cross-compilation, and explaining how to run tests for the target. If at all possible, this documentation should show how to run Rust programs and tests for the target using emulation, to allow anyone to do so. If the target cannot be feasibly emulated, the documentation should explain how to obtain and work with physical hardware, cloud systems, or equivalent. For build and running tests see *Building Rust programs* and *Testing* in [src/doc/rustc/src/platform-support/wasm32-wasi-preview1-threads.md](https://github.com/rust-lang/rust/blob/master/src/doc/rustc/src/platform-support/wasm32-wasi-preview1-threads.md). Only manual test running is supported at the moment with some tweaks in the test runner codebase. > The target must document its baseline expectations for the features or versions of CPUs, operating systems, libraries, runtime environments, and similar. See *Platform requirements* in [src/doc/rustc/src/platform-support/wasm32-wasi-preview1-threads.md](https://github.com/rust-lang/rust/blob/master/src/doc/rustc/src/platform-support/wasm32-wasi-preview1-threads.md) > If introducing a new tier 2 or higher target that is identical to an existing Rust target except for the baseline expectations for the features or versions of CPUs, operating systems, libraries, runtime environments, and similar, then the proposed target must document to the satisfaction of the approving teams why the specific difference in baseline expectations provides sufficient value to justify a separate target. >Note that in some cases, based on the usage of existing targets within the Rust community, Rust developers or a target's maintainers may wish to modify the baseline expectations of a target, or split an existing target into multiple targets with different baseline expectations. A proposal to do so will be treated similarly to the analogous promotion, demotion, or removal of a target, according to this policy, with the same team approvals required. >For instance, if an OS version has become obsolete and unsupported, a target for that OS may raise its baseline expectations for OS version (treated as though removing a target corresponding to the older versions), or a target for that OS may split out support for older OS versions into a lower-tier target (treated as though demoting a target corresponding to the older versions, and requiring justification for a new target at a lower tier for the older OS versions). Justified in https://github.com/rust-lang/compiler-team/issues/574 and I acknowledge these requirements and intend to ensure they are met. > Tier 2 targets must not leave any significant portions of core or the standard library unimplemented or stubbed out, unless they cannot possibly be supported on the target. >The right approach to handling a missing feature from a target may depend on whether the target seems likely to develop the feature in the future. In some cases, a target may be co-developed along with Rust support, and Rust may gain new features on the target as that target gains the capabilities to support those features. >As an exception, a target identical to an existing tier 1 target except for lower baseline expectations for the OS, CPU, or similar, may propose to qualify as tier 2 (but not higher) without support for std if the target will primarily be used in no_std applications, to reduce the support burden for the standard library. In this case, evaluation of the proposed target's value will take this limitation into account. It does not, as it’s built as an extension of the existing tier 2 target (wasm32-wasi). > The code generation backend for the target should not have deficiencies that invalidate Rust safety properties, as evaluated by the Rust compiler team. (This requirement does not apply to arbitrary security enhancements or mitigations provided by code generation backends, only to those properties needed to ensure safe Rust code cannot cause undefined behavior or other unsoundness.) If this requirement does not hold, the target must clearly and prominently document any such limitations as part of the target's entry in the target tier list, and ideally also via a failing test in the testsuite. The Rust compiler team must be satisfied with the balance between these limitations and the difficulty of implementing the necessary features. >For example, if Rust relies on a specific code generation feature to ensure that safe code cannot overflow the stack, the code generation for the target should support that feature. >If the Rust compiler introduces new safety properties (such as via new capabilities of a compiler backend), the Rust compiler team will determine if they consider those new safety properties a best-effort improvement for specific targets, or a required property for all Rust targets. In the latter case, the compiler team may require the maintainers of existing targets to either implement and confirm support for the property or update the target tier list with documentation of the missing property. Doesn't apply, the target re-uses existing backend and doesn't extend it > If the target supports C code, and the target has an interoperable calling convention for C code, the Rust target must support that C calling convention for the platform via extern "C". The C calling convention does not need to be the default Rust calling convention for the target, however. Target does not support C code >The target must build reliably in CI, for all components that Rust's CI considers mandatory. The target reliably builds in CI already https://github.com/rust-lang/rust/blob/master/src/ci/docker/host-x86_64/dist-various-2/Dockerfile#L143. >The approving teams may additionally require that a subset of tests pass in CI, such as enough to build a functional "hello world" program, ./x.py test --no-run, or equivalent "smoke tests". In particular, this requirement may apply if the target builds host tools, or if the tests in question provide substantial value via early detection of critical problems. The existing tier-2 target and this target as its extension [pass](https://github.com/rust-lang/rust/pull/112922#issuecomment-1634514924) for 14.5k+ tests/ui when tests are run manually(described in *Testing* in in [src/doc/rustc/src/platform-support/wasm32-wasi-preview1-threads.md](https://github.com/rust-lang/rust/blob/master/src/doc/rustc/src/platform-support/wasm32-wasi-preview1-threads.md). Can be tested in the CI as soon as the original target does. > Building the target in CI must not take substantially longer than the current slowest target in CI, and should not substantially raise the maintenance burden of the CI infrastructure. This requirement is subjective, to be evaluated by the infrastructure team, and will take the community importance of the target into account. It doesn’t as it only slightly extends standard library of the existing target > Tier 2 targets should, if at all possible, support cross-compiling. Tier 2 targets should not require using the target as the host for builds, even if the target supports host tools. N/a given as it only extends stdlib of the existing target. > In addition to the legal requirements for all targets (specified in the tier 3 requirements), because a tier 2 target typically involves the Rust project building and supplying various compiled binaries, incorporating the target and redistributing any resulting compiled binaries (e.g. built libraries, host tools if any) must not impose any onerous license requirements on any members of the Rust project, including infrastructure team members and those operating CI systems. This is a subjective requirement, to be evaluated by the approving teams. >As an exception to this, if the target's primary purpose is to build components for a Free and Open Source Software (FOSS) project licensed under "copyleft" terms (terms which require licensing other code under compatible FOSS terms), such as kernel modules or plugins, then the standard libraries for the target may potentially be subject to copyleft terms, as long as such terms are satisfied by Rust's existing practices of providing full corresponding source code. Note that anything added to the Rust repository itself must still use Rust's standard license terms. Requirement are met, no legal issues. > Tier 2 targets must not impose burden on the authors of pull requests, or other developers in the community, to ensure that tests pass for the target. In particular, do not post comments (automated or manual) on a PR that derail or suggest a block on the PR based on tests failing for the target. Do not send automated messages or notifications (via any medium, including via `````@)````` to a PR author or others involved with a PR regarding the PR breaking tests on a tier 2 target, unless they have opted into such messages. >Backlinks such as those generated by the issue/PR tracker when linking to an issue or PR are not considered a violation of this policy, within reason. However, such messages (even on a separate repository) must not generate notifications to anyone involved with a PR who has not requested such notifications. I acknowledge these requirements and intend to ensure they are met. > The target maintainers should regularly run the testsuite for the target, and should fix any test failures in a reasonably timely fashion. The tests are run manually every week by `````@g0djan````` now. While target has been in Tier 3, 2 issues(https://github.com/rust-lang/rust/issues/114608 and https://github.com/rust-lang/rust/issues/114610) have been raised. Both issues were addressed the same day and fixes has been merged by now. > All requirements for tier 3 apply. Target was initially accepted as a Tier 3 target in https://github.com/rust-lang/rust/pull/112922 .