Skip to content

Mirror kernel artifacts directly under /rustc/#43

Merged
jieyouxu merged 1 commit into
rust-lang:mainfrom
jieyouxu:jieyouxu/ci/mirror-take-2
Jul 4, 2026
Merged

Mirror kernel artifacts directly under /rustc/#43
jieyouxu merged 1 commit into
rust-lang:mainfrom
jieyouxu:jieyouxu/ci/mirror-take-2

Conversation

@jieyouxu

@jieyouxu jieyouxu commented Jul 4, 2026

Copy link
Copy Markdown
Member

See #t-infra > kernel.org is borked @ 💬

For crosstools-ng single-mirror-base-URL purpose.

Since other artifacts like glibc etc. are mirrored under /rustc/, we can't mirror kernel artifacts under nested /rustc/kernel/, otherwise crosstools-ng can't handle the different mirror bases.

(There are ways like manually downloading archive then using local crosstools-ng kernel overrides, but that avenue seemed quite complicated. I rather try an more obvious approach for now.)

For crosstools-ng single-mirror-base-URL purpose.
@jieyouxu
jieyouxu force-pushed the jieyouxu/ci/mirror-take-2 branch from 7ed64d6 to 0f67977 Compare July 4, 2026 13:28
@jieyouxu
jieyouxu marked this pull request as ready for review July 4, 2026 13:28
@jieyouxu
jieyouxu added this pull request to the merge queue Jul 4, 2026
Merged via the queue into rust-lang:main with commit 010d909 Jul 4, 2026
3 checks passed
@jieyouxu
jieyouxu deleted the jieyouxu/ci/mirror-take-2 branch July 4, 2026 13:44
rust-bors Bot pushed a commit to rust-lang/rust that referenced this pull request Jul 4, 2026
Mirror kernel archives in `ci-mirrors` to not depend on currently unavailable kernel mirror sources



## Summary

