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 and upload dependencies | |
on: | |
push: | |
branches: [ "*" ] | |
tags: "v*.*.*" | |
pull_request: | |
branches: [ "*" ] | |
workflow_dispatch: | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- runs-on: ubuntu-latest | |
name-suffix: linux-x64 | |
container: "docker.io/sandervocke/shoopdaloop_build_base_debian_bullseye_x86_64:latest" | |
python: python3 | |
os-kind: linux | |
- runs-on: ubuntu-latest | |
name-suffix: linux-arm | |
container: "docker.io/sandervocke/shoopdaloop_build_base_debian_bullseye_arm64:latest" | |
python: python3 | |
arch: arm64 | |
os-kind: linux | |
- runs-on: macos-14 | |
name-suffix: macos-arm | |
container: false | |
python: python3 | |
os-kind: macos | |
- runs-on: macos-12 | |
name-suffix: macos-x64 | |
container: false | |
python: python3 | |
os-kind: macos | |
- runs-on: windows-2022 | |
name-suffix: windows-msvc-x64 | |
container: false | |
python: python3 | |
os-kind: windows | |
env: | |
PIP_BREAK_SYSTEM_PACKAGES: 1 | |
runs-on: ${{ matrix.runs-on }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Start container | |
if: ${{ matrix.container }} | |
uses: sandervocke/setup-qemu-container@v1 | |
with: | |
container: ${{ matrix.container }} | |
arch: ${{ matrix.arch }} | |
- name: Setup Shell Wrapper | |
uses: sandervocke/setup-shell-wrapper@v1 | |
- name: Use regular shell | |
if: ${{ ! matrix.container }} | |
shell: bash | |
run: echo "WRAP_SHELL=bash" >> $GITHUB_ENV | |
- name: Use container shell | |
if: ${{ matrix.container }} | |
shell: bash | |
run: echo "WRAP_SHELL=run-in-container.sh" >> $GITHUB_ENV | |
- name: Install Meson | |
shell: wrap-shell {0} | |
run: | | |
${{ matrix.python }} -m pip install meson | |
- uses: seanmiddleditch/gha-setup-ninja@master | |
- if: ${{ matrix.os-kind == 'linux' && matrix.arch == 'arm64' }} | |
shell: wrap-shell {0} | |
run: | | |
curl -L https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux-aarch64.zip --output ninja.zip | |
unzip ninja.zip | |
rm $(which ninja) | |
cp ninja /usr/bin/ninja | |
chmod a+x /usr/bin/ninja | |
/usr/bin/ninja --version | |
ninja --version | |
- if: ${{ matrix.os-kind == 'windows' }} | |
uses: TheMrMilchmann/setup-msvc-dev@v3 | |
with: | |
arch: x64 | |
- if: ${{ matrix.os-kind == 'windows' }} | |
shell: wrap-shell {0} | |
run: choco install pkgconfiglite | |
- if: ${{ matrix.os-kind == 'windows' }} | |
shell: wrap-shell {0} | |
run: | | |
rm -f /usr/bin/link | |
rm -f /usr/bin/link.exe | |
- if: ${{ matrix.os-kind == 'windows' }} | |
name: Install pthreads4w | |
shell: pwsh | |
run: | | |
curl -L https://github.com/SanderVocke/shoopdaloop/releases/download/build-assets-1/pthreads4w.zip --output pthreads4w.zip | |
unzip pthreads4w.zip -d pthreads4w | |
- if: ${{ matrix.os-kind == 'windows' }} | |
shell: wrap-shell {0} | |
run: | | |
PTHREADS_DIR=$(cygpath -w $(pwd)/pthreads4w/pthreads4w) | |
echo "CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH;$PTHREADS_DIR" | tee -a $GITHUB_ENV | |
echo "PTHREADS4W_PATH=$PTHREADS_DIR" | tee -a $GITHUB_ENV | |
echo "INCLUDE=$PTHREADS_DIR;$INCLUDE" | tee -a $GITHUB_ENV | |
- if: ${{ matrix.os-kind == 'windows' }} | |
shell: wrap-shell {0} | |
run: | | |
echo "#!/bin/sh" > notify_installed.sh | |
echo "INSTALL_FOLDER=\$1" >> notify_installed.sh | |
echo "CONVERTED=\$(cygpath -w \$INSTALL_FOLDER)" >> notify_installed.sh | |
echo "NEW_PKG_CFG_PATH=\$(find \$INSTALL_FOLDER -name pkgconfig)" >> notify_installed.sh | |
echo "NEW_PKG_CFG_PATH_CONVERTED=\$(cygpath -w \$NEW_PKG_CFG_PATH)" >> notify_installed.sh | |
echo "echo \"Adding pkgconfig path: \$NEW_PKG_CFG_PATH_CONVERTED\"" >> notify_installed.sh | |
echo "echo \"To: \$PKG_CONFIG_PATH\"" >> notify_installed.sh | |
echo "echo \"PKG_CONFIG_PATH=\$NEW_PKG_CFG_PATH_CONVERTED;\$PKG_CONFIG_PATH\" | tee -a \$GITHUB_ENV" >> notify_installed.sh | |
- if: ${{ matrix.os-kind != 'windows' }} | |
shell: wrap-shell {0} | |
run: | | |
echo "#!/bin/sh" > notify_installed.sh | |
echo "INSTALL_FOLDER=\$1" >> notify_installed.sh | |
echo "NEW_PKG_CFG_PATH=\$(find \$INSTALL_FOLDER -name pkgconfig)" >> notify_installed.sh | |
echo "echo \"Adding pkgconfig path: \$NEW_PKG_CFG_PATH\"" >> notify_installed.sh | |
echo "echo \"To: \$PKG_CONFIG_PATH\"" >> notify_installed.sh | |
echo "echo \"PKG_CONFIG_PATH=\$NEW_PKG_CFG_PATH:\$PKG_CONFIG_PATH\" | tee -a \$GITHUB_ENV" >> notify_installed.sh | |
- if: ${{ matrix.os-kind == 'windows' }} | |
shell: wrap-shell {0} | |
run: | | |
echo "echo \"LIBS=\$INSTALL_FOLDER/lib;\$LIBS\" >> \$GITHUB_ENV" >> notify_installed.sh | |
echo "echo \"\$INSTALL_FOLDER/bin\" >> \$GITHUB_PATH" >> notify_installed.sh | |
- if: ${{ matrix.os-kind == 'linux' }} | |
shell: wrap-shell {0} | |
run: | | |
echo "echo \"LD_LIBRARY_PATH=\$(dirname \$(find \$INSTALL_FOLDER -name '*.so' | head -n1)):\$LD_LIBRARY_PATH\" >> \$GITHUB_ENV" >> notify_installed.sh | |
- shell: wrap-shell {0} | |
run: | | |
echo "install folder handling script:" | |
cat notify_installed.sh | |
chmod a+x notify_installed.sh | |
- shell: wrap-shell {0} | |
run: | | |
echo "MESON=${{ matrix.python }} -m mesonbuild.mesonmain" | tee -a $GITHUB_ENV | |
- name: Build LV2 | |
uses: ./.github/actions/build_and_upload_meson_dependency | |
with: | |
name: lv2-v1.18.10-release-${{ matrix.name-suffix }} | |
repo: https://github.com/lv2/lv2.git | |
git_rev: v1.18.10 | |
meson_options: --default-library=shared --buildtype release | |
notify_installed: ./notify_installed.sh | |
- name: Build zix | |
uses: ./.github/actions/build_and_upload_meson_dependency | |
with: | |
name: zix-v0.4.2-release-${{ matrix.name-suffix }} | |
repo: https://github.com/drobilla/zix.git | |
git_rev: v0.4.2 | |
meson_options: --default-library=shared --buildtype release | |
notify_installed: ./notify_installed.sh | |
- name: Build serd | |
uses: ./.github/actions/build_and_upload_meson_dependency | |
with: | |
name: serd-v0.32.2-release-${{ matrix.name-suffix }} | |
repo: https://github.com/drobilla/serd.git | |
git_rev: v0.32.2 | |
meson_options: --default-library=shared --buildtype release | |
notify_installed: ./notify_installed.sh | |
- name: Build sord | |
uses: ./.github/actions/build_and_upload_meson_dependency | |
with: | |
name: sord-v0.16.16-release-${{ matrix.name-suffix }} | |
repo: https://github.com/drobilla/sord.git | |
git_rev: v0.16.16 | |
meson_options: --default-library=shared --buildtype release | |
notify_installed: ./notify_installed.sh | |
- name: Build sratom | |
uses: ./.github/actions/build_and_upload_meson_dependency | |
with: | |
name: sratom-v0.6.16-release-${{ matrix.name-suffix }} | |
repo: https://github.com/lv2/sratom.git | |
git_rev: v0.6.16 | |
meson_options: --default-library=shared --buildtype release | |
notify_installed: ./notify_installed.sh | |
- name: Build lilv | |
uses: ./.github/actions/build_and_upload_meson_dependency | |
with: | |
name: lilv-v0.24.24-release-${{ matrix.name-suffix }} | |
repo: https://github.com/lv2/lilv.git | |
git_rev: v0.24.24 | |
meson_options: -Dtests=disabled --default-library=shared --buildtype release | |
notify_installed: ./notify_installed.sh | |
- name: Build catch | |
uses: ./.github/actions/build_and_upload_cmake_dependency | |
with: | |
name: catch2-v3.7.0-release-${{ matrix.name-suffix }} | |
repo: https://github.com/catchorg/Catch2.git | |
git_rev: v3.7.0 | |
configure_options: -DCMAKE_BUILD_TYPE=Release | |
- name: Build zita-resampler | |
uses: ./.github/actions/build_and_upload_cmake_dependency | |
with: | |
name: zita-resampler-095fe2c6-release-${{ matrix.name-suffix }} | |
repo: https://github.com/SanderVocke/zita-resampler.git | |
git_rev: 095fe2c6 | |
configure_options: -DCMAKE_BUILD_TYPE=Release | |
- name: Build breakpad | |
uses: ./.github/actions/build_and_upload_cmake_dependency | |
with: | |
name: breakpad-6b95400-release-${{ matrix.name-suffix }} | |
repo: https://github.com/snxd/breakpad.git | |
git_rev: 6b95400 | |
configure_options: -DCMAKE_BUILD_TYPE=Release -DBKPAD_UNITTESTS=0 -DPROCESSOR_UNITTESTS=0 -DBKPAD_DUMP_SYMS=ON -DBKPAD_MINIDUMP=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON | |
targets_part: --target breakpad --target breakpad_common --target dump_syms --target minidump_stackwalk | |
add_pkgconfig_path: null | |
upload_build_dir: true | |
collect: | |
needs: build | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- runs-on: ubuntu-latest | |
name-suffix: linux-x64 | |
- runs-on: ubuntu-latest | |
name-suffix: linux-arm | |
- runs-on: macos-14 | |
name-suffix: macos-arm | |
- runs-on: macos-12 | |
name-suffix: macos-x64 | |
- runs-on: windows-2022 | |
name-suffix: windows-msvc-x64 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: "*${{ matrix.name-suffix }}" | |
path: collected | |
merge-multiple: true | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: all_dependencies-${{ matrix.name-suffix }} | |
path: collected |