about summary refs log tree commit diff
path: root/src/ci/docker/README.md
AgeCommit message (Collapse)AuthorLines
2025-09-16Update the minimum external LLVM to 20Josh Stone-4/+4
2025-04-05Update the minimum external LLVM to 19Josh Stone-4/+4
2025-03-03Fix docker run-local docsEric Huss-2/+2
2025-02-17Update documentationJakub Beránek-3/+3
2025-01-17Drop MIPS glibc 2.23 patches that reside in crosstool-ng nowJens Reidel-8/+0
Signed-off-by: Jens Reidel <adrian@travitia.xyz>
2025-01-07Update documentationJakub Beránek-13/+14
2024-12-29Document how to run the split Docker pipelinesJakub Beránek-0/+6
2024-12-23Link to dev guide on Docker testingclubby789-0/+4
2024-08-13Update `crosstool-ng` for loongarch64WANG Rui-4/+4
The current cross-compilation toolchain for the LoongArch64 target consists of GCC 13.2.0, Binutils 2.40, and Glibc 2.36. However, Binutils 2.40 has known issues that in broken binaries without any error reports: - https://github.com/rust-lang/rust/issues/121289 - https://github.com/cross-rs/cross/issues/1538 This patch upgrades the cross-compilation toolchain for the LoongArch64 target to resolve these issues. - GCC: 13.2.0 -> 14.2.0 - Binutils: 2.40 -> 2.42 The new binaries remain compatible with the existing GCC 13.2.0/Glibc 2.36 distribution, and no issues have been identified.
2024-06-23ci: Add support for dist-loongarch64-muslWANG Rui-0/+16
2024-06-04ci: use GCC 13 as cross compiler in `dist-aarch64-linux`Alan Wu-1/+1
I'm proposing this GCC upgrade since it addresses bug #125619. The regression in question affects stable release consumers who tend to have no exposure to Rust build tools, so if at all possible, I would like to have it resolved in the next stable release. I have tried to fix the bug in `compiler-builtins`, which led to submitting a PR for `compiler-rt` in upstream LLVM, but it may take a long time before these upstreams address this regression. A summary of why upgrading GCC solves the regression follows. `__multc3()` is a builtin function `compiler-builtins` exposes for specifically aarch64, non-Windows targets [1]. The object file for it is included in `staticlib` archives through `libstd`. The implementation for `__multc3()` is from `multc3.c`, part of LLVM's `compiler-rt`. Upstream `compiler-rt` normally builds the C file using the Clang from the same LLVM version. On the other hand, `compiler-builtins` builds the C file using GCC, outside of the usual LLVM build system. The upstream implementation doesn't have feature detection which works for GCC version older than 10, and ends up producing an unlinkable object. Upstream LLVM might be slow to respond to this issue as they might deem `compiler-builtin` as doing something out of the ordinary from their perspective. They might reasonably assume everyone builds `compiler-rt` through LLVM's build system. I have done the following to test this change: - verified that a local build without this patch exhibits the regression. - verified that with this patch, the object for `__multc3()` has no reference to undefined functions in the symbol table. - verified that with this patch, `rustc` is usable to build Ruby with YJIT, and that the reported regression is resolved. [1]: https://github.com/rust-lang/compiler-builtins/blob/c04eb9e1afb72bdf943f5e5d77b3812f40526602/build.rs#L524-L539
2024-04-16Change the output artifact path to `$root_dir/obj/$image` when running locallyDianQK-7/+4
2023-09-28ci: upgrade to crosstool-ng 1.26.0WANG Rui-2/+2
2023-08-02Add more context to `quit_if_file_exists` in `configure.py`Trevor Gross-1/+2
Currently, having a dirty `obj/` directory is sufficient to abort CI tests. This results in errors like the following: ``` ... == end clock drift check == sccache: Starting the server... configure: error: Existing 'config.toml' detected. == clock drift check == ... ``` This is subtle and doesn't give a good idea as to what causes the issue. With this patch, the error becomes more prominent and a resolution is suggested: ``` == end clock drift check == sccache: Starting the server... configure: ERROR: Existing 'config.toml' detected. Exiting Is objdir '/home/tmgross/projects/rust/obj' clean? == clock drift check == ```
2023-06-05ci: Upgrade loongarch64-linux-gnu GCC to 13.1.0WANG Rui-1/+1
2023-05-12ci: Add support for dist-loongarch64-linuxWANG Rui-0/+16
Co-Authored-By: YANG Xiaojuan <yangxiaojuan@loongson.cn>
2023-04-26ci: refactor crosstool-ng to use mini-defconfigJosh Stone-23/+25
2023-04-26ci: upgrade to crosstool-ng 1.25.0Josh Stone-21/+42
2023-04-17Spelling src/ciJosh Soref-1/+1
* architecture * configures * preparation * toolstate * unknown Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2022-10-14Upgrade dist-mips*-linux to ubuntu:22.04 + crosstool-ngJosh Stone-0/+86
These have no change in compatibility, still Linux 4.4 and glibc 2.23.
2022-10-06Disable compressed debug sections on i586-gnuJosh Stone-0/+4
Compressed debug is enabled by default for gas (assembly) on Linux/x86 targets, and we started building our own in #102530, but that made our `compiler_builtins` incompatible with binutils < 2.32. Add an explicit option to disable that in our crosstool-ng config. Fixes #102703.
2022-09-30Upgrade dist-i586-gnu-i586-i686-musl to ubuntu:22.04Josh Stone-0/+16
The system GCC 5 in ubuntu:16.04 will be too old to compile LLVM 16, so we need an upgrade. To avoid raising the minimum glibc requirements for `i586-unknown-linux-gnu`, this target is converted to a crosstool-ng toolchain, *relaxing* it to the same Linux 3.2 / glibc 2.17 minimum we use elsewhere. The musl targets still use Ubuntu's system toolchain, but this doesn't have the same compatibility concerns.
2022-08-04Downgrade dist-powerpc-linux binutils to 2.30Josh Stone-1/+1
With binutils 2.32, we were getting errors like this: relocation truncated to fit: R_PPC_PLTREL24 against symbol `__cxa_atexit@@GLIBC_2.1.3' defined in .plt section in /x-tools/powerpc-unknown-linux-gnu/powerpc-unknown-linux-gnu/sysroot/usr/lib/crt1.o but it builds okay with binutils 2.30.
2022-08-03Increase the minimum linux-gnu versionsJosh Stone-16/+22
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-02-26Update dist-s390x-dist imageNikita Popov-3/+3
Update to Ubuntu 20.04 and crosstool-ng 1.24.0. I've updated the ct-ng config and then manually reset the kernel and glibc versions to the oldest supported. Specifically, we're updating from kernel 2.6.32.68 to 2.6.32.71 and glibc 2.11.1 to 2.12.1 here. The compiler toolchain is also updated, but I don't think that's relevant for compatibility.
2020-07-23Downgrade glibc to 2.11.1 for ppc, ppc64 and s390xMartin Sirringhaus-3/+3
2020-07-13Move all code-snippets to /tmp/ as basedirMartin Sirringhaus-1/+1
2020-07-13Fix typoMartin Sirringhaus-2/+3
2020-07-13Update cross-compilation READMEMartin Sirringhaus-8/+30
2020-07-03ci: move all x86_64 runners to the host-x86_64 directoryPietro Albini-3/+5
We need to add runners designed for an aarch64 host system, and it'd be nice to return an error message if someone tries to run an image designed for an host architecture in another one. To start the work on this, this commit moves all the existing builders in the host-x86_64 directory, and changes the run.sh script to look up the image in the correct directory based on the host architecture.
2020-03-25Upgrade GCC to 8.3.0, glibc to 2.17.0 and crosstool-ng to 1.24.0 for ↵Ben Wolsieffer-10/+8
dist-arm-linux and dist-armhf-linux
2019-12-06Add note to src/ci/docker/README.md about multiple docker imagesAaron Hill-0/+7
I spent a while debugging a strage linker error about an outdated `glibc` version, only to discover that it was caused by a stale `obj` directory. It wasn't obviously to be that using the same obj dir with multiple Docker images (for the same target triple) could be a problem. This commit adds a note to the README, which should hopefully be helpful to anyone else who runs into this issue.
2019-10-11Revert "Remove reference to Ubuntu 15.10 ARM toolchain"qtmlabs-3/+5
This reverts commit 4f97e5d41160e256c9d76d26432831ece83ef480.
2019-10-11Remove reference to Ubuntu 15.10 ARM toolchainqtmlabs-5/+3
2019-10-11Upgrade GCC to 8.3.0, glibc to 1.17.0 and crosstool-ng to 1.24.0 for ↵qtmlabs-5/+4
dist-armv7-linux
2019-07-15ci: Remove Travis/AppVeyor configurationAlex Crichton-1/+1
Now that we've fully moved to Azure Pipelines and bors has been updated to only gate on Azure this commit removes the remaining Travis/AppVeyor support contained in this repository. Most of the deletions here are related to producing better output on Travis by folding certain sections. This isn't supported by Azure so there's no need to keep it around, and if Azure ever adds support we can always add it back!
2019-02-12[CI] Update crosstool-ng builders to GCC 5.2Josh Stone-10/+16
2017-11-21fix some typosMartin Lindhe-2/+2
2017-11-06Modify the script to allow for running docker images on Windows 7.kennytm-4/+46
2017-09-17Improve documentationOliver Schneider-1/+1
2017-05-18ci: add filesystem layout docsMarco A L Barbosa-0/+6
2017-04-05dist-powerpc-linux: use a pure 32-bit CPU profileJosh Stone-6/+1
With `-mcpu=power4`, code might use instructions like `fcfid`, excluding older CPUs like the PowerPC G4, which apparently some users would like to use. The generic `-mcpu=powerpc` should stick to pure 32-bit PowerPC instructions. Fixes rust-lang/cargo#3852.
2017-01-28travis: move IBM backwards in timeJosh Stone-0/+55
Using Ubuntu's cross-toolchains for powerpc* and s390x meant they were depending on glibc symbols from Ubuntu 16.04. And if that host is ever updated to a new release, the toolchains would raise the bar too. This switches powerpc, powerpc64, and s390x to use crosstool-ng toolchains, configured approximately like RHEL6 with kernel 2.6.32 and glibc 2.12. This ABI level should also be compatible with Debian 7 (wheezy) and Ubuntu 12.04 (precise). For powerpc64le, the challenge was that only glibc-2.19 officially added support, but RHEL7 backported those changes to glibc-2.17. The backport patches are complex and numerous, so instead of trying to push those into crosstool-ng, this just uses glibc binaries directly from CentOS 7 and builds the toolchain manually. This is ported from rust-lang/rust-buildbot#149. r? @alexcrichton
2017-01-19travis: Move glibc backwards in timeAlex Crichton-0/+145
This commit updates the compilers for many of the artifacts that we're producing on Travis. These compilers are all compiled by crosstool-ng as they're currently done for the images in which we're building all our cross compiled compilers. The purpose of this commit is that when we ship binaries the artifacts won't require a newer glibc, but rather be as compatible as possible with Linux distributions by working with a very old version of glibc. This commit always allocates a new matrix entry for the i686/x86_64 builder. This builder is dedicated to just producing artifacts and eventually we'll expand it to building other tools like Cargo and the RLS. The other builders testing i686 and x86_64 won't use these historical toolchains.