diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 5966edb515..8fd053af16 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -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: @@ -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 @@ -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 @@ -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 @@ -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] @@ -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 @@ -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: | @@ -232,7 +255,7 @@ 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 # -----------# @@ -240,7 +263,12 @@ jobs: # -----------# 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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" ^ @@ -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 ^ @@ -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 @@ -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 @@ -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 @@ -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] @@ -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