about summary refs log tree commit diff
path: root/src/ci/docker/host-x86_64/dist-x86_64-linux/Dockerfile
AgeCommit message (Collapse)AuthorLines
2025-09-26Rename `rust.use-lld` to `rust.bootstrap-override-lld`Jakub Beránek-1/+1
2025-07-15Fix handling of SCRIPT_ARG in docker imagesNikita Popov-3/+1
Instead of making this a build parameter, pass the SCRIPT as an environment variable. To this purpose, normalize on always referring to a script in `/scripts`. For i686-gnu-nopt-2 I had to create a separate script, because Docker seems to be really terrible at command line argument parsing, so it's not possible to pass an environment variable that contains whitespace.
2025-05-30Do not run PGO/BOLT in x64 Linux alt buildsJakub Beránek-8/+7
Signed-off-by: Jakub Beránek <berykubik@gmail.com>
2025-04-28ci: use aws codebuild for the `dist-x86_64-linux` jobMarcoIeni-1/+1
2025-03-13Use GCC for building GCCJakub Beránek-1/+3
2025-02-28Build GCC on the Linux x64 dist runnerJakub Beránek-1/+1
2025-01-27Fix 2/4 tests skipped by opt-distBen Kimock-0/+2
2025-01-21Make it possible to build GCC on CIJakub Beránek-0/+1
This is the first step to enable download of precompiled GCC
2025-01-11ci: Organise shared helper scriptsKajetan Puchalski-4/+6
Move shared helper scripts used by Docker builds under docker/scripts.
2024-12-27Auto merge of #134690 - clubby789:ci-clang-lto, r=Kobzolbors-0/+6
CI: Add LTO support to clang in dist-x86_64-linux After https://github.com/rust-lang/cc-rs/pull/1279, we attempt to pass `-flto=thin` to clang. In `dist-x86_64-linux`, we don't build clang with the `LLVMgold.so` library so this fails. This attempts to resolve this First, pass the binutils plugin include directory to Clang, [which will build the library](https://github.com/llvm/llvm-project/blob/2d6d723a85c2d007b0359c206d66cd2e5a9f00e1/llvm/docs/GoldPlugin.rst#how-to-build-it) Second, this library depends on the *version of libstdc++ that we built* specifically. However, despite both the RPATH and LD_LIBRARY_PATH pointing to `/rustroot/lib`, we incorrectly resolve to the system libstdc++, which doesn't load. ``` # LD_DEBUG=libs,files 2219: file=libstdc++.so.6 [0]; needed by /rustroot/bin/../lib/LLVMgold.so [0] 2219: find library=libstdc++.so.6 [0]; searching 2219: search path=/rustroot/bin/../lib/../lib (RPATH from file /rustroot/bin/../lib/LLVMgold.so) 2219: trying file=/rustroot/bin/../lib/../lib/libstdc++.so.6 2219: search path=/usr/lib64/tls:/usr/lib64 (system search path) 2219: trying file=/usr/lib64/tls/libstdc++.so.6 2219: trying file=/usr/lib64/libstdc++.so.6 ``` Using `LD_PRELOAD` causes it to correctly load the library I think this is probably not the most maintainable way to do this, so opening to see if this is desired and if there's a better way of doing this
2024-12-27Add LTO support to clang in CIclubby789-0/+6
2024-12-26Strip debuginfo from rustc-main and rustdocclubby789-0/+1
2024-12-20Revert "Auto merge of #133809 - mrkajetanp:ci-aarch64-dist, r=Kobzol"Jakub Beránek-5/+4
This reverts commit 023521e6825edfa6df01e392520d7cb120eab158, reversing changes made to c434b4b4b6cd20560c5b32e80b2b22618a4da3dd.
2024-12-18ci: Organise shared helper scriptsKajetan Puchalski-4/+5
Move shared helper scripts used by Docker builds under docker/scripts.
2024-08-25move and rename zstd scriptRémy Rakic-3/+3
move it where it's used, and name it like the other scripts
2024-08-09Install zstd in dist builder image.Kyle Huey-0/+4
Build libzstd from source because the EPEL package is built without fPIC.
2024-08-09Enable zstd for debug compression.Kyle Huey-0/+1
Set LLVM_ENABLE_ZSTD alongside LLVM_ENABLE_ZLIB so that --compress-debug-sections=zstd is an option. Use static linking to avoid a new runtime dependency. Add an llvm.libzstd bootstrap option for LLVM with zstd. Set it off by default except for the dist builder. Handle llvm-config --system-libs output that contains static libraries.
2024-06-12ci: Update centos:7 to use vault reposJosh Stone-1/+5
CentOS 7 is going EOL on June 30, after which its package repos will no longer exist on the regular mirrors. We'll still be able to access packages from the vault server though, and can start doing so now. This affects `dist-i686-linux` and `dist-x86_64-linux`. I also removed `epel-release` because we were only using that for its `cmake3`, but we've been building our own version for a while.
2024-05-20refactor(ci/docker/dist-x86_64-linux): remove rustc-perf downloadingBernardo Meurer Costa-8/+0
It is now available as a submodule in src/tools/rustc-perf, and is initialized when building opt-dist
2024-02-17Update cargoWeihang Lo-0/+1
perl-core is added for building OpenSSL v3 See https://github.com/openssl/openssl/blob/openssl-3.2.1/NOTES-PERL.md
2023-10-22Update rustc-perf versionJakub Beránek-2/+2
2023-09-28Build `rustc` with a single CGU on x64 LinuxJakub Beránek-1/+2
2023-09-12Refactor EnvironmentJakub Beránek-1/+1
2023-09-04Mirror the rustc-perf sourceMark Rousskov-1/+1
This avoids issues with the GitHub /archive/ links which can be somewhat unreliable and are currently causing CI issues.
2023-07-25CI: fix CMake installation for 32 and 64bit `dist` LinuxJakub Beránek-2/+1
2023-07-17Auto merge of #113714 - Kobzol:ci-cmake, r=nikicbors-0/+4
CI: build CMake 3.20 to support LLVM 17 LLVM 17 will require CMake at least 3.20, so we have to go back to building our own CMake on the Linux x64 dist builder. r? `@nikic`
2023-07-16CI: build CMake 3.20 to support LLVM 17Jakub Beránek-0/+4
2023-07-09Port PGO/LTO/BOLT optimized build pipeline to RustJakub Beránek-2/+5
2023-05-31Remove const eval limit and implement an exponential backoff lint insteadOli Scherer-1/+1
2023-03-15Bump to latest rustc-perfMark Rousskov-2/+2
This removes a dependency on ntapi 0.3.x which failed to compiled with latest beta. rust-lang/rustc-perf@93dc60d995a57c3cab8d7fb90a6fc7f9f7c5cd0f removed that dependency in the upstream rustc-perf.
2023-01-24Port pgo.sh to PythonJakub Beránek-1/+1
2022-12-02reduce docker image sizes by cleaning cache/squashing stepsklensy-1/+2
2022-11-01Revert "ci: Bring back ninja for dist builders"Jakub Beránek-1/+1
2022-10-30Auto merge of #103295 - ishitatsuyuki:ninja, r=cuviperbors-1/+1
ci: Bring back ninja for dist builders The primary reason for this is that make can result in a substantial under utilization of parallelism (noticed while testing on a workstation), mostly due to the submake structure preventing good dependency tracking and scheduling. In f758c7b2a78 (Debian 6 doesn't have ninja, so use make for the dist builds) llvm.ninja was disabled due to lack of distro package. This is no longer the case with the CentOS 7 base, so bring ninja back for a performance boost.
2022-10-23Add `rust.lto` config optionJakub Beránek-1/+2
2022-10-20ci: Bring back ninja for dist buildersTatsuyuki Ishi-1/+1
The primary reason for this is that make can result in a substantial under utilization of parallelism, mostly due to the submake structure preventing good dependency tracking and scheduling. In f758c7b2a78 (Debian 6 doesn't have ninja, so use make for the dist builds) llvm.ninja was disabled due to lack of distro package. This is no longer the case with the CentOS 7 base, so bring ninja back for a performance boost.
2022-09-14Distribute bootstrap in CI artifactsTuna-1/+1
- Add a new `bootstrap` component Originally, we planned to combine this with the `rust-dev` component. However, I realized that would force LLVM to be redownloaded whenever bootstrap is modified. LLVM is a much larger download, so split this to get better caching. - Build bootstrap for all tier 1 and 2 targets
2022-08-03Clarify the comment about CentOS 7's kernel versionJosh Stone-1/+3
2022-08-03Increase the minimum linux-gnu versionsJosh Stone-70/+23
This is implementing the MCP from rust-lang/compiler-team#493. It is increasing the minimum requirements of a couple Tier 1 targets, and others at lower tiers, so this should go through FCP sign-offs for both `T-compiler` and `T-release`. The new `linux-gnu` baseline is kernel 3.2 and glibc 2.17. We will also take that kernel as the minimum floor for _all_ `*-linux-*` targets, so it may be broadly assumed in the implementation of the standard library. That does not preclude specific targets from having greater requirements where it makes sense, like a new arch needing something newer, or a platform like `linux-android` choosing a newer baseline.
2022-07-28bump rustc-perf commitJane Losare-Lusby-2/+2
2022-07-24Revert "Revert "Use ICF (identical code folding) for building rustc""Jubilee Young-1/+2
This reverts commit rust-lang/rust@45575d23f316af7476ccd0a895234ac59c47a6be, thereby enabling identical code folding again.
2022-07-18Revert "Use ICF (identical code folding) for building rustc"Jakub Beránek-2/+1
2022-07-17Use LLD linker for compiling rustc on Linux x64 and use ICF for binary size ↵Jakub Beránek-1/+2
optimization
2022-05-23Add bitmaps and diesel to `rustc` PGO benchmarksJakub Beránek-2/+2
2022-04-07Update rustc-perf version used in CI and also the corresponding PGO benchmarksJakub Beránek-1/+2
2021-11-13Change paths for `dist` command to match the components they generateJoshua Nelson-1/+1
Before, you could have the confusing situation where the command to generate a component had no relation to the name of that component (e.g. the `rustc` component was generated with `src/librustc`). This changes the name to make them match up.
2021-10-31Use ubuntu image to download openssl, curl sources, cacert.pemHans Kratz-8/+19
2021-10-03Update Let's Encrypt ROOT CA certificate in dist-(i686|x86_64)-linux docker ↵Hans Kratz-0/+5
images
2021-08-24PGO for LLVM builds on x86_64-unknown-linux-gnu in CIMark Rousskov-0/+6
This shows up to 5% less instruction counts on multiple benchmarks, and up to 19% wins on the -j1 wall times for rustc self-compilation. We can afford to spend the extra cycles building LLVM essentially once more for the x86_64-unknown-linux-gnu CI build today. The builder finishes in around 50 minutes on average, and this adds just 10 more minutes. Given the sizeable improvements in compiler performance, this is definitely worth it.
2021-07-10Use clang 12.0.1 on dist-x86_64/i686-linuxNikita Popov-3/+1
The LLD + ThinLTO __morestack bug has been fixed in 12.0.1, so we can now update our clang version. This also means that we no longer need to build Python 2.