* [python] fix warp callback I recently broke this making it a no-op due to the vec reference becoming a by-value copy in python callback. This fix provides a simple adapter like we had before allowing python to return modified values from the callback. * update torus_knot.py demo to expose both warp modes * add torus_knot.py to pytest * use pytest in github CI * add pytest to flake.nix
236 lines
7.4 KiB
YAML
236 lines
7.4 KiB
YAML
# This is a basic workflow to help you get started with Actions
|
|
|
|
name: CI
|
|
|
|
# Controls when the action will run. Triggers the workflow on push or pull request
|
|
# events but only for the master branch
|
|
on:
|
|
push:
|
|
branches: [ master ]
|
|
pull_request:
|
|
branches: [ master ]
|
|
|
|
jobs:
|
|
build:
|
|
timeout-minutes: 45
|
|
strategy:
|
|
matrix:
|
|
parallel_backend: [NONE, TBB]
|
|
runs-on: ubuntu-22.04
|
|
if: github.event.pull_request.draft == false
|
|
steps:
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get -y update
|
|
DEBIAN_FRONTEND=noninteractive sudo apt install -y libglm-dev libgtest-dev libassimp-dev git libtbb-dev libthrust-dev pkg-config libpython3-dev python3 python3-distutils python3-pip lcov
|
|
pip install trimesh pytest
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
- uses: jwlawson/actions-setup-cmake@v1.12
|
|
- name: Build ${{matrix.backend}}
|
|
if: matrix.parallel_backend != 'NONE'
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DMANIFOLD_DEBUG=ON -DMANIFOLD_EXPORT=ON -DMANIFOLD_PAR=${{matrix.parallel_backend}} .. && make
|
|
- name: Test ${{matrix.parallel_backend}}
|
|
if: matrix.parallel_backend != 'NONE'
|
|
run: |
|
|
export PYTHONPATH=$PYTHONPATH:$(pwd)/build/bindings/python
|
|
cd build/test
|
|
./manifold_test
|
|
cd ../../
|
|
python3 bindings/python/examples/run_all.py -e
|
|
python3 -m pytest
|
|
- name: Coverage Report
|
|
# only do code coverage for default sequential backend, it seems that TBB
|
|
# backend will cause failure
|
|
# perhaps issue related to invalid memory access?
|
|
if: matrix.parallel_backend == 'NONE'
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DMANIFOLD_PAR=${{matrix.parallel_backend}} -DCODE_COVERAGE=ON .. && make
|
|
lcov --capture --initial --directory . --output-file ./code_coverage_init.info
|
|
cd test
|
|
./manifold_test
|
|
cd ../
|
|
lcov --capture --directory . --output-file ./code_coverage_test.info
|
|
lcov --add-tracefile ./code_coverage_init.info --add-tracefile ./code_coverage_test.info --output-file ./code_coverage_total.info
|
|
lcov --remove ./code_coverage_total.info '/usr/*' '*/third_party/*' '*/test/*' '*/extras/*' '*/bindings/*' --output-file ./code_coverage.info
|
|
- uses: codecov/codecov-action@v2
|
|
if: matrix.parallel_backend == 'NONE'
|
|
with:
|
|
files: build/code_coverage.info
|
|
fail_ci_if_error: false
|
|
name: ${{matrix.parallel_backend}}
|
|
|
|
build_cbind:
|
|
timeout-minutes: 30
|
|
runs-on: ubuntu-22.04
|
|
if: github.event.pull_request.draft == false
|
|
steps:
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get -y update
|
|
DEBIAN_FRONTEND=noninteractive sudo apt install -y libgtest-dev libglm-dev libassimp-dev git libtbb-dev pkg-config libpython3-dev python3 python3-distutils python3-pip
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
- uses: jwlawson/actions-setup-cmake@v1.12
|
|
- name: Build C bindings with TBB
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DMANIFOLD_DEBUG=ON -DMANIFOLD_CBIND=ON -DMANIFOLD_PAR=TBB .. && make
|
|
- name: Test ${{matrix.parallel_backend}}
|
|
run: |
|
|
cd build/test
|
|
./manifold_test --gtest_filter=CBIND.*
|
|
|
|
build_wasm:
|
|
timeout-minutes: 30
|
|
runs-on: ubuntu-22.04
|
|
if: github.event.pull_request.draft == false
|
|
steps:
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get -y update
|
|
DEBIAN_FRONTEND=noninteractive sudo apt install -y nodejs libglm-dev
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
- name: Setup WASM
|
|
run: |
|
|
# setup emscripten
|
|
git clone https://github.com/emscripten-core/emsdk.git
|
|
cd emsdk
|
|
./emsdk install 3.1.45
|
|
./emsdk activate 3.1.45
|
|
- uses: jwlawson/actions-setup-cmake@v1.12
|
|
- name: Build WASM
|
|
run: |
|
|
source ./emsdk/emsdk_env.sh
|
|
mkdir build
|
|
cd build
|
|
emcmake cmake -DCMAKE_BUILD_TYPE=Release .. && emmake make
|
|
- name: Test WASM
|
|
run: |
|
|
cd build/test
|
|
node ./manifold_test.js
|
|
- name: Test examples
|
|
run: |
|
|
cd bindings/wasm/examples
|
|
npm ci
|
|
npm run build
|
|
npm test
|
|
- name: Upload WASM files
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: wasm
|
|
path: bindings/wasm/examples/dist/
|
|
retention-days: 90
|
|
|
|
build_windows:
|
|
timeout-minutes: 30
|
|
strategy:
|
|
matrix:
|
|
parallel_backend: [NONE, TBB]
|
|
max-parallel: 1
|
|
runs-on: windows-2019
|
|
if: github.event.pull_request.draft == false
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
- uses: jwlawson/actions-setup-cmake@v1.12
|
|
- uses: ilammy/msvc-dev-cmd@v1
|
|
- name: Build ${{matrix.backend}}
|
|
shell: powershell
|
|
run: |
|
|
cmake . -DCMAKE_BUILD_TYPE=Release -B build -DMANIFOLD_DEBUG=ON -DPYBIND11_FINDPYTHON=OFF -DMANIFOLD_PAR=${{matrix.parallel_backend}} -A x64
|
|
cd build
|
|
cmake --build . --target ALL_BUILD --config Release
|
|
- name: Test ${{matrix.parallel_backend}}
|
|
shell: bash
|
|
run: |
|
|
cd build/test
|
|
./Release/manifold_test.exe
|
|
|
|
build_mxe:
|
|
timeout-minutes: 30
|
|
strategy:
|
|
matrix:
|
|
parallel_backend: [NONE, TBB]
|
|
max-parallel: 1
|
|
runs-on: ubuntu-latest
|
|
container: openscad/mxe-x86_64-gui:latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
- name: Build
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DMANIFOLD_PYBIND=OFF -DMANIFOLD_DEBUG=ON -DMANIFOLD_PAR=${{matrix.parallel_backend}} .. && make
|
|
- name: Test
|
|
run: |
|
|
cd build/test
|
|
./manifold_test
|
|
|
|
build_mac:
|
|
timeout-minutes: 30
|
|
strategy:
|
|
matrix:
|
|
parallel_backend: [NONE, TBB]
|
|
runs-on: macos-latest
|
|
if: github.event.pull_request.draft == false
|
|
steps:
|
|
- name: Install common dependencies
|
|
run: |
|
|
brew install pkg-config googletest assimp
|
|
pip install trimesh
|
|
- name: Install TBB
|
|
if: matrix.parallel_backend == 'TBB'
|
|
run: brew install tbb
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
- uses: jwlawson/actions-setup-cmake@v1.12
|
|
- name: Build
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DMANIFOLD_DEBUG=ON -DMANIFOLD_EXPORT=ON -DMANIFOLD_PAR=${{matrix.parallel_backend}} .. && make
|
|
- name: Test
|
|
run: |
|
|
cd build/test
|
|
./manifold_test
|
|
|
|
build_nix:
|
|
timeout-minutes: 30
|
|
strategy:
|
|
matrix:
|
|
variant: [none, tbb, js]
|
|
runs-on: ubuntu-latest
|
|
if: github.event.pull_request.draft == false
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
- uses: cachix/install-nix-action@v22
|
|
- run: nix build -L '.?submodules=1#manifold-${{matrix.variant}}'
|
|
|
|
build_nix_python:
|
|
timeout-minutes: 30
|
|
runs-on: ubuntu-latest
|
|
if: github.event.pull_request.draft == false
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
- uses: cachix/install-nix-action@v22
|
|
- run: nix build -L '.?submodules=1#manifold3d'
|