Unverified Commit 456a4697 authored by Wolfgang Walther's avatar Wolfgang Walther
Browse files

workflows/eval: load supportedSystems from JSON file

This is a refactor to prepare the next commit. It doesn't do much on its
own, but is separated for ease of review.
parent 04721e38
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ jobs:
    if: needs.get-merge-commit.outputs.mergedSha
    outputs:
      targetSha: ${{ steps.targetSha.outputs.targetSha }}
      systems: ${{ steps.systems.outputs.systems }}
    steps:
      - name: Check out the PR at the test merge commit
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -47,11 +46,9 @@ jobs:
        with:
          extra_nix_config: sandbox = true

      - name: Evaluate the list of all attributes and get the systems matrix
        id: systems
      - name: Evaluate the list of all attributes
        run: |
          nix-build nixpkgs/ci -A eval.attrpathsSuperset
          echo "systems=$(<result/systems.json)" >> "$GITHUB_OUTPUT"

      - name: Upload the list of all attributes
        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
@@ -66,7 +63,7 @@ jobs:
    strategy:
      fail-fast: false
      matrix:
        system: ${{ fromJSON(needs.attrs.outputs.systems) }}
        system: ${{ fromJSON(needs.get-merge-commit.outputs.systems) }}
    steps:
      - name: Enable swap
        run: |
+9 −1
Original line number Diff line number Diff line
@@ -6,6 +6,9 @@ on:
      mergedSha:
        description: "The merge commit SHA"
        value: ${{ jobs.resolve-merge-commit.outputs.mergedSha }}
      systems:
        description: "The supported systems"
        value: ${{ jobs.resolve-merge-commit.outputs.systems }}

permissions: {}

@@ -14,6 +17,7 @@ jobs:
    runs-on: ubuntu-24.04-arm
    outputs:
      mergedSha: ${{ steps.merged.outputs.mergedSha }}
      systems: ${{ steps.systems.outputs.systems }}
    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
        with:
@@ -40,4 +44,8 @@ jobs:
              fi
              ;;
          esac
          rm -rf base

      - name: Load supported systems
        id: systems
        run: |
          echo "systems=$(jq -c <base/ci/supportedSystems.json)" >> "$GITHUB_OUTPUT"
+1 −1
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ nix-build ci -A eval.full \
  --arg evalSystems '["x86_64-linux" "aarch64-darwin"]'
```

- `--max-jobs`: The maximum number of derivations to run at the same time. Only each [supported system](../supportedSystems.nix) gets a separate derivation, so it doesn't make sense to set this higher than that number.
- `--max-jobs`: The maximum number of derivations to run at the same time. Only each [supported system](../supportedSystems.json) gets a separate derivation, so it doesn't make sense to set this higher than that number.
- `--cores`: The number of cores to use for each job. Recommended to set this to the amount of cores on your system divided by `--max-jobs`.
- `chunkSize`: The number of attributes that are evaluated simultaneously on a single core. Lowering this decreases memory usage at the cost of increased evaluation time. If this is too high, there won't be enough chunks to process them in parallel, and will also increase evaluation time.
- `evalSystems`: The set of systems for which `nixpkgs` should be evaluated. Defaults to the four official platforms (`x86_64-linux`, `aarch64-linux`, `x86_64-darwin` and `aarch64-darwin`).
+2 −5
Original line number Diff line number Diff line
@@ -26,14 +26,14 @@ let
          "nixos"
          "pkgs"
          ".version"
          "ci/supportedSystems.nix"
          "ci/supportedSystems.json"
        ]
      );
    };

  nix = nixVersions.nix_2_24;

  supportedSystems = import ../supportedSystems.nix;
  supportedSystems = builtins.fromJSON (builtins.readFile ../supportedSystems.json);

  attrpathsSuperset =
    runCommand "attrpaths-superset.json"
@@ -43,8 +43,6 @@ let
          nix
          time
        ];
        env.supportedSystems = builtins.toJSON supportedSystems;
        passAsFile = [ "supportedSystems" ];
      }
      ''
        export NIX_STATE_DIR=$(mktemp -d)
@@ -58,7 +56,6 @@ let
            --option restrict-eval true \
            --option allow-import-from-derivation false \
            --arg enableWarnings false > $out/paths.json
        mv "$supportedSystemsPath" $out/systems.json
      '';

  singleSystem =
+6 −0
Original line number Diff line number Diff line
[
  "aarch64-linux",
  "aarch64-darwin",
  "x86_64-linux",
  "x86_64-darwin"
]
Loading