ci: verify minimum supported Rust version

In the current state of our Rust code base we don't really have any requirements for the minimum supported Rust version yet, as we don't use any features introduced by a recent version of Rust. Consequently, we have decided that we want to aim for a rather old version and edition of Rust, where the hope is that using an old version will make alternatives like gccrs viable earlier for compiling Git. But while we specify the Rust edition, we don't yet specify a Rust version. And even if we did, the Rust version would only be enforced for our own code, but not for any of our dependencies. We don't yet have any dependencies at the current point in time. But let's add some safeguards by specifying the minimum supported Rust version and using cargo-msrv(1) to verify that this version can be satisfied for all of our dependencies. Note that we fix the version of cargo-msrv(1) at v0.18.1. This is the latest release supported by Ubuntu's Rust version. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Patrick Steinhardt committed Oct 15, 2025 at 08:04 UTC 1b43384f41d8303324e8e6717dcf109e8846c214
3 files changed +14
Cargo.toml
+1
@@ -2,6 +2,7 @@
2 name = "gitcore"
3 version = "0.1.0"
4 edition = "2018"
5 +rust-version = "1.49.0"
6
7 [lib]
8 crate-type = ["staticlib"]
ci/install-dependencies.sh
+8
@@ -10,6 +10,8 @@ begin_group "Install dependencies"
10 P4WHENCE=https://cdist2.perforce.com/perforce/r23.2
11 LFSWHENCE=https://github.com/github/git-lfs/releases/download/v$LINUX_GIT_LFS_VERSION
12 JGITWHENCE=https://repo1.maven.org/maven2/org/eclipse/jgit/org.eclipse.jgit.pgm/6.8.0.202311291450-r/org.eclipse.jgit.pgm-6.8.0.202311291450-r.sh
13 +CARGO_MSRV_VERSION=0.18.4
14 +CARGO_MSRV_WHENCE=https://github.com/foresterre/cargo-msrv/releases/download/v$CARGO_MSRV_VERSION/cargo-msrv-x86_64-unknown-linux-musl-v$CARGO_MSRV_VERSION.tgz
15
16 # Make sudo a no-op and execute the command directly when running as root.
17 # While using sudo would be fine on most platforms when we are root already,
@@ -130,6 +132,12 @@ RustAnalysis)
132 sudo apt-get -q -y install rustup
133 rustup default stable
134 rustup component add clippy rustfmt
135 +
136 + wget -q "$CARGO_MSRV_WHENCE" -O "cargo-msvc.tgz"
137 + sudo mkdir -p "$CUSTOM_PATH"
138 + sudo tar -xf "cargo-msvc.tgz" --strip-components=1 \
139 + --directory "$CUSTOM_PATH" --wildcards "*/cargo-msrv"
140 + sudo chmod a+x "$CUSTOM_PATH/cargo-msrv"
141 ;;
142 sparse)
143 sudo apt-get -q -y install libssl-dev libcurl4-openssl-dev \
ci/run-rust-checks.sh
+5
@@ -14,4 +14,9 @@ then
14 RET=1
15 fi
16
17 +if ! group "Check for minimum required Rust version" cargo msrv verify
18 +then
19 + RET=1
20 +fi
21 +
22 exit $RET