Git fork

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>

authored by

Patrick Steinhardt and committed by
Junio C Hamano
1b43384f 4b44c464

+14
+1
Cargo.toml
··· 2 2 name = "gitcore" 3 3 version = "0.1.0" 4 4 edition = "2018" 5 + rust-version = "1.49.0" 5 6 6 7 [lib] 7 8 crate-type = ["staticlib"]
+8
ci/install-dependencies.sh
··· 10 10 P4WHENCE=https://cdist2.perforce.com/perforce/r23.2 11 11 LFSWHENCE=https://github.com/github/git-lfs/releases/download/v$LINUX_GIT_LFS_VERSION 12 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 13 15 14 16 # Make sudo a no-op and execute the command directly when running as root. 15 17 # While using sudo would be fine on most platforms when we are root already, ··· 130 132 sudo apt-get -q -y install rustup 131 133 rustup default stable 132 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" 133 141 ;; 134 142 sparse) 135 143 sudo apt-get -q -y install libssl-dev libcurl4-openssl-dev \
+5
ci/run-rust-checks.sh
··· 14 14 RET=1 15 15 fi 16 16 17 + if ! group "Check for minimum required Rust version" cargo msrv verify 18 + then 19 + RET=1 20 + fi 21 + 17 22 exit $RET