Skip to content

Commit

Permalink
Merge pull request #1063 from julien-tierny/ci
Browse files Browse the repository at this point in the history
[ci] package workflow upgrade (ubuntu-24.04, macos-14, pv513)
  • Loading branch information
julien-tierny authored Sep 18, 2024
2 parents 483a214 + a8f08c4 commit 6903659
Showing 1 changed file with 126 additions and 29 deletions.
155 changes: 126 additions & 29 deletions .github/workflows/package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ on:
- 'pack*'

env:
PV_TAG: v5.12.0
PV_TAG: v5.13.0
PV_REPO: topology-tool-kit/ttk-paraview

jobs:
Expand All @@ -24,7 +24,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-20.04, ubuntu-22.04]
os: [ubuntu-20.04, ubuntu-22.04, ubuntu-24.04]
steps:
- uses: actions/checkout@v4
name: Checkout TTK source code
Expand Down Expand Up @@ -99,7 +99,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-20.04, ubuntu-22.04]
os: [ubuntu-20.04, ubuntu-22.04, ubuntu-24.04]
steps:
- uses: actions/checkout@v4
name: Checkout TTK source code
Expand All @@ -126,6 +126,12 @@ jobs:
# 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

Expand All @@ -152,6 +158,11 @@ jobs:
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]
Expand All @@ -166,7 +177,13 @@ jobs:
# Build macOS #
# ------------#
build-macos:
runs-on: macos-12
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
Expand All @@ -183,17 +200,23 @@ jobs:
brew install --cask xquartz
brew install llvm mesa glew qt@5 ninja
# TTK dependencies
brew install boost eigen graphviz numpy websocketpp
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: |
wget https://github.com/${{ env.PV_REPO }}/releases/download/${{ env.PV_TAG }}/ttk-paraview-${{ env.PV_TAG }}-macos-12.tar.gz
tar xzf ttk-paraview-${{ env.PV_TAG }}-macos-12.tar.gz
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 scikit-learn
pvpython -m pip install --break-system-packages scikit-learn
- name: Set compilers as environment variables
run: |
Expand Down Expand Up @@ -232,15 +255,20 @@ jobs:
- name: Upload compressed binaries
uses: actions/upload-artifact@v4
with:
name: ttk.tar.gz
name: ttk-${{ matrix.os }}.tar.gz
path: build/ttk.tar.gz

# -----------#
# Test macOS #
# -----------#
test-macos:
needs: build-macos
runs-on: macos-12
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
Expand All @@ -257,20 +285,26 @@ jobs:
brew install --cask xquartz
brew install llvm mesa glew qt@5 ninja
# TTK dependencies
brew install boost eigen graphviz numpy websocketpp
brew install boost eigen graphviz spectra sqlite zlib numpy qhull
- name: Fetch TTK-ParaView
run: |
wget https://github.com/${{ env.PV_REPO }}/releases/download/${{ env.PV_TAG }}/ttk-paraview-${{ env.PV_TAG }}-macos-12.tar.gz
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: ttk-${{ matrix.os }}.tar.gz

