disable double templating by default #6
Workflow file for this run
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: packaging | |
on: | |
push: | |
branch-ignore: | |
- '*' | |
tags: | |
- 'v*' | |
- 'dev*' | |
- '*-*-*' | |
- '*.*.*' | |
- 'pack*' | |
env: | |
PV_TAG: v5.11.1 | |
PV_REPO: topology-tool-kit/ttk-paraview | |
jobs: | |
# -------------# | |
# Build Ubuntu # | |
# -------------# | |
build-linux: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, ubuntu-22.04] | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout TTK source code | |
- name: Install Ubuntu dependencies | |
run: | | |
sudo apt update | |
# TTK dependencies | |
sudo apt install -y \ | |
libboost-system-dev \ | |
libeigen3-dev \ | |
libgraphviz-dev \ | |
libsqlite3-dev \ | |
libgl1-mesa-dev \ | |
libwebsocketpp-dev \ | |
graphviz \ | |
python3-sklearn \ | |
zlib1g-dev \ | |
dpkg-dev | |
- name: Install optional dependencies | |
uses: ./.github/actions/install-deps-unix | |
- name: Fetch TTK-ParaView headless Debian package | |
run: | | |
wget -O ttk-paraview.deb \ | |
https://github.com/${{ env.PV_REPO }}/releases/download/${{ env.PV_TAG }}/ttk-paraview-${{ env.PV_TAG }}-${{ matrix.os }}.deb | |
- name: Install ParaView .deb | |
run: | | |
sudo apt install ./ttk-paraview.deb | |
- name: Create & configure TTK build directory | |
run: | | |
mkdir build | |
cd build | |
cmake \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_INSTALL_PREFIX=/usr \ | |
-DTTK_BUILD_PARAVIEW_PLUGINS=TRUE \ | |
-DTTK_BUILD_VTK_WRAPPERS=TRUE \ | |
-DTTK_BUILD_STANDALONE_APPS=TRUE \ | |
-DTTK_ENABLE_KAMIKAZE=TRUE \ | |
-DTTK_ENABLE_DOUBLE_TEMPLATING=FALSE \ | |
-DTTK_ENABLE_CPU_OPTIMIZATION=FALSE \ | |
-DTTK_ENABLE_SHARED_BASE_LIBRARIES=TRUE \ | |
$GITHUB_WORKSPACE | |
- name: Build TTK | |
run: | | |
cd build | |
# not enough RAM to build in parallel (or with ninja) | |
cmake --build . | |
- name: Package TTK & update package information | |
run: | | |
cd build | |
cpack -G DEB | |
- name: Upload TTK .deb package | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ttk-${{ matrix.os }}.deb | |
path: build/ttk.deb | |
# ------------# | |
# Test Ubuntu # | |
# ------------# | |
test-linux: | |
needs: build-linux | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, ubuntu-22.04] | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout TTK source code | |
- name: Fetch TTK-ParaView headless Debian package | |
run: | | |
wget -O ttk-paraview.deb \ | |
https://github.com/${{ env.PV_REPO }}/releases/download/${{ env.PV_TAG }}/ttk-paraview-${{ env.PV_TAG }}-${{ matrix.os }}.deb | |
- name: Fetch TTK .deb artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: ttk-${{ matrix.os }}.deb | |
- name: Install generated .deb packages | |
run: | | |
sudo apt update | |
sudo apt install ./ttk-paraview.deb | |
sudo apt install ./ttk.deb | |
- name: Set PYTHONPATH for Ubuntu 22.04 pvpython | |
if: matrix.os == 'ubuntu-22.04' | |
run: | | |
# pvpython does not embed the correct PYTHONPATH | |
echo "PYTHONPATH=/usr/lib/python3/dist-packages:$PYTHONPATH" >> $GITHUB_ENV | |
- name: Run TTK tests | |
uses: ./.github/actions/test-ttk-unix | |
- uses: actions/checkout@v3 | |
with: | |
repository: "topology-tool-kit/ttk-data" | |
ref: "dev" | |
path: "ttk-data" | |
name: Checkout ttk-data | |
- name: Resample large datasets | |
shell: python3 {0} | |
working-directory: ./ttk-data | |
run: | | |
from paraview import simple | |
for ds in ["ctBones.vti"]: | |
vti = simple.XMLImageDataReader(FileName=ds) | |
rsi = simple.ResampleToImage(Input=vti) | |
rsi.SamplingDimensions = [128, 128, 128] | |
simple.SaveData(ds, rsi) | |
- name: Run ttk-data Python scripts | |
run: | | |
cd ttk-data | |
# no X server | |
rm python/geometryApproximation.py | |
python3 -u python/run.py | |
- name: Test ttk-data Python scripts results [NOT ENFORCED] | |
continue-on-error: true | |
run: | | |
cd ttk-data | |
cat python/res.json | |
diff python/hashes/${{ matrix.os }}.json python/res.json | |
# ------------# | |
# Build macOS # | |
# ------------# | |
build-macos: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout TTK source code | |
- name: Remove hosted Python | |
run: | | |
sudo rm -rf /Library/Frameworks/Python.framework | |
sudo rm -rf /usr/local/Frameworks/Python.framework | |
- name: Install macOS dependencies | |
run: | | |
# ParaView dependencies | |
brew install --cask xquartz | |
brew install wget llvm libomp mesa glew qt@5 ninja python | |
# TTK dependencies | |
brew install boost eigen graphviz embree websocketpp | |
- name: Install optional dependencies | |
uses: ./.github/actions/install-deps-unix | |
- name: Fetch & install TTK-ParaView | |
run: | | |
wget https://github.com/${{ env.PV_REPO }}/releases/download/${{ env.PV_TAG }}/ttk-paraview-${{ env.PV_TAG }}.tar.gz | |
tar xzf ttk-paraview-${{ env.PV_TAG }}.tar.gz | |
sudo cp -r ttk-paraview/* /usr/local | |
pvpython -m pip install scikit-learn | |
- name: Set compilers as environment variables | |
run: | | |
echo "CC=$(brew --prefix llvm)/bin/clang" >> $GITHUB_ENV | |
echo "CXX=$(brew --prefix llvm)/bin/clang++" >> $GITHUB_ENV | |
- name: Create & configure TTK build directory | |
run: | | |
mkdir build | |
cd build | |
cmake \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DQt5_DIR=$(brew --prefix qt@5)/lib/cmake/Qt5 \ | |
-DPython3_FIND_STRATEGY=LOCATION \ | |
-DPython3_ROOT_DIR=$(brew --prefix python) \ | |
-DTTK_BUILD_PARAVIEW_PLUGINS=TRUE \ | |
-DTTK_BUILD_VTK_WRAPPERS=TRUE \ | |
-DTTK_BUILD_STANDALONE_APPS=TRUE \ | |
-DTTK_ENABLE_KAMIKAZE=TRUE \ | |
-DTTK_ENABLE_DOUBLE_TEMPLATING=TRUE \ | |
-DTTK_ENABLE_CPU_OPTIMIZATION=FALSE \ | |
-DTTK_ENABLE_SHARED_BASE_LIBRARIES=TRUE \ | |
-GNinja \ | |
$GITHUB_WORKSPACE | |
- name: Build TTK | |
run: | | |
cd build | |
cmake --build . --parallel | |
- name: Package TTK | |
run: | | |
cd build | |
cpack -G TGZ | |
- name: Upload compressed binaries | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ttk.tar.gz | |
path: build/ttk.tar.gz | |
# -----------# | |
# Test macOS # | |
# -----------# | |
test-macos: | |
needs: build-macos | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout TTK source code | |
- name: Remove hosted Python | |
run: | | |
sudo rm -rf /Library/Frameworks/Python.framework | |
sudo rm -rf /usr/local/Frameworks/Python.framework | |
- name: Install macOS dependencies | |
run: | | |
# ParaView dependencies | |
brew install --cask xquartz | |
brew install wget llvm libomp mesa glew qt@5 ninja python | |
# TTK dependencies | |
brew install boost eigen graphviz embree | |
- name: Fetch TTK-ParaView | |
run: | | |
wget https://github.com/${{ env.PV_REPO }}/releases/download/${{ env.PV_TAG }}/ttk-paraview-${{ env.PV_TAG }}.tar.gz | |
- name: Fetch TTK .tar.gz artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: ttk.tar.gz | |
- name: Install binary archives packages | |
run: | | |
tar xzf ttk-paraview-${{ env.PV_TAG}}.tar.gz | |
sudo cp -r ttk-paraview/* /usr/local | |
tar xzf ttk.tar.gz | |
sudo cp -r ttk/* /usr/local | |
pvpython -m pip install scikit-learn | |
- name: Set environment variables | |
run: | | |
echo "CC=$(brew --prefix llvm)/bin/clang" >> $GITHUB_ENV | |
echo "CXX=$(brew --prefix llvm)/bin/clang++" >> $GITHUB_ENV | |
echo "CMAKE_PREFIX_PATH=$(brew --prefix qt@5)/lib/cmake:$CMAKE_PREFIX_PATH" >> $GITHUB_ENV | |
# pvpython does not embed the correct PYTHONPATH | |
echo "PYTHONPATH=/usr/local/lib/python3.10/site-packages:$PYTHONPATH" >> $GITHUB_ENV | |
- name: Run TTK tests | |
uses: ./.github/actions/test-ttk-unix | |
- uses: actions/checkout@v3 | |
with: | |
repository: "topology-tool-kit/ttk-data" | |
ref: "dev" | |
path: "ttk-data" | |
name: Checkout ttk-data | |
- name: Run ttk-data Python scripts | |
run: | | |
cd ttk-data | |
pvpython -u python/run.py | |
env: | |
PV_PLUGIN_PATH: /usr/local/bin/plugins/TopologyToolKit | |
- name: Test ttk-data Python scripts results [NOT ENFORCED] | |
continue-on-error: true | |
run: | | |
cd ttk-data | |
cat python/res.json | |
diff python/hashes/macOS.json python/res.json | |
# --------------# | |
# Build Windows # | |
# --------------# | |
build-windows: | |
runs-on: windows-2022 | |
env: | |
CONDA_ROOT: C:\Miniconda | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout TTK source code | |
- uses: s-weigand/setup-conda@v1 | |
- name: Install dependencies with conda | |
shell: bash | |
run: | | |
conda install -c conda-forge "qt>=5.12" boost eigen spectralib zfp \ | |
scikit-learn openmp graphviz websocketpp | |
- name: Remove hosted Python | |
shell: bash | |
run: | | |
rm -rf C:/hostedtoolcache/windows/Python | |
- name: Fetch TTK-ParaView installer | |
run: | | |
curl.exe -OL https://github.com/${{ env.PV_REPO }}/releases/download/${{ env.PV_TAG }}/ttk-paraview-${{ env.PV_TAG }}.exe | |
- name: Install ParaView | |
shell: cmd | |
run: | | |
ttk-paraview.exe /S | |
- name: Fetch Visual C++ redistribuable run-time | |
run: | | |
curl.exe -OL https://aka.ms/vs/16/release/vc_redist.x64.exe | |
- name: Create & configure TTK build directory | |
shell: cmd | |
run: | | |
set CMAKE_PREFIX_PATH=%CONDA_ROOT%\Library\lib\cmake;%CONDA_ROOT%\Library\share\eigen3\cmake;%CONDA_ROOT%\Library\cmake;%ProgramFiles%\TTK-ParaView\lib\cmake | |
mkdir build | |
cd build | |
cmake ^ | |
-DCMAKE_POLICY_DEFAULT_CMP0092=NEW ^ | |
-DBUILD_SHARED_LIBS:BOOL=TRUE ^ | |
-DCMAKE_INSTALL_PREFIX="%ProgramFiles%\TTK" ^ | |
-DPython3_ROOT_DIR="%CONDA_ROOT%" ^ | |
-DGraphviz_INCLUDE_DIR="%CONDA_ROOT%\Library\include\graphviz" ^ | |
-DGraphviz_CDT_LIBRARY="%CONDA_ROOT%\Library\lib\cdt.lib" ^ | |
-DGraphviz_GVC_LIBRARY="%CONDA_ROOT%\Library\lib\gvc.lib" ^ | |
-DGraphviz_CGRAPH_LIBRARY="%CONDA_ROOT%\Library\lib\cgraph.lib" ^ | |
-DGraphviz_PATHPLAN_LIBRARY="%CONDA_ROOT%\Library\lib\pathplan.lib" ^ | |
-DTTK_BUILD_PARAVIEW_PLUGINS=TRUE ^ | |
-DTTK_BUILD_VTK_WRAPPERS=TRUE ^ | |
-DTTK_BUILD_STANDALONE_APPS=TRUE ^ | |
-DTTK_ENABLE_KAMIKAZE=TRUE ^ | |
-DTTK_ENABLE_DOUBLE_TEMPLATING=FALSE ^ | |
-DTTK_ENABLE_OPENMP=TRUE ^ | |
-DTTK_ENABLE_CPU_OPTIMIZATION=FALSE ^ | |
-DTTK_ENABLE_SHARED_BASE_LIBRARIES=TRUE ^ | |
-G"Visual Studio 17 2022" ^ | |
-Tclangcl ^ | |
.. | |
- name: Build TTK | |
shell: bash | |
run: | | |
cd build | |
cmake --build . --config Release --parallel | |
- name: Package TTK | |
shell: bash | |
run: | | |
cd build | |
cpack -C Release -G NSIS64 | |
- name: Upload TTK .exe package | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ttk.exe | |
path: build/ttk.exe | |
# -------------# | |
# Test Windows # | |
# -------------# | |
test-windows: | |
needs: build-windows | |
runs-on: windows-2022 | |
env: | |
PV_DIR: C:\Program Files\TTK-ParaView | |
TTK_DIR: C:\Program Files\TTK | |
CONDA_ROOT: C:\Miniconda | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout TTK source code | |
- uses: s-weigand/setup-conda@v1 | |
- name: Install dependencies with conda | |
shell: bash | |
run: | | |
conda install -c conda-forge "qt>=5.12" boost eigen spectralib zfp \ | |
scikit-learn openmp graphviz | |
- name: Remove hosted Python | |
shell: bash | |
run: | | |
rm -rf C:/hostedtoolcache/windows/Python | |
- name: Fetch TTK-ParaView installer | |
run: | | |
curl.exe -OL https://github.com/${{ env.PV_REPO }}/releases/download/${{ env.PV_TAG }}/ttk-paraview-${{ env.PV_TAG }}.exe | |
- name: Fetch TTK .exe artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: ttk.exe | |
- name: Install TTK-ParaView and TTK | |
shell: cmd | |
run: | | |
ttk-paraview.exe /S | |
ttk.exe /S | |
- name: Set PATH environment variable | |
shell: bash | |
run: | | |
echo "$PV_DIR/bin" >> $GITHUB_PATH | |
echo "$TTK_DIR/bin" >> $GITHUB_PATH | |
- name: Test C++ example | |
shell: cmd | |
run: | | |
set CMAKE_PREFIX_PATH=%TTK_DIR%\lib\cmake;%PV_DIR%\lib\cmake | |
cd %GITHUB_WORKSPACE%\examples\c++ | |
mkdir build | |
cd build | |
cmake -G"Visual Studio 17 2022" -Tclangcl .. | |
cmake --build . --config Release --parallel | |
Release\ttkExample-c++.exe -i ..\..\data\inputData.off | |
- name: Test VTK-C++ example | |
shell: cmd | |
run: | | |
set CMAKE_PREFIX_PATH=%TTK_DIR%\lib\cmake;%PV_DIR%\lib\cmake | |
cd %GITHUB_WORKSPACE%\examples\vtk-c++ | |
mkdir build | |
cd build | |
cmake -G"Visual Studio 17 2022" -Tclangcl .. | |
cmake --build . --config Release --parallel | |
Release\ttkExample-vtk-c++.exe -i ..\..\data\inputData.vtu | |
- name: Test Python example | |
shell: cmd | |
run: | | |
set PYTHONPATH=%PV_DIR%\bin\Lib\site-packages;%TTK_DIR%\bin\Lib\site-packages;%CONDA_ROOT%\Lib | |
cd %GITHUB_WORKSPACE%\examples\python | |
python example.py ..\data\inputData.vtu | |
- name: Test pvpython example | |
shell: cmd | |
run: | | |
set PYTHONPATH=%CONDA_ROOT%\Lib | |
set PV_PLUGIN_PATH=%TTK_DIR%\bin\plugins | |
cd %GITHUB_WORKSPACE%\examples\pvpython | |
pvpython.exe example.py ..\data\inputData.vtu | |
- name: Test standalone | |
shell: cmd | |
run: | | |
cd %GITHUB_WORKSPACE%\examples\vtk-c++ | |
ttkHelloWorldCmd.exe -i %GITHUB_WORKSPACE%\examples\data\inputData.vtu | |
- uses: actions/checkout@v3 | |
with: | |
repository: "topology-tool-kit/ttk-data" | |
ref: "dev" | |
path: "ttk-data" | |
name: Checkout ttk-data | |
- name: Resample large datasets | |
shell: python | |
working-directory: ./ttk-data | |
run: | | |
from paraview import simple | |
for ds in ["ctBones.vti"]: | |
vti = simple.XMLImageDataReader(FileName=ds) | |
rsi = simple.ResampleToImage(Input=vti) | |
rsi.SamplingDimensions = [128, 128, 128] | |
simple.SaveData(ds, rsi) | |
env: | |
PYTHONPATH: ${{ env.PV_DIR }}\bin\Lib\site-packages | |
- name: Run ttk-data Python scripts | |
shell: cmd | |
run: | | |
set PYTHONPATH=%PV_DIR%\bin\Lib\site-packages;%TTK_DIR%\bin\Lib\site-packages;%CONDA_ROOT%\Lib | |
set PV_PLUGIN_PATH=%TTK_DIR%\bin\plugins | |
cd ttk-data | |
python -u python\run.py | |
- name: Test ttk-data Python scripts results [NOT ENFORCED] | |
continue-on-error: true | |
shell: cmd | |
run: | | |
cd ttk-data | |
type python\res.json | |
FC python\hashes\windows.json python\res.json | |
# ---------------# | |
# Create release # | |
# ---------------# | |
create-release: | |
runs-on: ubuntu-latest | |
needs: [test-linux, test-macos, test-windows] | |
steps: | |
- name: Delete previous release | |
uses: actions/github-script@v6 | |
continue-on-error: true | |
with: | |
script: | | |
const { owner, repo } = context.repo | |
const { data: { id } } = await github.rest.repos.getReleaseByTag({ | |
owner, | |
repo, | |
tag: "${{ github.ref_name }}" | |
}) | |
await github.rest.repos.deleteRelease({ owner, repo, release_id: id }) | |
- name: Create Release | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const { owner, repo } = context.repo | |
await github.rest.repos.createRelease({ | |
owner, | |
repo, | |
tag_name: "${{ github.ref_name }}", | |
name: "Release ${{ github.ref_name }}", | |
draft: false, | |
prerelease: true | |
}) | |
- name: Fetch all uploaded artifacts | |
uses: actions/download-artifact@v3 | |
- name: Upload Ubuntu Focal .deb as Release Asset | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
tag: ${{ github.ref }} | |
file: ttk-ubuntu-20.04.deb/ttk.deb | |
asset_name: ttk-$tag-ubuntu-20.04.deb | |
- name: Upload Ubuntu Jammy .deb as Release Asset | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
tag: ${{ github.ref }} | |
file: ttk-ubuntu-22.04.deb/ttk.deb | |
asset_name: ttk-$tag-ubuntu-22.04.deb | |
- name: Upload macOS binary archives as Release Asset | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
tag: ${{ github.ref }} | |
file: ttk.tar.gz/ttk.tar.gz | |
asset_name: ttk-$tag.tar.gz | |
- name: Upload Windows .exe as Release Asset | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
tag: ${{ github.ref }} | |
file: ttk.exe/ttk.exe | |
asset_name: ttk-$tag.exe | |
- name: Delete package artifacts | |
uses: geekyeggo/delete-artifact@v2 | |
with: | |
name: | | |
ttk* |