Skip to content
Draft
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
78 changes: 77 additions & 1 deletion .github/workflows/sync-headers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,89 @@ jobs:
ls src/pgm_build_dependencies/eigen/
ls src/pgm_build_dependencies/msgpack_cxx/

- name: License scan - eigen headers
uses: fossology/fossology-action@v1
continue-on-error: true
with:
scan_mode: scan-dir
scanners: 'nomos ojo'
report_format: 'SPDX_JSON'
scan_dir: src/pgm_build_dependencies/eigen/
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A couple of remarks about this step:

  1. This is the same tool used at the LF side.
  2. We can potentially include a list of keywords of licenses that we accept to make the output smaller and less verbose, but I don't think is necessary. Conversely, what we do now is check for "bad" licenses out of all the output in step "Remove files with non-accepted license".


- name: Install jq
run: sudo apt-get update && sudo apt-get install -y jq

- name: Remove files with non-accepted license
id: license-cleanup
run: |
# Find the SPDX JSON file
SPDX_FILE=$(find . -name "*spdx*.json" -o -name "sbom*.json" -o -name "*sbom.json"| head -1)

if [ -z "$SPDX_FILE" ]; then
echo "No SPDX JSON file found! Fossology scan may have failed."
echo "Available files:"
find . -name "*.json" || echo "No JSON files found"
exit 1
fi
echo "Found SPDX file: $SPDX_FILE"

# Get badly licensed files
BAD_FILES=$(jq -r '
.files[] |
select(.licenseInfoInFiles[]? | type == "string" and test("GPL"; "i")) |
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should cover GPL and LGPL, however, I'm no expert in which licenses should be rejected, I am just following the report given to us. Let me know if you have more input here.

.fileName
' "$SPDX_FILE")

if [ -z "$BAD_FILES" ]; then
echo "No badly licensed files found - nothing to delete!"
else
echo "Badly licensed files found:"
echo "$BAD_FILES" | while read -r file_name; do
if [ -n "$file_name" ]; then
echo " - $file_name"

# Construct full path and delete
full_path="src/pgm_build_dependencies/eigen/$file_name"
if [ -f "$full_path" ]; then
rm -f "$full_path"
echo "Deleted: $full_path"
else
echo "File not found: $full_path"
fi
fi
done
fi
continue-on-error: true

- name: Check license cleanup status
run: |
if [ "${{ steps.license-cleanup.outcome }}" = "failure" ]; then
echo "WARNING: License cleanup step failed!"
echo "Please check the license scan results manually."
else
echo "License cleanup completed successfully"
fi

- name: Upload Scan Results Artifact
uses: actions/upload-artifact@v4
with:
name: license-scan-results
path: results/

- name: build wheel
run: |
python -m build --wheel --outdir dist
ls dist/
echo "VERSION=v$(date +'%Y.%m.%d')" >> $GITHUB_ENV

- name: Debug workflow trigger
run: |
echo "Event name: ${{ github.event_name }}"
echo "Force publish input: ${{ inputs.force_publish }}"
echo "Will commit on schedule or when force_publish is true: ${{ github.event_name == 'schedule' || inputs.force_publish }}"

- name: Commit and push changes
if: ${{ github.event_name == 'schedule' || inputs.force_publish }}
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Had to add this and the following to prevent accidental publishing.

id: commit
uses: stefanzweifel/git-auto-commit-action@v6
with:
Expand All @@ -78,7 +154,7 @@ jobs:
commit_author: GitHub Actions Bot <[email protected]>

- name: publish
if: ${{ inputs.force_publish || steps.commit.outputs.changes_detected == 'true' }}
if: ${{ inputs.force_publish || (steps.commit.outputs.changes_detected == 'true' && github.event_name == 'schedule') }}
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.VERSION }}
Expand Down