- name: Install binary archives packages
run: |
tar xzf ttk-paraview-${{ env.PV_TAG}}-macos-12.tar.gz
tar xzf ttk-paraview.tar.gz
sudo cp -r ttk-paraview/* /usr/local
tar xzf ttk.tar.gz
sudo cp -r ttk/* /usr/local
Expand All @@ -297,6 +331,18 @@ jobs:
- 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
# some cases fail only with version 12
if [[ "${{ matrix.os }}" == "macos-12" ]]; then
rm python/contourTreeAlignment.py
rm python/geometryApproximation.py
rm python/harmonicSkeleton.py
rm python/topologicalOptimization_torus.py
fi
pvpython -u python/run.py
env:
PV_PLUGIN_PATH: /usr/local/bin/plugins/TopologyToolKit
Expand All @@ -315,6 +361,8 @@ jobs:
build-windows:
runs-on: windows-2022
env:
PV_DIR: C:\Program Files\TTK-ParaView
TTK_DIR: C:\Program Files (x86)\ttk
CONDA_ROOT: C:\Miniconda
steps:
- uses: actions/checkout@v4
Expand All @@ -325,8 +373,14 @@ jobs:
- name: Install dependencies with conda
shell: bash
run: |
conda install -c conda-forge "qt>=5.12" libboost-devel eigen spectralib zfp \
scikit-learn llvm-openmp graphviz clangxx
conda install -c conda-forge "qt>=5.12" \
libboost-devel glew eigen spectralib zfp \
sqlite scikit-learn graphviz ninja python=3.10 zlib qhull \
llvm-openmp clangxx
# add TTK & ParaView install folders to PATH
echo "$PV_DIR/bin" >> $GITHUB_PATH
echo "$TTK_DIR/bin" >> $GITHUB_PATH
conda info --all
- name: Remove hosted Python
shell: bash
Expand All @@ -349,10 +403,15 @@ jobs:
- 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
set CMAKE_PREFIX_PATH=%CONDA_ROOT%\Library\lib\cmake;%CONDA_ROOT%\Library\share\eigen3\cmake;%CONDA_ROOT%\Library\share\Qull\cmake;%CONDA_ROOT%\Library\cmake;%ProgramFiles%\TTK-ParaView\lib\cmake;
set CC=clang-cl.exe
set CXX=clang-cl.exe
call "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
mkdir build
cd build
cmake ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_POLICY_DEFAULT_CMP0074=NEW ^
-DCMAKE_POLICY_DEFAULT_CMP0092=NEW ^
-DBUILD_SHARED_LIBS:BOOL=TRUE ^
-DCMAKE_INSTALL_PREFIX="%ProgramFiles%\TTK" ^
Expand All @@ -362,6 +421,8 @@ jobs:
-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" ^
-DZLIB_ROOT="%CONDA_ROOT%\Library" ^
-DSQLite3_ROOT="%CONDA_ROOT%\Library" ^
-DTTK_BUILD_PARAVIEW_PLUGINS=TRUE ^
-DTTK_BUILD_VTK_WRAPPERS=TRUE ^
-DTTK_BUILD_STANDALONE_APPS=TRUE ^
Expand All @@ -370,14 +431,19 @@ jobs:
-DTTK_ENABLE_OPENMP=TRUE ^
-DTTK_ENABLE_CPU_OPTIMIZATION=FALSE ^
-DTTK_ENABLE_SHARED_BASE_LIBRARIES=TRUE ^
-G"Visual Studio 17 2022" ^
-Tclangcl ^
-GNinja ^
..
- name: Build TTK
- name: Fix clang-cl OpenMP flags in build.ninja
shell: bash
run: |
sed -i 's/-Xclang -fopenmp/-openmp/' build/build.ninja
- name: Build TTK
shell: cmd
run: |
cd build
call "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
cmake --build . --config Release --parallel
- name: Package TTK
Expand Down Expand Up @@ -411,8 +477,14 @@ jobs:
- name: Install dependencies with conda
shell: bash
run: |
conda install -c conda-forge "qt>=5.12" libboost-devel eigen spectralib zfp \
scikit-learn openmp graphviz
conda install -c conda-forge "qt>=5.12" \
libboost-devel glew eigen spectralib zfp \
sqlite scikit-learn graphviz ninja python=3.10 zlib qhull \
llvm-openmp clangxx
# add TTK & ParaView install folders to PATH
echo "$PV_DIR/bin" >> $GITHUB_PATH
echo "$TTK_DIR/bin" >> $GITHUB_PATH
conda info --all
- name: Remove hosted Python
shell: bash
Expand Down Expand Up @@ -443,24 +515,30 @@ jobs:
- name: Test C++ example
shell: cmd
run: |
set CC=clang-cl.exe
set CXX=clang-cl.exe
call "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
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 -DCMAKE_BUILD_TYPE=Release -GNinja ..
cmake --build . --config Release --parallel
Release\ttkExample-c++.exe -i ..\..\data\inputData.off
ttkExample-c++.exe -i ..\..\data\inputData.off
- name: Test VTK-C++ example
shell: cmd
run: |
set CC=clang-cl.exe
set CXX=clang-cl.exe
call "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
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 -DCMAKE_BUILD_TYPE=Release -GNinja ..
cmake --build . --config Release --parallel
Release\ttkExample-vtk-c++.exe -i ..\..\data\inputData.vtu
ttkExample-vtk-c++.exe -i ..\..\data\inputData.vtu
- name: Test Python example [TEMPORARILY NOT ENFORCED]
continue-on-error: true
Expand Down Expand Up @@ -505,6 +583,9 @@ jobs:
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]
Expand Down Expand Up @@ -570,13 +651,29 @@ jobs:
file: ttk-ubuntu-22.04.deb/ttk.deb
asset_name: ttk-$tag-ubuntu-22.04.deb

- name: Upload macOS binary archives as Release Asset
- 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.tar.gz/ttk.tar.gz
asset_name: ttk-$tag.tar.gz
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
Expand Down

0 comments on commit 6903659

Please sign in to comment.