Skip to content

Merge pull request #63 from ben-wes/fix/stablesignals #326

Merge pull request #63 from ben-wes/fix/stablesignals

Merge pull request #63 from ben-wes/fix/stablesignals #326

Workflow file for this run

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