Skip to content

talipot-python: Create a virtualenv for the embedded interpreter (WIP) #989

talipot-python: Create a virtualenv for the embedded interpreter (WIP)

talipot-python: Create a virtualenv for the embedded interpreter (WIP) #989

name: macos-macports-build
on: [push, pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
macos:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
env:
CLANG_VERSION: 19
PYTHON_VERSION: "3.13"
strategy:
fail-fast: false
matrix:
config:
- name: Talipot build on macOS x86_64
os: macos-13
- name: Talipot build on macOS arm64
os: macos-14
steps:
- name: Checkout Talipot code
uses: actions/checkout@v4
- name: Compute environment variable
run: |
PYTHON_VERSION_NO_DOT=$(echo $PYTHON_VERSION | sed 's/\.//')
echo "PYTHON_VERSION_NO_DOT=$PYTHON_VERSION_NO_DOT" >> $GITHUB_ENV
- name: Prepare ccache timestamp
id: get-current-date
run: |
echo "date=$(date -u "+%Y-%m-%d-%H-%m-%S")" >> $GITHUB_OUTPUT
shell: bash
- name: Cache files
uses: actions/cache@v4
with:
path: |
/Users/runner/Library/Caches/ccache
/Users/runner/.macports-ci-ccache
key: ${{ matrix.config.os }}-ccache-${{ steps.get-current-date.outputs.date }}
restore-keys: |
${{ matrix.config.os }}-ccache-
save-always: true
- name: Install MacPorts
run: |
curl -LO https://raw.githubusercontent.com/GiovanniBussi/macports-ci/master/macports-ci
source ./macports-ci install
source ./macports-ci ccache
- name: Install Talipot build dependencies
run: sudo port -N install
cmake
clang-${{ env.CLANG_VERSION }}
ccache
zlib
qhull
yajl
zstd
graphviz
libgit2
python${{ env.PYTHON_VERSION_NO_DOT }}
py${{ env.PYTHON_VERSION_NO_DOT }}-sip
pkgconfig
cppunit
freetype
fontconfig
fribidi
glew
qt5-qtbase
qt5-qttools
quazip
py${{ env.PYTHON_VERSION_NO_DOT }}-pip
- name: Install Sphinx
run: pip-${{ env.PYTHON_VERSION }} install sphinx
- name: Save MacPorts ccache
run: source ./macports-ci ccache --save
- name: Create build directory
run: mkdir build
- name: Configure Talipot core build with CMake
working-directory: ./build
run: cmake .. -DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=$PWD/install
-DCMAKE_C_COMPILER=/opt/local/bin/clang-mp-${{ env.CLANG_VERSION }}
-DCMAKE_CXX_COMPILER=/opt/local/bin/clang++-mp-${{ env.CLANG_VERSION }}
-DCMAKE_SHARED_LINKER_FLAGS="-L/opt/local/libexec/llvm-${{ env.CLANG_VERSION }}/lib
-Wl,-rpath,/opt/local/libexec/llvm-${{ env.CLANG_VERSION }}/lib"
-DCMAKE_EXE_LINKER_FLAGS="-L/opt/local/libexec/llvm-${{ env.CLANG_VERSION }}/lib
-Wl,-rpath,/opt/local/libexec/llvm-${{ env.CLANG_VERSION }}/lib"
-DPython3_EXECUTABLE=/opt/local/bin/python${{ env.PYTHON_VERSION }}
-DTALIPOT_BUILD_TESTS=ON
-DTALIPOT_USE_CCACHE=ON
-DTALIPOT_BUILD_DOC=OFF
-DTALIPOT_BUILD_CORE_ONLY=ON
- name: Talipot core build
working-directory: ./build
run: make -j4
- name: Install Talipot core build
working-directory: ./build
run: make -j4 install
- name: Run Talipot core build unit tests
working-directory: ./build
run: make tests
- name: Configure Talipot complete build with CMake
working-directory: ./build
run: cmake .
-DTALIPOT_BUILD_CORE_ONLY=OFF
-DTALIPOT_BUILD_DOC=ON
- name: Talipot complete build
working-directory: ./build
run: make -j4
- name: Install Talipot complete build
working-directory: ./build
run: make -j4 install
- name: Run Talipot complete build unit tests
working-directory: ./build
run: make tests
- name: Check Talipot application can be executed
working-directory: ./build/install/bin
run: ./talipot --check-application-starts --debug-plugins-load
- name: Generate Talipot dmg bundle
working-directory: ./build
run: make bundle
- name: Check bundled Talipot can be installed and executed
working-directory: ./build
run: |
sudo port -Nfp uninstall installed
hdiutil attach Talipot*.dmg
cp -r /Volumes/Talipot*/Talipot*.app /Applications/
sudo xattr -r -d com.apple.quarantine /Applications/Talipot*.app
rm -rf ~/.Talipot*
/Applications/Talipot*.app/Contents/MacOS/Talipot \
--check-application-starts \
--debug-plugins-load
hdiutil detach /Volumes/Talipot*
- name: Upload Talipot bundle to GitHub Actions artifacts
uses: actions/upload-artifact@v4
with:
name: Talipot-macOS-bundles-${{ matrix.config.os }}
path: ./build/Talipot*.dmg
- name: Upload Talipot bundle to dev-latest prerelease
if: github.ref == 'refs/tags/dev-latest'
uses: ncipollo/release-action@v1
with:
allowUpdates: true
name: Talipot development build
prerelease: true
artifacts: ./build/Talipot*.dmg
token: ${{ secrets.GITHUB_TOKEN }}