From 0bb414d63217e0bf7cf514bdbe6853ce23151b0b Mon Sep 17 00:00:00 2001 From: mfolina Date: Thu, 19 Mar 2026 14:55:52 +0100 Subject: [PATCH 1/3] CI: add linting for recipes --- .github/workflows/recipe-checks.yml | 76 +++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 .github/workflows/recipe-checks.yml diff --git a/.github/workflows/recipe-checks.yml b/.github/workflows/recipe-checks.yml new file mode 100644 index 0000000..606c8d0 --- /dev/null +++ b/.github/workflows/recipe-checks.yml @@ -0,0 +1,76 @@ +--- +# GitHub workflow to check pull requests and commits for pitfalls and formatting +# mistakes in build recipes. +name: Check recipes + +'on': + push: + paths: + - '*.sh' + pull_request: + paths: + - '*.sh' + +permissions: {} + +jobs: + lint: + name: alidistlint + runs-on: ubuntu-latest + + steps: + - name: Install dependencies + run: python3 -m pip install -U --user 'alidistlint[git]' + + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Run linter + run: | + if [ -n "$BASE_SHA" ]; then + # For pull requests, only check files that have changed relative to + # the base commit. + merge_base=$(git merge-base "$BASE_SHA" "$HEAD_SHA") + git diff -z --diff-filter d --name-only "$merge_base..$HEAD_SHA" -- '*.sh' | + xargs -0tr alidistlint -f github --changes "$merge_base..$HEAD_SHA" + else + # On push, check every file, ignoring warnings and notes. + alidistlint -ef github ./*.sh + fi + env: + BASE_SHA: ${{ github.event.pull_request.base.sha }} + HEAD_SHA: ${{ github.event.pull_request.head.sha || github.event.head_commit.sha }} + + circular: + name: circular dependencies + runs-on: ubuntu-latest + + steps: + - name: Install dependencies + run: | + sudo apt update -y + sudo apt install -y graphviz + python3 -m pip install -U --user alibuild + aliBuild analytics off + + - uses: actions/checkout@v6 + + - name: Run check + run: | + for fname in *.sh; do + case "$fname" in + jalien*) default=jalien ;; + *) default=o2 ;; + esac + echo "Checking $fname with --defaults $default" + if aliBuild deps --defaults "$default" --outgraph /dev/null --no-system --neat -c . \ + "$(awk '/^package: /{print $2}' "$fname")" 2>&1 | + grep -q 'transitive reduction not unique' + then + echo -n "::error title=circular dependency,file=$fname,line=1" + echo '::recipe has circular dependency' + err=1 + fi + done + exit "${err:-0}" From 429018953ec4701e112515f39af68ae19bf06ef2 Mon Sep 17 00:00:00 2001 From: Maria Theodora Folina <139060140+m-fol@users.noreply.github.com> Date: Thu, 19 Mar 2026 15:37:33 +0100 Subject: [PATCH 2/3] CI: set runner --- .github/workflows/recipe-checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/recipe-checks.yml b/.github/workflows/recipe-checks.yml index 606c8d0..d77efd5 100644 --- a/.github/workflows/recipe-checks.yml +++ b/.github/workflows/recipe-checks.yml @@ -1,4 +1,4 @@ ---- +--- # GitHub workflow to check pull requests and commits for pitfalls and formatting # mistakes in build recipes. name: Check recipes From 38f557d162c949755b6e4eabc579425bcf47032c Mon Sep 17 00:00:00 2001 From: Maria Theodora Folina <139060140+m-fol@users.noreply.github.com> Date: Thu, 19 Mar 2026 15:47:21 +0100 Subject: [PATCH 3/3] CI: workflow dispatch --- .github/workflows/recipe-checks.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/recipe-checks.yml b/.github/workflows/recipe-checks.yml index d77efd5..6df55ea 100644 --- a/.github/workflows/recipe-checks.yml +++ b/.github/workflows/recipe-checks.yml @@ -4,6 +4,7 @@ name: Check recipes 'on': + workflow_dispatch: push: paths: - '*.sh'