Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions .github/workflows/recipe-checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
# GitHub workflow to check pull requests and commits for pitfalls and formatting
# mistakes in build recipes.
name: Check recipes

'on':
workflow_dispatch:
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}"