(Tempoarily) closes #158718.
See [#t-infra > kernel.org is borked](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/kernel.2Eorg.20is.20borked/with/608182062).

Currently rust-lang/rust CI is borked because:

1. `armhf-gnu` directly tries to download kernel v4.x artifacts from kernel.org mirror, and
2. certain `dist-*` jobs tries to download kernel v3.x and v4.x artifacts from kernel.org mirror indirectly via crosstools-ng ("CT-NG") [^1].

[^1]: Add v5.x but those are already recovered.

However, kernel.org mirror sync infra has an active incident (ref: https://status.linuxfoundation.org/incidents/3y1k8b4ky71t) where not all files are available. In particular, v3.x and v4.x kernel artifacts are not recovered yet as of time of writing (check <https://mirrors.edge.kernel.org/pub/linux/kernel/>).

### Mitigation

This PR tries to mitigate this by using our own mirrored kernel artifacts from `ci-mirrors` (see rust-lang/ci-mirrors#41, rust-lang/ci-mirrors#42, rust-lang/ci-mirrors#43), such that `linux-$A.$B.$C.tar.gz` artifacts become available as search locations to CT-NG.

We carry a patch to CT-NG to use our own `ci-mirrors` artifact SHA256 checksums, the checksum mismatches are as far as we know due to compression setting differences (`ci-mirrors` source archives from <https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/snapshot/>).

## Notes

- `armhf-gnu` still has artifacts from third-party mirrors/sources (busybox, ubuntu-base-22.04.2). Not in scope of this PR.
- It looks like `3.*` kernel series are considered obselete by CT-NG, and need `CT_OBSOLETE=y` config.
- CT-NG checks for known-good kernel versions and checksums against the provided mirror.

### CT-NG known good versions

Re. latest kernel versions in each release versus what CT-NG 1.28.0 considers a known good version w/ checksum:

Kernel LTS release series | Last release in the series | CT-NG 1.28.0 known good kernel version w/ checksum
-- | -- | --
3.2.* | 3.2.102 | **3.2.101**
3.10.* | 3.10.108 | 3.10.108
4.4.* | 4.4.302 | 4.4.302
4.19.* | 4.19.325 | 4.19.325
4.20.* | 4.20.17 | 4.20.17
5.19.* | 5.19.17 | **5.19.16**

(**Bold** CT-NG known good version indicates not latest in release series.)

### `ci-mirrors` kernal tarball SHA256 checksums

Refer to https://github.com/rust-lang/ci-mirrors/blob/b474b4bb35108dab668907172c858854f209c809/files/rustc/kernel.toml:

| **Kernel Version** | **SHA256**                                                         |
| ------------------ | ------------------------------------------------------------------ |
| 3.2.101            | `93e8391e029f131d5ba4b7ad76cc34b12f2c2244059604042f2297c4bde093f7` |
| 3.10.108           | `b1711610cf3faf7194156dacdb98c63c1b7ffd02377269d7f75df63d823ccbba` |
| 4.4.302            | `a22ceab143d40f511203265e5a70d6cc5ec39163cd54fa281346d19176f64451` |
| 4.19.325           | `8753443636e475b506e08abd40059ec9b84904a115d206014f0c856dfe13a25e` |
| 4.20.17            | `313b7bebb46084efbfcaf75f4ea6faf2e14c8cbc1711fcba483dc0a036c9acc1` |
| 5.19.16            | `bbf0ead65559250e0784c13d4f9716b7f917a1d3a4e00f671f3994cc6990bb02` |

---

try-job: armhf-gnu
try-job: dist-armhf-linux
try-job: dist-arm-linux-gnueabi
try-job: dist-powerpc64le-linux-musl
try-job: dist-loongarch64-musl
try-job: dist-riscv64-linux
try-job: dist-powerpc64le-linux-gnu
try-job: dist-powerpc64-linux-musl
try-job: dist-armv7-linux
try-job: dist-powerpc-linux
try-job: dist-loongarch64-linux
try-job: dist-s390x-linux
try-job: dist-i586-gnu-i586-i686-musl
try-job: dist-powerpc64-linux-gnu
rust-bors Bot pushed a commit to rust-lang/rust that referenced this pull request Jul 4, 2026
Mirror kernel archives in `ci-mirrors` to not depend on currently unavailable kernel mirror sources



## Summary

(Tempoarily) closes #158718.
See [#t-infra > kernel.org is borked](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/kernel.2Eorg.20is.20borked/with/608182062).

Currently rust-lang/rust CI is borked because:

1. `armhf-gnu` directly tries to download kernel v4.x artifacts from kernel.org mirror, and
2. certain `dist-*` jobs tries to download kernel v3.x and v4.x artifacts from kernel.org mirror indirectly via crosstools-ng ("CT-NG") [^1].

[^1]: Add v5.x but those are already recovered.

However, kernel.org mirror sync infra has an active incident (ref: https://status.linuxfoundation.org/incidents/3y1k8b4ky71t) where not all files are available. In particular, v3.x and v4.x kernel artifacts are not recovered yet as of time of writing (check <https://mirrors.edge.kernel.org/pub/linux/kernel/>).

### Mitigation

This PR tries to mitigate this by using our own mirrored kernel artifacts from `ci-mirrors` (see rust-lang/ci-mirrors#41, rust-lang/ci-mirrors#42, rust-lang/ci-mirrors#43), such that `linux-$A.$B.$C.tar.gz` artifacts become available as search locations to CT-NG.

We carry a patch to CT-NG to use our own `ci-mirrors` artifact SHA256 checksums, the checksum mismatches are as far as we know due to compression setting differences (`ci-mirrors` source archives from <https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/snapshot/>).

## Notes

- `armhf-gnu` still has artifacts from third-party mirrors/sources (busybox, ubuntu-base-22.04.2). Not in scope of this PR.
- It looks like `3.*` kernel series are considered obselete by CT-NG, and need `CT_OBSOLETE=y` config.
- CT-NG checks for known-good kernel versions and checksums against the provided mirror.

### CT-NG known good versions

Re. latest kernel versions in each release versus what CT-NG 1.28.0 considers a known good version w/ checksum:

Kernel LTS release series | Last release in the series | CT-NG 1.28.0 known good kernel version w/ checksum
-- | -- | --
3.2.* | 3.2.102 | **3.2.101**
3.10.* | 3.10.108 | 3.10.108
4.4.* | 4.4.302 | 4.4.302
4.19.* | 4.19.325 | 4.19.325
4.20.* | 4.20.17 | 4.20.17
5.19.* | 5.19.17 | **5.19.16**

(**Bold** CT-NG known good version indicates not latest in release series.)

### `ci-mirrors` kernal tarball SHA256 checksums

Refer to https://github.com/rust-lang/ci-mirrors/blob/b474b4bb35108dab668907172c858854f209c809/files/rustc/kernel.toml:

| **Kernel Version** | **SHA256**                                                         |
| ------------------ | ------------------------------------------------------------------ |
| 3.2.101            | `93e8391e029f131d5ba4b7ad76cc34b12f2c2244059604042f2297c4bde093f7` |
| 3.10.108           | `b1711610cf3faf7194156dacdb98c63c1b7ffd02377269d7f75df63d823ccbba` |
| 4.4.302            | `a22ceab143d40f511203265e5a70d6cc5ec39163cd54fa281346d19176f64451` |
| 4.19.325           | `8753443636e475b506e08abd40059ec9b84904a115d206014f0c856dfe13a25e` |
| 4.20.17            | `313b7bebb46084efbfcaf75f4ea6faf2e14c8cbc1711fcba483dc0a036c9acc1` |
| 5.19.16            | `bbf0ead65559250e0784c13d4f9716b7f917a1d3a4e00f671f3994cc6990bb02` |

---

try-job: armhf-gnu
try-job: dist-armhf-linux
try-job: dist-arm-linux-gnueabi
try-job: dist-powerpc64le-linux-musl
try-job: dist-loongarch64-musl
try-job: dist-riscv64-linux
try-job: dist-powerpc64le-linux-gnu
try-job: dist-powerpc64-linux-musl
try-job: dist-armv7-linux
try-job: dist-powerpc-linux
try-job: dist-loongarch64-linux
try-job: dist-s390x-linux
try-job: dist-i586-gnu-i586-i686-musl
try-job: dist-powerpc64-linux-gnu
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants