Skip to content

[ci] upgrading packaging (ubuntu-24.04, macos-14) #1

[ci] upgrading packaging (ubuntu-24.04, macos-14)

[ci] upgrading packaging (ubuntu-24.04, macos-14) #1

Workflow file for this run

name: packaging
on:
push:
branch-ignore:
- '*'
tags:
- 'v*'
- 'dev*'
- '*-*-*'
- '*.*.*'
- 'pack*'
env:
PV_TAG: v5.13.0
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, ubuntu-24.04]
steps:
- uses: actions/checkout@v4
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 \
libqhull-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@v4
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, ubuntu-24.04]
steps:
- uses: actions/checkout@v4
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@v4.1.7
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: Set PYTHONPATH for Ubuntu 24.04 pvpython
if: matrix.os == 'ubuntu-24.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@v4
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
# remove buggy example
# related issue: https://github.com/topology-tool-kit/ttk/issues/1055
rm python/nestedTrackingFromOverlap.py
# remove examples which fill up the memory
rm python/topologicalOptimization_darkSky.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: ${{ matrix.os }}
strategy:
matrix:
os: [macos-12, macos-14]
env:
DYLD_LIBRARY_PATH: /usr/local/lib
steps:
- uses: actions/checkout@v4
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 reinstall python
brew install --cask xquartz
brew install llvm mesa glew qt@5 ninja
# TTK dependencies
brew install boost eigen graphviz spectra sqlite zlib numpy qhull
- name: Install optional dependencies
uses: ./.github/actions/install-deps-unix
- name: Fetch & install TTK-ParaView
run: |
if [[ "${{ matrix.os }}" == "macos-12" ]]; then
wget https://github.com/${{ env.PV_REPO }}/releases/download/${{ env.PV_TAG }}/ttk-paraview-${{ env.PV_TAG }}-${{ matrix.os }}.tar.gz
tar xzf ttk-paraview-${{ env.PV_TAG }}-${{ matrix.os }}.tar.gz
fi
if [[ "${{ matrix.os }}" == "macos-14" ]]; then
wget https://github.com/${{ env.PV_REPO }}/releases/download/${{ env.PV_TAG }}/ttk-paraview-${{ env.PV_TAG }}-${{ matrix.os }}-arm64.tar.gz
tar xzf ttk-paraview-${{ env.PV_TAG }}-${{ matrix.os }}-arm64.tar.gz
fi
sudo cp -r ttk-paraview/* /usr/local
pvpython -m pip install --break-system-packages 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@v4
with:
name: ttk-${{ matrix.os }}.tar.gz
path: build/ttk.tar.gz
# -----------#
# Test macOS #
# -----------#
test-macos:
needs: build-macos
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-12, macos-14]
env:
DYLD_LIBRARY_PATH: /usr/local/lib
steps:
- uses: actions/checkout@v4
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 reinstall python
brew install --cask xquartz
brew install llvm mesa glew qt@5 ninja
# TTK dependencies
brew install boost eigen graphviz spectra sqlite zlib numpy qhull
- name: Fetch TTK-ParaView
run: |
if [[ "${{ matrix.os }}" == "macos-12" ]]; then
wget -O ttk-paraview.tar.gz https://github.com/${{ env.PV_REPO }}/releases/download/${{ env.PV_TAG }}/ttk-paraview-${{ env.PV_TAG }}-${{ matrix.os }}.tar.gz
fi
if [[ "${{ matrix.os }}" == "macos-14" ]]; then
wget -O ttk-paraview.tar.gz https://github.com/${{ env.PV_REPO }}/releases/download/${{ env.PV_TAG }}/ttk-paraview-${{ env.PV_TAG }}-${{ matrix.os }}-arm64.tar.gz
fi
- name: Fetch TTK .tar.gz artifact
uses: actions/download-artifact@v4.1.7
with:
name: ttk.tar.gz
- name: Install binary archives packages
run: |
tar xzf ttk-paraview.tar.gz
sudo cp -r ttk-paraview/* /usr/local
tar xzf ttk.tar.gz
sudo cp -r ttk/* /usr/local
pvpython -m pip install --break-system-packages 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.12/site-packages:$PYTHONPATH" >> $GITHUB_ENV
- name: Run TTK tests
uses: ./.github/actions/test-ttk-unix
- uses: actions/checkout@v4
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
# remove buggy example
# related issue: https://github.com/topology-tool-kit/ttk/issues/1055
rm python/nestedTrackingFromOverlap.py
# remove examples which fill up the memory
rm python/topologicalOptimization_darkSky.py
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@v4
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" libboost-devel glew eigen spectralib zfp \
sqlite scikit-learn zlib qhull llvm-openmp graphviz clangxx
- 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-${{ env.PV_TAG }}.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@v4
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@v4
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" libboost-devel glew eigen spectralib zfp \
sqlite scikit-learn qhull zlib llvm-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@v4.1.7
with:
name: ttk.exe
- name: Install TTK-ParaView and TTK
shell: cmd
run: |
ttk-paraview-${{ env.PV_TAG }}.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 [TEMPORARILY NOT ENFORCED]
continue-on-error: true
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@v4
with:
repository: "topology-tool-kit/ttk-data"
ref: "dev"
path: "ttk-data"
name: Checkout ttk-data
- name: Resample large datasets
shell: cmd
run: |
set PYTHONPATH=%CONDA_ROOT%\Lib
set PV_PLUGIN_PATH=%TTK_DIR%\bin\plugins
cd ttk-data
pvpython.exe python\resample.py ctBones.vti 128 128 128 ctBones.vti
- 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;%CONDA_ROOT%\DLLs
set PV_PLUGIN_PATH=%TTK_DIR%\bin\plugins
cd ttk-data
rm python/nestedTrackingFromOverlap.py
# remove examples which fill up the memory
rm python/topologicalOptimization_darkSky.py
pvpython.exe -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@v4.1.7
- 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 Ubuntu Noble Numbat .deb as Release Asset
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
file: ttk-ubuntu-24.04.deb/ttk.deb
asset_name: ttk-$tag-ubuntu-24.04.deb
- name: Upload MacOS 12 binary archives as Release Asset
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
file: ttk-macos-12.tar.gz/ttk.tar.gz
asset_name: ttk-$tag-macos-12.tar.gz
- name: Upload MacOS 14 binary archives as Release Asset
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
file: ttk-macos-14.tar.gz/ttk.tar.gz
asset_name: ttk-$tag-macos-14-arm64.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*