Update CI setup #262
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: build | |
on: | |
push: | |
branches: | |
- '*' | |
pull_request: | |
branches: | |
- '*' | |
env: | |
CACHE_VERSION: 20240930 | |
PAWPAW_VERSION: a9ab736dc297b2055536c71cddf1c79711d420bb | |
PAWPAW_SKIP_LTO: 1 | |
PAWPAW_SKIP_GLIB: 1 | |
PAWPAW_SKIP_LV2: 1 | |
jobs: | |
macos: | |
strategy: | |
matrix: | |
target: [intel, universal] | |
runs-on: macos-12 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/PawPawBuilds | |
key: macos-${{ matrix.target }}-v${{ env.CACHE_VERSION }} | |
- name: Set up dependencies | |
run: | | |
brew install cmake jq meson | |
- name: Bootstrap dependencies | |
shell: bash | |
run: | | |
if [ ! -d PawPaw ]; then | |
git clone https://github.com/DISTRHO/PawPaw.git | |
git -C PawPaw checkout ${PAWPAW_VERSION} | |
fi | |
./PawPaw/.github/workflows/bootstrap-deps.sh ${{ matrix.target }} | |
./PawPaw/bootstrap-jack2.sh macos-${{ matrix.target }} | |
./PawPaw/.cleanup.sh macos-${{ matrix.target }} | |
- name: Build jack2 | |
shell: bash | |
run: | | |
pushd PawPaw && source local.env macos-${{ matrix.target }} && popd | |
python ./waf configure --platform=darwin --prefix=/usr/local | |
python ./waf build -j $(sysctl -n hw.logicalcpu) | |
python ./waf install --destdir=$(pwd)/destdir | |
- name: Set sha8 (non-release) | |
if: startsWith(github.ref, 'refs/tags/') != true | |
run: echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV | |
- name: Set sha8 (release) | |
if: startsWith(github.ref, 'refs/tags/') | |
run: echo "SHA8=$(echo ${{ github.ref_name }})" >> $GITHUB_ENV | |
- name: Generate macOS package | |
shell: bash | |
run: | | |
./macosx/generate-pkg.sh $(pwd)/destdir/usr/local ${{ github.event.pull_request.number || env.SHA8 }} | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: jack2-macOS-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }} | |
path: macosx/jack2-osx-*.pkg | |
windows: | |
strategy: | |
matrix: | |
target: [win32, win64] | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/PawPawBuilds | |
key: ${{ matrix.target }}-v${{ env.CACHE_VERSION }} | |
- name: Restore debian packages cache | |
shell: bash | |
run: | | |
if [ -d ~/PawPawBuilds/debs ] && [ "$(ls ~/PawPawBuilds/debs | wc -l)" -ne 0 ]; then | |
sudo cp ~/PawPawBuilds/debs/*.deb /var/cache/apt/archives/; | |
fi | |
- name: Fix GitHub's mess | |
shell: bash | |
run: | | |
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list | |
sudo dpkg --add-architecture i386 | |
sudo apt-get update -qq | |
sudo apt-get install -yqq --allow-downgrades libc6:i386 libgcc-s1:i386 libstdc++6:i386 | |
- name: Set up dependencies | |
shell: bash | |
run: | | |
if [ ! -d PawPaw ]; then | |
git clone https://github.com/DISTRHO/PawPaw.git | |
git -C PawPaw checkout ${PAWPAW_VERSION} | |
fi | |
sudo ./PawPaw/.github/workflows/bootstrap-deps.sh ${{ matrix.target }} | |
sudo apt-get install -y build-essential llvm xvfb wine-stable | |
- name: Cache debian packages | |
shell: bash | |
run: | | |
mkdir -p ~/PawPawBuilds/debs | |
sudo mv /var/cache/apt/archives/*.deb ~/PawPawBuilds/debs/ | |
- name: Bootstrap dependencies | |
shell: bash | |
run: | | |
./PawPaw/bootstrap-jack2.sh ${{ matrix.target }} | |
./PawPaw/.cleanup.sh ${{ matrix.target }} | |
- name: Build jack2 | |
shell: bash | |
run: | | |
pushd PawPaw && source local.env ${{ matrix.target }} && popd | |
export PATH+=":/usr/i686-w64-mingw32/bin" | |
export LDFLAGS+="-L~/PawPawBuilds/targets/win64/lib32" | |
./waf configure --platform=win32 --prefix=$(pwd)/destdir --static ${{ matrix.target == 'win64' && '--mixed' || '' }} | |
./waf build -j $(nproc) | |
./waf install | |
- name: Generate MSVC lib files | |
if: ${{ matrix.target == 'win32' }} | |
shell: bash | |
run: | | |
pushd $(pwd)/destdir/lib | |
llvm-dlltool -m i386 -D libjack.dll -d libjack.def -l libjack.lib | |
llvm-dlltool -m i386 -D libjacknet.dll -d libjacknet.def -l libjacknet.lib | |
llvm-dlltool -m i386 -D libjackserver.dll -d libjackserver.def -l libjackserver.lib | |
popd | |
- name: Generate MSVC lib files | |
if: ${{ matrix.target == 'win64' }} | |
shell: bash | |
run: | | |
# 32bit | |
pushd $(pwd)/destdir/lib32 | |
llvm-dlltool -m i386 -D libjack.dll -d libjack.def -l libjack.lib | |
popd | |
# 64bit | |
pushd $(pwd)/destdir/lib | |
llvm-dlltool -m i386:x86-64 -D libjack64.dll -d libjack64.def -l libjack64.lib | |
llvm-dlltool -m i386:x86-64 -D libjacknet64.dll -d libjacknet64.def -l libjacknet64.lib | |
llvm-dlltool -m i386:x86-64 -D libjackserver64.dll -d libjackserver64.def -l libjackserver64.lib | |
popd | |
- name: Set sha8 (non-release) | |
if: startsWith(github.ref, 'refs/tags/') != true | |
run: echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV | |
- name: Set sha8 (release) | |
if: startsWith(github.ref, 'refs/tags/') | |
run: echo "SHA8=$(echo ${{ github.ref_name }})" >> $GITHUB_ENV | |
- name: Generate Windows installer | |
shell: bash | |
run: | | |
# Setup wine | |
export WINEDLLOVERRIDES="mscoree,mshtml=" | |
export WINEPREFIX=$(pwd)/innosetup | |
xvfb-run wineboot -u | |
# Download and install innosetup | |
curl -L https://jrsoftware.org/download.php/is.exe?site=2 -o is.exe | |
xvfb-run wine is.exe /allusers /dir=C:\\InnoSeup /nocancel /norestart /verysilent | |
# create installer | |
ln -sf $(pwd)/destdir windows/inno/${{ matrix.target }} | |
pushd windows/inno | |
echo "#define VERSION \"${{ github.event.pull_request.number || env.SHA8 }}\"" > version.iss | |
xvfb-run wine ${WINEPREFIX}/drive_c/InnoSeup/ISCC.exe ${{ matrix.target }}-mini.iss | |
popd | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: jack2-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }} | |
path: windows/inno/jack2-*.exe |