mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-01-06 14:20:19 +01:00
CI: Install rust and grcov
The Rust toolchain is so that we can build and install grcov, which is Mozilla's tool to aggregate test coverage data into a report.
This commit is contained in:
parent
5f1fc5fa00
commit
b5c6ef2853
5 changed files with 125 additions and 1 deletions
|
|
@ -16,7 +16,7 @@ workflow:
|
|||
variables:
|
||||
FDO_UPSTREAM_REPO: 'cairo/cairo'
|
||||
FDO_DISTRIBUTION_VERSION: '40'
|
||||
FDO_DISTRIBUTION_TAG: '2024-07-24-coverage.0'
|
||||
FDO_DISTRIBUTION_TAG: '2024-07-26-coverage.0'
|
||||
|
||||
# TODO: should probably get its own image at some point instead of reusing the GStreamer one
|
||||
# See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/.gitlab-image-tags.yml for latest
|
||||
|
|
@ -26,6 +26,9 @@ variables:
|
|||
DEFAULT_MESON_ARGS: >
|
||||
--default-library=both
|
||||
|
||||
RUST_STABLE: "1.80.0"
|
||||
RUSTUP_VERSION: "1.27.1"
|
||||
|
||||
stages:
|
||||
- prep
|
||||
- build
|
||||
|
|
@ -103,6 +106,14 @@ fedora image:
|
|||
libasan
|
||||
libubsan
|
||||
llvm
|
||||
wget
|
||||
FDO_DISTRIBUTION_EXEC: >-
|
||||
bash .gitlab-ci/install-rust.sh --rustup-version ${RUSTUP_VERSION} \
|
||||
--stable ${RUST_STABLE} \
|
||||
--arch x86_64-unknown-linux-gnu &&
|
||||
bash .gitlab-ci/install-rust-tools.sh &&
|
||||
bash .gitlab-ci/install-grcov.sh &&
|
||||
rm -rf /root/.cargo /root/.cache # cleanup compilation dirs; binaries are installed now
|
||||
|
||||
.build fedora:
|
||||
extends:
|
||||
|
|
|
|||
2
.gitlab-ci/env.sh
Normal file
2
.gitlab-ci/env.sh
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
export RUSTUP_HOME='/usr/local/rustup'
|
||||
export PATH=$PATH:/usr/local/cargo/bin
|
||||
8
.gitlab-ci/install-grcov.sh
Normal file
8
.gitlab-ci/install-grcov.sh
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
source ./.gitlab-ci/env.sh
|
||||
|
||||
set -eu
|
||||
export CARGO_HOME='/usr/local/cargo'
|
||||
|
||||
# Coverage tools
|
||||
cargo install grcov
|
||||
rustup component add llvm-tools-preview
|
||||
11
.gitlab-ci/install-rust-tools.sh
Normal file
11
.gitlab-ci/install-rust-tools.sh
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
source ./.gitlab-ci/env.sh
|
||||
|
||||
set -eu
|
||||
export CARGO_HOME='/usr/local/cargo'
|
||||
|
||||
rustup component add clippy
|
||||
rustup component add rustfmt
|
||||
# cargo install --force cargo-c
|
||||
cargo install --version ^1.0 gitlab_clippy
|
||||
cargo install --force cargo-deny
|
||||
# cargo install --force cargo-outdated
|
||||
92
.gitlab-ci/install-rust.sh
Normal file
92
.gitlab-ci/install-rust.sh
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -o errexit -o pipefail -o noclobber -o nounset
|
||||
|
||||
source ./.gitlab-ci/env.sh
|
||||
|
||||
export CARGO_HOME='/usr/local/cargo'
|
||||
|
||||
PARSED=$(getopt --options '' --longoptions 'rustup-version:,stable:,minimum:,nightly,arch:' --name "$0" -- "$@")
|
||||
if [ $? -ne 0 ]; then
|
||||
echo 'Terminating...' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
eval set -- "$PARSED"
|
||||
unset PARSED
|
||||
|
||||
RUSTUP_VERSION=
|
||||
STABLE=
|
||||
MINIMUM=
|
||||
NIGHTLY=
|
||||
ARCH=
|
||||
|
||||
while true; do
|
||||
case "$1" in
|
||||
'--rustup-version')
|
||||
RUSTUP_VERSION=$2
|
||||
shift 2
|
||||
;;
|
||||
|
||||
'--stable')
|
||||
STABLE=$2
|
||||
shift 2
|
||||
;;
|
||||
|
||||
'--minimum')
|
||||
MINIMUM=$2
|
||||
shift 2
|
||||
;;
|
||||
|
||||
'--nightly')
|
||||
NIGHTLY=1
|
||||
shift 1
|
||||
;;
|
||||
|
||||
'--arch')
|
||||
ARCH=$2
|
||||
shift 2
|
||||
;;
|
||||
|
||||
'--')
|
||||
shift
|
||||
break
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Programming error"
|
||||
exit 3
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "$RUSTUP_VERSION" ]; then
|
||||
echo "missing --rustup-version argument"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$STABLE" ]; then
|
||||
echo "missing --stable argument, please pass the stable version of rustc you want"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$ARCH" ]; then
|
||||
echo "missing --arch argument, please pass an architecture triple like x86_64-unknown-linux-gnu"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RUSTUP_URL=https://static.rust-lang.org/rustup/archive/$RUSTUP_VERSION/$ARCH/rustup-init
|
||||
wget $RUSTUP_URL
|
||||
|
||||
chmod +x rustup-init
|
||||
./rustup-init -y --no-modify-path --profile minimal --default-toolchain $STABLE
|
||||
rm rustup-init
|
||||
chmod -R a+w $RUSTUP_HOME $CARGO_HOME
|
||||
|
||||
if [ -n "$MINIMUM" ]; then
|
||||
rustup toolchain install $MINIMUM
|
||||
fi
|
||||
|
||||
if [ -n "$NIGHTLY" ]; then
|
||||
rustup toolchain install nightly
|
||||
fi
|
||||
Loading…
Add table
Reference in a new issue