Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ci] package workflow upgrade (ubuntu-24.04, macos-14, pv513) #1063

Merged
merged 9 commits into from
Sep 18, 2024
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
Loading