preserve signal pointers #323
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Makefile CI | |
on: | |
push: | |
branches: [ master, build-tests ] | |
tags: [ '*' ] | |
pull_request: | |
branches: [ master ] | |
jobs: | |
ubuntu-build: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
floatsize: [32, 64] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- name: install dependencies | |
run: git clone --branch=0.55-0 --depth=1 https://github.com/pure-data/pure-data.git | |
- name: make | |
run: make install PDDIR=./pure-data objectsdir=./build floatsize=${{ matrix.floatsize }} extension=linux-amd64-${{ matrix.floatsize }}.so | |
- name: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pdlua-ubuntu-pd${{ matrix.floatsize }} | |
path: build | |
macos-build: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
floatsize: [32, 64] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- name: install dependencies | |
run: | | |
wget https://github.com/pure-data/pure-data/archive/refs/tags/0.55-0.zip | |
unzip 0.55-0.zip | |
- name: make | |
run: make install objectsdir=./build PDDIR=./pure-data-0.55-0 arch="arm64 x86_64" floatsize=${{ matrix.floatsize }} extension=darwin-fat-${{ matrix.floatsize }}.so | |
- name: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pdlua-macos-pd${{ matrix.floatsize }} | |
path: build | |
windows-build: | |
runs-on: windows-2019 | |
strategy: | |
matrix: | |
floatsize: [32, 64] | |
env: | |
CC: gcc | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- name: install dependencies for 32-bit | |
if: matrix.floatsize == 32 | |
run: | | |
C:\msys64\usr\bin\wget.exe http://msp.ucsd.edu/Software/pd-0.55-0.msw.zip | |
unzip pd-0.55-0.msw.zip | |
- name: install dependencies for 64-bit | |
if: matrix.floatsize == 64 | |
run: | # unfortunately, the folder name convention is slightly different here | |
C:\msys64\usr\bin\wget.exe https://puredata.info/downloads/pure-data/releases/0.55-0-pd64/Pd64-0.55-0.msw.zip | |
unzip Pd64-0.55-0.msw.zip | |
ren Pd-0.55.0 pd-0.55-0 | |
- name: make 32-bit | |
run: make install objectsdir=./build PDDIR=./pd-0.55-0 PDINCLUDEDIR=./pd-0.55-0/src PDBINDIR=./pd-0.55-0/bin floatsize=${{ matrix.floatsize }} extension=windows-amd64-${{ matrix.floatsize }}.dll | |
- name: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pdlua-windows-pd${{ matrix.floatsize }} | |
path: build | |
# Big thanks to @tomara-x and @timothyschoen for showing me how to do this! -ag | |
github-release: | |
if: github.ref_type == 'tag' | |
runs-on: ubuntu-latest | |
needs: [ubuntu-build, macos-build, windows-build] | |
steps: | |
- uses: actions/download-artifact@v4 | |
- name: ziptie | |
run: | | |
mkdir dist | |
for x in pdlua-*; do (cd $x && zip -r ../dist/$x.zip pdlua/); done | |
- name: release | |
uses: softprops/action-gh-release@v2 | |
with: | |
prerelease: true | |
draft: true | |
files: dist/*.zip | |
merge-for-deken: | |
runs-on: ubuntu-latest | |
needs: [github-release] | |
permissions: | |
contents: write | |
actions: read | |
strategy: | |
matrix: | |
os: [windows, macos, ubuntu] | |
steps: | |
- name: download artifacts # FIXME: currently downloads all artifacts redundantly for each OS | |
uses: actions/download-artifact@v4 | |
with: | |
path: artifacts | |
- name: merge artifacts to package | |
run: cp -rn artifacts/pdlua-${{ matrix.os }}*/* . | |
- name: upload package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pdlua-${{ matrix.os }} | |
path: pdlua | |
deken-check: | |
runs-on: ubuntu-latest | |
needs: [merge-for-deken] | |
strategy: | |
matrix: | |
os: [windows, macos, ubuntu] | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: pdlua-${{ matrix.os }} | |
path: pdlua-${{ matrix.os }} | |
- name: check deken package | |
shell: bash | |
run: | | |
echo "## ${{ matrix.os }}" | tee -a $GITHUB_STEP_SUMMARY | |
mkdir -p package-${{ matrix.os }} | |
docker run --rm --user $(id -u) --volume ./pdlua-${{ matrix.os }}:/pdlua \ | |
--volume ./package-${{ matrix.os }}:/package registry.git.iem.at/pd/deken \ | |
deken package --output-dir /package -v "${{ github.ref_name }}" /pdlua | |
dek_files=$(ls package-${{ matrix.os }}/*.dek) | |
for dek_file in $dek_files; do | |
filename=$(basename "$dek_file") | |
echo -e "#### \`$filename\`" | tee -a $GITHUB_STEP_SUMMARY | |
echo '```' | tee -a $GITHUB_STEP_SUMMARY | |
unzip -l "$dek_file" | awk 'NR>3 {print $4}' | sed '/^$/d' | sort | tee -a $GITHUB_STEP_SUMMARY | |
echo '```' | tee -a $GITHUB_STEP_SUMMARY | |
done | |
deken-upload: | |
if: ${{ !contains(github.ref, 'test') }} # upload if not a "test" tag (maybe should be more restrictive?) | |
runs-on: ubuntu-latest | |
needs: [merge-for-deken] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
path: pdlua-src | |
- uses: actions/download-artifact@v4 | |
with: | |
name: pdlua-windows | |
path: pdlua-windows | |
- uses: actions/download-artifact@v4 | |
with: | |
name: pdlua-macos | |
path: pdlua-macos | |
- uses: actions/download-artifact@v4 | |
with: | |
name: pdlua-ubuntu | |
path: pdlua-ubuntu | |
- name: upload deken package | |
shell: bash | |
env: | |
DEKEN_USERNAME: ${{ secrets.DEKEN_USERNAME }} | |
DEKEN_PASSWORD: ${{ secrets.DEKEN_PASSWORD }} | |
run: | | |
for os in ubuntu macos windows; do | |
docker run --rm -e DEKEN_USERNAME -e DEKEN_PASSWORD \ | |
--volume ./pdlua-${os}:/pdlua registry.git.iem.at/pd/deken \ | |
deken upload --no-source-error -v "${{ github.ref_name }}" /pdlua | |
done | |
docker run --rm -e DEKEN_USERNAME -e DEKEN_PASSWORD \ | |
--volume ./pdlua-src:/pdlua registry.git.iem.at/pd/deken \ | |
deken upload -v "${{ github.ref_name }}" /pdlua |