Unverified Commit 9997190a authored by Silvan Mosberger's avatar Silvan Mosberger Committed by GitHub
Browse files

Merge pull request #281407 from tweag/by-name-local-run-platforms

check-by-name/run-local.sh: Make it usable for non-CI platforms
parents 5776198f 9da57b5b
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -91,8 +91,12 @@ jobs:
          git worktree add "$base" "$(git rev-parse HEAD^1)"
          echo "base=$base" >> "$GITHUB_ENV"
      - uses: cachix/install-nix-action@7ac1ec25491415c381d9b62f0657c7a028df52a7 # v24
      - name: Fetching the tool
        run: pkgs/test/nixpkgs-check-by-name/scripts/fetch-pinned-tool.sh result
      - name: Fetching the pinned tool
        run: |
          # Get the direct /nix/store path from the pin to avoid having to evaluate Nixpkgs
          toolPath=$(jq -r .ci-path pkgs/test/nixpkgs-check-by-name/scripts/pinned-tool.json)
          # This asks the substituter for the path, which should be there because Hydra will have pre-built and pushed it
          nix-store --realise "$toolPath" --add-root result
      - name: Running nixpkgs-check-by-name
        run: |
          if result/bin/nixpkgs-check-by-name --base "$base" .; then
+0 −9
Original line number Diff line number Diff line
@@ -22,12 +22,3 @@ Updates the pinned CI tool in [`./pinned-tool.json`](./pinned-tool.json) to the
[latest version from the `nixos-unstable` channel](https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.tests.nixpkgs-check-by-name.x86_64-linux)

This script is called manually once the CI tooling needs to be updated.

## `./fetch-pinned-tool.sh OUTPUT_PATH`

Fetches the pinned tooling specified in [`./pinned-tool.json`](./pinned-tool.json).

This script is used both by [`./run-local.sh`](#run-local-sh-base-branch-repository) and CI.

Arguments:
- `OUTPUT_PATH`: The output symlink path for the tool
+5 −1
Original line number Diff line number Diff line
#!/usr/bin/env bash
# Legacy script, can be removed once the PR removing its use is merged.
# It's not used anymore because CI and local runs both use pinned-tool.json as their source of truth now,
# though in different ways since local runs need to support arbitrary platforms

# Try to not use nix-shell here to avoid fetching Nixpkgs,
# especially since this is used in CI
# The only dependency is `jq`, which in CI is implicitly available
@@ -22,7 +26,7 @@ output=$1
trace "Reading $pin_file.. "
rev=$(jq -r .rev "$SCRIPT_DIR"/pinned-tool.json)
trace -e "Git revision is \e[34m$rev\e[0m"
path=$(jq -r .path "$SCRIPT_DIR"/pinned-tool.json)
path=$(jq -r '."ci-path"' "$SCRIPT_DIR"/pinned-tool.json)
trace "Tooling path is $path"

trace -n "Fetching the prebuilt version of nixpkgs-check-by-name.. "
+1 −1
Original line number Diff line number Diff line
{
  "rev": "9b19f5e77dd906cb52dade0b7bd280339d2a1f3d",
  "path": "/nix/store/qlls5ca8q88qpyygg9ddi60gl1nmvpij-nixpkgs-check-by-name"
  "ci-path": "/nix/store/qlls5ca8q88qpyygg9ddi60gl1nmvpij-nixpkgs-check-by-name"
}
+15 −1
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ cleanup() {

    [[ -e "$tmp/base" ]] && git worktree remove --force "$tmp/base"
    [[ -e "$tmp/merged" ]] && git worktree remove --force "$tmp/merged"
    [[ -e "$tmp/tool-nixpkgs" ]] && git worktree remove --force "$tmp/tool-nixpkgs"

    rm -rf "$tmp"

@@ -62,7 +63,20 @@ trace -n "Merging base branch into the HEAD commit in $tmp/merged.. "
git -C "$tmp/merged" merge -q --no-edit "$baseSha"
trace -e "\e[34m$(git -C "$tmp/merged" rev-parse HEAD)\e[0m"

"$tmp/merged/pkgs/test/nixpkgs-check-by-name/scripts/fetch-pinned-tool.sh" "$tmp/tool"
trace -n "Reading pinned nixpkgs-check-by-name revision from pinned-tool.json.. "
toolSha=$(jq -r .rev "$tmp/merged/pkgs/test/nixpkgs-check-by-name/scripts/pinned-tool.json")
trace -e "\e[34m$toolSha\e[0m"

trace -n "Creating Git worktree for the nixpkgs-check-by-name revision in $tmp/tool-nixpkgs.. "
git worktree add -q "$tmp/tool-nixpkgs" "$toolSha"
trace "Done"

trace "Building/fetching nixpkgs-check-by-name.."
nix-build -o "$tmp/tool" "$tmp/tool-nixpkgs" \
    -A tests.nixpkgs-check-by-name \
    --arg config '{}' \
    --arg overlays '[]' \
    -j 0

trace "Running nixpkgs-check-by-name.."
"$tmp/tool/bin/nixpkgs-check-by-name" --base "$tmp/base" "$tmp/merged"
Loading