Skip to content

Commit

Permalink
[ci] Check lock files in CI
Browse files Browse the repository at this point in the history
This script regenerates the Bazel, Cargo, and Python lock files and
checks for a diff.

Signed-off-by: James Wainwright <[email protected]>
  • Loading branch information
jwnrt committed Jan 10, 2025
1 parent e4e0b3e commit e52310a
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ jobs:
run: ./ci/scripts/check-links.sh
- name: Generated documentation
run: ./ci/scripts/check-cmdgen.sh
- name: Lock files
run: ./ci/scripts/check-lock-files.sh

slow_lint:
name: Lint (slow)
Expand Down
48 changes: 48 additions & 0 deletions ci/scripts/check-lock-files.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/usr/bin/env bash

# Copyright lowRISC contributors (OpenTitan project).
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

set -e

REPO_TOP="$(git rev-parse --show-toplevel)"

cd "$REPO_TOP"

fail() {
file="$1"
command="$2"

echo "::error::${file} is not up to date" >&2
echo "Regenerate this lock file using \`${command}\`" >&2

exit 1
}

# Regenerate `MODULE.bazel.lock` file.
./bazelisk.sh mod deps
if ! git diff --exit-code MODULE.bazel.lock; then
fail MODULE.bazel.lock "./bazelisk.sh mod deps"
fi

# Regenerate `Cargo.lock` files.
# We use the Cargo from Bazel to ensure there are no resolver version differences.
cargo=(bazel run @rules_rust//tools/upstream_wrapper:cargo --)
cargo_manifests=(
third_party/rust/Cargo.toml
third_party/tock/Cargo.toml
third_party/mdbook/Cargo.toml
)
for toml in "${cargo_manifests[@]}"; do
"${cargo[@]}" update -w --manifest-path "$toml"
if ! git diff --exit-code "${toml/toml/lock}"; then
fail "${toml/toml/lock}" "${cargo[*]} update -w --manifest-path ${toml}"
fi
done

# Regenerate python lock file.
./util/sh/scripts/gen-python-requirements.sh
if ! git diff --exit-code python-requirements.txt; then
fail python-requirements.txt ./util/sh/scripts/gen-python-requirements.txt
fi

0 comments on commit e52310a

Please sign in to comment.