Skip to content

Commit

Permalink
Libfaust update (#165)
Browse files Browse the repository at this point in the history
* remove libfaust files
* dynamically download libfaust
* update faust, faustlibraries, and pybind11
* drop support for macOS python 3.7/3.8
* fix crash with `PluginProcessor.record_automation`
* fix some of the `isBox` functions in the Faust Box API.
  • Loading branch information
DBraun authored May 18, 2023
1 parent f92dbc8 commit b811b05
Show file tree
Hide file tree
Showing 49 changed files with 10,717 additions and 11,052 deletions.
94 changes: 55 additions & 39 deletions .github/workflows/all.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
jobs:

build-ubuntu:
runs-on: ubuntu-18.04
runs-on: ubuntu-20.04
strategy:
matrix:
include:
Expand All @@ -24,13 +24,13 @@ jobs:
# - { python-version: "3.10", pythonLibPath: "/opt/python/cp310-cp310/lib", pythonInclude: "/opt/python/cp310-cp310/include/python3.10", cibwbuild: "cp310-manylinux_aarch64"}

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
submodules: true

- name: Set up QEMU for aarch64 on Linux
if: runner.os == 'Linux'
uses: docker/setup-qemu-action@v1
uses: docker/setup-qemu-action@v2
with:
platforms: all

Expand All @@ -40,13 +40,18 @@ jobs:
rm thirdparty/faust/architecture/android/app/lib/libsndfile/lib/armeabi-v7a/libsndfile.so
rm thirdparty/faust/architecture/android/app/lib/libsndfile/lib/arm64-v8a/libsndfile.so
- name: Download libfaust
run: |
cd thirdparty/libfaust
sh download_libfaust.sh
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

- name: Build wheels
uses: pypa/[email protected].0
uses: pypa/[email protected].3
env:
CIBW_PLATFORM: linux
CIBW_BUILD: ${{ matrix.cibwbuild }}
Expand All @@ -56,28 +61,28 @@ jobs:
CIBW_BEFORE_BUILD_LINUX:
export PYTHONLIBPATH=${{ matrix.pythonLibPath }} && export PYTHONINCLUDEPATH=${{ matrix.pythonInclude }} && pip install --upgrade pip && sh -v build_linux.sh
CIBW_REPAIR_WHEEL_COMMAND_LINUX: >
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/dawdreamer:$PWD/thirdparty/libfaust/ubuntu-x86_64/lib && pip install auditwheel-symbols && (auditwheel repair -w {dest_dir} {wheel} || auditwheel-symbols --manylinux 2014 {wheel})
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/dawdreamer:$PWD/thirdparty/libfaust/ubuntu-x86_64/Release/lib && pip install auditwheel-symbols && (auditwheel repair -w {dest_dir} {wheel} || auditwheel-symbols --manylinux 2014 {wheel})
CIBW_TEST_REQUIRES: -r test-requirements.txt soundfile jax flax optax
CIBW_TEST_COMMAND: "rm -rf dawdreamer/*.so* && cd {project}/tests && python -m pytest -v ."
CIBW_ARCHS: auto64
CIBW_ARCHS_LINUX: "auto aarch64" # On an Linux Intel runner with qemu installed, build Intel and ARM wheels
CIBW_TEST_SKIP: "*311*"

- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v3
with:
name: my-wheel-artifact
path: ./wheelhouse/*.whl

build-ubuntu-docker:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04

strategy:
matrix:
include:
- { python-version: "3.9"}

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
submodules: true

Expand All @@ -89,24 +94,24 @@ jobs:
strategy:
matrix:
include:
- { os: windows-latest, python-version: "3.7", CIBW-BUILD: "cp37*"}
- { os: windows-latest, python-version: "3.8", CIBW-BUILD: "cp38*"}
- { os: windows-latest, python-version: "3.9", CIBW-BUILD: "cp39*"}
- { os: windows-latest, python-version: "3.10", CIBW-BUILD: "cp310*"}
- { os: windows-latest, python-version: "3.11", CIBW-BUILD: "cp311*"}
- { os: windows-2022, python-version: "3.7", CIBW-BUILD: "cp37*"}
- { os: windows-2022, python-version: "3.8", CIBW-BUILD: "cp38*"}
- { os: windows-2022, python-version: "3.9", CIBW-BUILD: "cp39*"}
- { os: windows-2022, python-version: "3.10", CIBW-BUILD: "cp310*"}
- { os: windows-2022, python-version: "3.11", CIBW-BUILD: "cp311*"}

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
submodules: true

- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.3
uses: microsoft/setup-msbuild@v1.1

- name: Get CMake
uses: lukka/get-cmake@latest
Expand All @@ -115,20 +120,25 @@ jobs:
run: |
Remove-Item -Recurse -Force "dawdreamer/faustlibraries/.git"
- name: Download libfaust
shell: cmd
run: |
cd thirdparty/libfaust
call download_libfaust.bat
- name: Build libsamplerate
run: |
cd thirdparty/libsamplerate
mkdir build_release
cmake -DCMAKE_BUILD_TYPE=Release -Bbuild_release
cd build_release
msbuild libsamplerate.sln /property:Configuration=Release
- name: Build Windows (Release)
run: |
msbuild Builds/VisualStudio2019/DawDreamer.sln /property:Configuration=Release
msbuild Builds/VisualStudio2022/DawDreamer.sln /property:Configuration=Release
- name: Install cibuildwheel
run: python -m pip install cibuildwheel>=2.3.1
run: python -m pip install cibuildwheel

- name: Build Wheels
run: |
Expand All @@ -140,9 +150,8 @@ jobs:
CIBW_TEST_COMMAND: "cd /D {project}\\tests && python -m pytest -v ."
CIBW_ARCHS: auto64
CIBW_BUILD: ${{matrix.CIBW-BUILD}}
CIBW_TEST_SKIP: "*311*"

- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v3
with:
name: my-wheel-artifact
path: ./wheelhouse/*.whl
Expand All @@ -166,14 +175,15 @@ jobs:
strategy:
matrix:
include:
- { os: macos-latest, build: cp37-macosx_x86_64, archs-macos: "x86_64", python-version: "3.7", osx-archs: "x86_64", ARCHS: "x86_64", python-major: "3.7m" }
- { os: macos-latest, build: cp38-macosx_universal2, archs-macos: "universal2", python-version: "3.8", osx-archs: "x86_64;arm64", ARCHS: "x86_64 arm64", python-major: "3.8" }
- { os: macos-latest, build: cp39-macosx_universal2, archs-macos: "universal2", python-version: "3.9", osx-archs: "x86_64;arm64", ARCHS: "x86_64 arm64", python-major: "3.9" }
- { os: macos-latest, build: cp310-macosx_universal2, archs-macos: "universal2", python-version: "3.10", osx-archs: "x86_64;arm64", ARCHS: "x86_64 arm64", python-major: "3.10" }
- { os: macos-latest, build: cp311-macosx_universal2, archs-macos: "universal2", python-version: "3.11", osx-archs: "x86_64;arm64", ARCHS: "x86_64 arm64", python-major: "3.11" }
- { os: macos-11, build: cp39-macosx_x86_64, python-version: "3.9", ARCHS: "x86_64" }
- { os: macos-11, build: cp310-macosx_x86_64, python-version: "3.10", ARCHS: "x86_64" }
- { os: macos-11, build: cp311-macosx_x86_64, python-version: "3.11", ARCHS: "x86_64" }
- { os: macos-11, build: cp39-macosx_arm64, python-version: "3.9", ARCHS: "arm64" }
- { os: macos-11, build: cp310-macosx_arm64, python-version: "3.10", ARCHS: "arm64" }
- { os: macos-11, build: cp311-macosx_arm64, python-version: "3.11", ARCHS: "arm64" }

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
submodules: true

Expand All @@ -183,36 +193,42 @@ jobs:
- name: Build libsamplerate
run: |
cd thirdparty/libsamplerate
mkdir build_release
cmake -DCMAKE_BUILD_TYPE=Release -Bbuild_release -DCMAKE_OSX_ARCHITECTURES="${{matrix.osx-archs}}" -DLIBSAMPLERATE_EXAMPLES=off -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15
cmake -DCMAKE_BUILD_TYPE=Release -Bbuild_release -DCMAKE_OSX_ARCHITECTURES="${{matrix.ARCHS}}" -DLIBSAMPLERATE_EXAMPLES=off -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0
make --directory=build_release
cd ../..
- name: clean faust libraries
run: |
rm -rf dawdreamer/faustlibraries/.git
- name: Download libfaust
run: |
cd thirdparty/libfaust
sh download_libfaust.sh
- name: Build wheels ${{ matrix.python-version }}
uses: pypa/[email protected].0
uses: pypa/[email protected].3
env:
# note that the Projucer project refers to PYTHONMAJOR and pythonLocation, so they must be set here
PYTHONMAJOR: ${{ matrix.python-major }}
MACOSX_DEPLOYMENT_TARGET: 10.15
PYTHONMAJOR: ${{ matrix.python-version }}
MACOSX_DEPLOYMENT_TARGET: 11.0
CIBW_BUILD_VERBOSITY: 1
CIBW_BEFORE_BUILD: |
export pythonLocation=$(python3-config --prefix)
otool -L $pythonLocation/bin/python3
xcodebuild ARCHS="${{matrix.ARCHS}}" ONLY_ACTIVE_ARCH=NO -configuration Release -project Builds/MacOSX/DawDreamer.xcodeproj/
mv Builds/MacOSX/build/Release/dawdreamer.so.dylib Builds/MacOSX/build/Release/dawdreamer.so
xcodebuild ARCHS="${{matrix.ARCHS}}" ONLY_ACTIVE_ARCH=NO -configuration Release-${{matrix.ARCHS}} -project Builds/MacOSX/DawDreamer.xcodeproj/ CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED="NO" CODE_SIGN_ENTITLEMENTS="" CODE_SIGNING_ALLOWED="NO"
cd Builds/MacOSX/build/Release-${{matrix.ARCHS}}
mv dawdreamer.so.dylib dawdreamer.so
CIBW_TEST_REQUIRES: -r test-requirements.txt
CIBW_TEST_COMMAND: "cd {project}/tests; python -m pytest -v ."
CIBW_BUILD: ${{matrix.build}}
CIBW_ARCHS: auto64
CIBW_ARCHS_MACOS: ${{matrix.archs-macos}}
# todo: want to test Python 3.10 and 3.11
CIBW_TEST_SKIP: "*310* *311*"
CIBW_ARCHS_MACOS: ${{matrix.ARCHS}}
CIBW_ENVIRONMENT_MACOS: ARCHS="${{matrix.ARCHS}}"
# todo: want to test Python 3.11
CIBW_TEST_SKIP: "*311* *arm64*"

- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v3
with:
name: my-wheel-artifact
path: ./wheelhouse/*.whl
Expand Down
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@
url = https://github.com/libsndfile/libsamplerate
[submodule "dawdreamer/faustlibraries"]
path = dawdreamer/faustlibraries
url = https://github.com/grame-cncm/faustlibraries.git
url = https://github.com/grame-cncm/faustlibraries
Loading

0 comments on commit b811b05

Please sign in to comment.