Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion devenv/Containerfile.c10s
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# These aren't packages, just low-dependency binaries dropped in /usr/local/bin
# so we can fetch them independently in a separate build.
ARG base=quay.io/centos/centos:stream10
FROM $base as base

Check warning on line 4 in devenv/Containerfile.c10s

View workflow job for this annotation

GitHub Actions / build (c10s, amd64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/

Check warning on line 4 in devenv/Containerfile.c10s

View workflow job for this annotation

GitHub Actions / build (c10s, arm64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/
# Life is too short to care about dash
RUN ln -sfr /bin/bash /bin/sh
RUN <<EORUN
Expand All @@ -25,7 +25,7 @@
dnf -y makecache
EORUN

FROM base as tools

Check warning on line 28 in devenv/Containerfile.c10s

View workflow job for this annotation

GitHub Actions / build (c10s, amd64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/

Check warning on line 28 in devenv/Containerfile.c10s

View workflow job for this annotation

GitHub Actions / build (c10s, arm64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/
# renovate: datasource=github-releases depName=bootc-dev/bcvk
ARG bcvkversion=v0.9.0
# renovate: datasource=github-releases depName=ossf/scorecard
Expand All @@ -38,12 +38,14 @@
RUN bcvkversion=$bcvkversion scorecardversion=$scorecardversion nushellversion=$nushellversion /run/src/fetch-tools.sh
RUN uvversion=$uvversion /run/src/install-uv.sh

FROM base as rust

Check warning on line 41 in devenv/Containerfile.c10s

View workflow job for this annotation

GitHub Actions / build (c10s, amd64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/

Check warning on line 41 in devenv/Containerfile.c10s

View workflow job for this annotation

GitHub Actions / build (c10s, arm64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/
# renovate: datasource=custom.rust-nightly depName=rust-nightly versioning=rust-release-channel
ARG rust_nightly=nightly-2026-03-02
Comment thread
cgwalters marked this conversation as resolved.
COPY install-rust.sh /run/src/
RUN /run/src/install-rust.sh
RUN rust_nightly=$rust_nightly /run/src/install-rust.sh

# Kani formal verification tool - requires rustup for toolchain management
FROM rust as kani

Check warning on line 48 in devenv/Containerfile.c10s

View workflow job for this annotation

GitHub Actions / build (c10s, amd64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/

Check warning on line 48 in devenv/Containerfile.c10s

View workflow job for this annotation

GitHub Actions / build (c10s, arm64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/
# renovate: datasource=crate depName=kani-verifier
ARG kaniversion=0.67.0
RUN dnf install -y gcc && dnf clean all
Expand Down
4 changes: 3 additions & 1 deletion devenv/Containerfile.debian
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# These aren't packages, just low-dependency binaries dropped in /usr/local/bin
# so we can fetch them independently in a separate build.
ARG base=docker.io/library/debian:sid
FROM $base as base

Check warning on line 4 in devenv/Containerfile.debian

View workflow job for this annotation

GitHub Actions / build (debian, arm64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/

Check warning on line 4 in devenv/Containerfile.debian

View workflow job for this annotation

GitHub Actions / build (debian, amd64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/
# Life is too short to care about dash
RUN ln -sfr /bin/bash /bin/sh
RUN <<EORUN
Expand All @@ -28,7 +28,7 @@
apt -y update
EORUN

FROM base as tools

Check warning on line 31 in devenv/Containerfile.debian

View workflow job for this annotation

GitHub Actions / build (debian, arm64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/

Check warning on line 31 in devenv/Containerfile.debian

View workflow job for this annotation

GitHub Actions / build (debian, amd64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/
# renovate: datasource=github-releases depName=bootc-dev/bcvk
ARG bcvkversion=v0.9.0
# renovate: datasource=github-releases depName=ossf/scorecard
Expand All @@ -41,12 +41,14 @@
RUN bcvkversion=$bcvkversion scorecardversion=$scorecardversion nushellversion=$nushellversion /run/src/fetch-tools.sh
RUN uvversion=$uvversion /run/src/install-uv.sh

FROM base as rust

Check warning on line 44 in devenv/Containerfile.debian

View workflow job for this annotation

GitHub Actions / build (debian, arm64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/

Check warning on line 44 in devenv/Containerfile.debian

View workflow job for this annotation

GitHub Actions / build (debian, amd64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/
# renovate: datasource=custom.rust-nightly depName=rust-nightly versioning=rust-release-channel
ARG rust_nightly=nightly-2026-03-02
Comment thread
cgwalters marked this conversation as resolved.
COPY install-rust.sh /run/src/
RUN /run/src/install-rust.sh
RUN rust_nightly=$rust_nightly /run/src/install-rust.sh

# Kani formal verification tool - requires rustup for toolchain management
FROM rust as kani

Check warning on line 51 in devenv/Containerfile.debian

View workflow job for this annotation

GitHub Actions / build (debian, arm64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/

Check warning on line 51 in devenv/Containerfile.debian

View workflow job for this annotation

GitHub Actions / build (debian, amd64)

The 'as' keyword should match the case of the 'from' keyword

FromAsCasing: 'as' and 'FROM' keywords' casing do not match More info: https://docs.docker.com/go/dockerfile/rule/from-as-casing/
# renovate: datasource=crate depName=kani-verifier
ARG kaniversion=0.67.0
RUN apt-get update && apt-get install -y --no-install-recommends gcc libc6-dev && rm -rf /var/lib/apt/lists/*
Expand Down
9 changes: 9 additions & 0 deletions devenv/install-rust.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,15 @@ export CARGO_HOME=/usr/local/cargo
# Install Rust system-wide
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --profile default

# Install nightly toolchain if requested (pinned date, e.g. nightly-2026-03-02)
if [ -n "${rust_nightly:-}" ]; then
/usr/local/cargo/bin/rustup toolchain install "${rust_nightly}" --profile minimal
# Symlink the dated nightly as "nightly" so `cargo +nightly` works without
# requiring write access to RUSTUP_HOME for channel updates.
host=$(/usr/local/cargo/bin/rustc --print host-tuple)
ln -sf "${rust_nightly}-${host}" "$RUSTUP_HOME/toolchains/nightly-${host}"
fi

# Move binaries to /usr/local/bin (system-managed, root-owned)
mv /usr/local/cargo/bin/* /usr/local/bin/

Expand Down
21 changes: 20 additions & 1 deletion renovate-shared-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,19 @@
// referenced in Cargo.toml files. Without initializing submodules, Renovate
// will fail to analyze these dependencies.
"cloneSubmodules": true,
// Custom datasource for tracking Rust nightly toolchain releases via the
// official release manifest. This is the same data source the upcoming
// native rust-version datasource (renovatebot/renovate#39529) will use;
// once that merges this can be replaced with zero-config native support.
"customDatasources": {
"rust-nightly": {
"defaultRegistryUrlTemplate": "https://static.rust-lang.org/manifests.txt",
"format": "plain",
"transformTemplates": [
"{ \"releases\": $filter(releases, function($r) { $contains($r.version, \"channel-rust-nightly.toml\") }).$merge([{ \"version\": \"nightly-\" & $match(version, /(\\d{4}-\\d{2}-\\d{2})/).groups[0] }]) }"
]
}
},
// Custom managers for detecting dependencies in non-standard files
//
// - Containerfile/Dockerfile: Match "# renovate:" comments with ARG statements
Expand All @@ -24,7 +37,8 @@
"customType": "regex",
"managerFilePatterns": ["/(^|/)Containerfile(\\.[^/]*)?$/", "/(^|/)Dockerfile(\\.[^/]*)?$/"],
"matchStrings": [
"# renovate: datasource=(?<datasource>[a-z-]+) depName=(?<depName>[^\\s]+)\\s+ARG \\w+version=(?<currentValue>.+)"
"# renovate: datasource=(?<datasource>[a-z.-]+) depName=(?<depName>[^\\s]+)\\s+ARG \\w+version=(?<currentValue>.+)",
"# renovate: datasource=(?<datasource>[a-z.-]+) depName=(?<depName>[^\\s]+) versioning=(?<versioning>[^\\s]+)\\s+ARG \\w+=(?<currentValue>.+)"
]
},
{
Expand Down Expand Up @@ -159,6 +173,11 @@
"composefs-oci"
],
"enabled": false
},
// Rust nightly toolchain: use rust-release-channel versioning for nightly-YYYY-MM-DD format
{
"matchDatasources": ["custom.rust-nightly"],
"versioning": "rust-release-channel"
}
]
}