From 04eb7649098d68e40a9d9c2d1b9e30974fbee9a9 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Wed, 13 May 2026 12:12:49 +0200 Subject: [PATCH 1/4] tools: add linter to validate Rust dependencies Signed-off-by: Antoine du Hamel --- .github/workflows/linters.yml | 17 +++++++++++ deps/crates/check-deps-in-sync-with-v8.sh | 35 +++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100755 deps/crates/check-deps-in-sync-with-v8.sh diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index 352bfd1e23bbea..0bb5e6bdf19d1d 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -161,6 +161,23 @@ jobs: exit "$EXIT_CODE" fi + lint-rust: + if: github.event.pull_request.draft == false + runs-on: ubuntu-slim + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + sparse-checkout: | + tools/nix/pkgs.nix + deps/v8/DEPS + deps/crates/Cargo.toml + deps/crates/Cargo.lock + sparse-checkout-cone-mode: false + - uses: cachix/install-nix-action@ab739621df7a23f52766f9ccc97f38da6b7af14f # v31.10.5 + - name: Validate dependencies + run: nix-shell -I nixpkgs=./tools/nix/pkgs.nix -p tomlq --run ./deps/crates/check-deps-in-sync-with-v8.sh + lint-py: if: github.event.pull_request.draft == false runs-on: ubuntu-slim diff --git a/deps/crates/check-deps-in-sync-with-v8.sh b/deps/crates/check-deps-in-sync-with-v8.sh new file mode 100755 index 00000000000000..73d0e3eaeff7e3 --- /dev/null +++ b/deps/crates/check-deps-in-sync-with-v8.sh @@ -0,0 +1,35 @@ +#!/bin/sh +set -e + +BASE_DIR=$(cd "$(dirname "$0")/../.." && pwd) + +THIRD_PARTY_REPO=$(mktemp -d) +DEP_VERSIONS=$(mktemp) + +cleanup () { + EXIT_CODE=$? + rm -f "$DEP_VERSIONS" + rm -rf "$THIRD_PARTY_REPO" + exit $EXIT_CODE +} + +trap cleanup INT TERM EXIT + +tq -f "$BASE_DIR/deps/crates/Cargo.lock" -o json '.package' > "$DEP_VERSIONS" + + +REV=$(awk -F"'" "/'\\/chromium\\/src\\/third_party\\/rust'/{ print \$8 }" "$BASE_DIR/deps/v8/DEPS") +git clone --depth=1 --revision "$REV" https://chromium.googlesource.com/chromium/src/third_party/rust "$THIRD_PARTY_REPO" + +MISMATCH= +for dep in $(tq -f "$BASE_DIR/deps/crates/Cargo.toml" -o json '.dependencies' | jq -r 'keys | .[]'); do + CURRENT_VERSION=$(jq --arg dep_name "$dep" -r '.[] | select(.name == $dep_name) | .version' < "$DEP_VERSIONS") + REQUIRED_VERSION=$(grep '^Version: ' "$THIRD_PARTY_REPO/$dep"/*/README.chromium | awk '{ print $2 }') + + [ "$CURRENT_VERSION" = "$REQUIRED_VERSION" ] || { + echo "$dep should be on version $REQUIRED_VERSION, found $CURRENT_VERSION" >&2 + MISMATCH=1 + } +done + +[ -z "$MISMATCH" ] && echo "All versions match" >&2 From 7713aea48b67f0394c16f4809bb4b2162e847a41 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Wed, 13 May 2026 12:16:43 +0200 Subject: [PATCH 2/4] fixup! tools: add linter to validate Rust dependencies --- .github/workflows/linters.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index 0bb5e6bdf19d1d..305cc9435e4897 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -171,6 +171,7 @@ jobs: sparse-checkout: | tools/nix/pkgs.nix deps/v8/DEPS + deps/crates/check-deps-in-sync-with-v8.sh deps/crates/Cargo.toml deps/crates/Cargo.lock sparse-checkout-cone-mode: false From 0365b3f3453437f9ec75292e03dec075eb40c6e7 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Wed, 13 May 2026 12:24:55 +0200 Subject: [PATCH 3/4] fixup! tools: add linter to validate Rust dependencies --- .github/workflows/linters.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index 305cc9435e4897..d4d64e92d8bd9d 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -177,7 +177,7 @@ jobs: sparse-checkout-cone-mode: false - uses: cachix/install-nix-action@ab739621df7a23f52766f9ccc97f38da6b7af14f # v31.10.5 - name: Validate dependencies - run: nix-shell -I nixpkgs=./tools/nix/pkgs.nix -p tomlq --run ./deps/crates/check-deps-in-sync-with-v8.sh + run: nix-shell -I nixpkgs=./tools/nix/pkgs.nix -p tomlq -p git --run ./deps/crates/check-deps-in-sync-with-v8.sh lint-py: if: github.event.pull_request.draft == false From fc069c18f80b363cda798b4135c27e75ba282994 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Wed, 13 May 2026 12:44:18 +0200 Subject: [PATCH 4/4] fixup! tools: add linter to validate Rust dependencies add script dependencies --- .github/workflows/linters.yml | 2 +- deps/crates/check-deps-in-sync-with-v8.sh | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index d4d64e92d8bd9d..225094026ffe7d 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -177,7 +177,7 @@ jobs: sparse-checkout-cone-mode: false - uses: cachix/install-nix-action@ab739621df7a23f52766f9ccc97f38da6b7af14f # v31.10.5 - name: Validate dependencies - run: nix-shell -I nixpkgs=./tools/nix/pkgs.nix -p tomlq -p git --run ./deps/crates/check-deps-in-sync-with-v8.sh + run: nix-shell -I nixpkgs=./tools/nix/pkgs.nix --pure -p cacert gawk git jq tomlq --run ./deps/crates/check-deps-in-sync-with-v8.sh lint-py: if: github.event.pull_request.draft == false diff --git a/deps/crates/check-deps-in-sync-with-v8.sh b/deps/crates/check-deps-in-sync-with-v8.sh index 73d0e3eaeff7e3..d6538d695eb81a 100755 --- a/deps/crates/check-deps-in-sync-with-v8.sh +++ b/deps/crates/check-deps-in-sync-with-v8.sh @@ -1,4 +1,5 @@ #!/bin/sh +#! nix-shell --pure -i bash -p cacert gawk git jq tomlq set -e BASE_DIR=$(cd "$(dirname "$0")/../.." && pwd)