Skip to content

test

test #14

Workflow file for this run

name: CI
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
buildLinux:
strategy:
fail-fast: false
matrix:
python-version: &python-versions ['3.11', '3.12']
runs-on: ubuntu-latest
container: ubuntu:latest
steps:
- uses: actions/checkout@v5
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install Qt6 and python
run: |
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get install -y qt6-base-dev libxrandr-dev libudev-dev libxi-dev freeglut3-dev
apt-get install -y python3-venv python3-pip cython3
mkdir venv
python -m venv venv/
. venv/bin/activate
python -m pip install --upgrade pip
python -m pip install setuptools cython
- name: compile library
run: qmake6 && make
- name: compile Python binding
run: |
. venv/bin/activate
cp pointing/libpointing.a bindings/Python/cython/
cd bindings/Python/cython/
python buildcythonlib.py build_ext --inplace
- name: Save the compiled libraries
uses: actions/upload-artifact@v5
with:
name: LinuxArtifact-${{ matrix.python-version }}
path: |
pointing/libpointing.a
bindings/Python/cython/libpointing/*.so
buildMacOS:
strategy:
fail-fast: false
matrix:
python-version: *python-versions
runs-on: macos-latest
steps:
- uses: actions/checkout@v5
- name: Install Qt6 and python
run: |
brew update
brew install qt
brew install python@${{ matrix.python-version }}
mkdir venv
python${{ matrix.python-version }} -m venv venv/
source venv/bin/activate
python${{ matrix.python-version }} -m pip install --upgrade pip
python${{ matrix.python-version }} -m pip install setuptools cython
- name: compile library
run: |
cd pointing
qmake
make
- name: compile Python binding
run: |
source venv/bin/activate
cp pointing/libpointing.a bindings/Python/cython/
cd bindings/Python/cython/
python${{ matrix.python-version }} buildcythonlib.py build_ext --inplace
- name: Save the compiled libraries
uses: actions/upload-artifact@v5
with:
name: macOSArtifact-${{ matrix.python-version }}
path: |
pointing/libpointing.a
bindings/Python/cython/libpointing/*.so
buildWindows:
strategy:
fail-fast: false
matrix:
python-version: *python-versions
runs-on: windows-latest
steps:
- uses: actions/checkout@v5
- uses: ilammy/msvc-dev-cmd@v1
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
host: 'windows'
target: 'desktop'
arch: 'win64_msvc2022_64'
dir: '${{ github.workspace }}/qtdir/'
install-deps: 'true'
archives: 'qtbase'
cache: 'false'
cache-key-prefix: 'install-qt-action'
setup-python: 'true'
tools: ''
set-env: 'true'
tools-only: 'false'
aqtversion: '==3.1.*'
py7zrversion: '==0.20.*'
extra: '--external 7z'
- name: Install Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install Python librairies
run: |
python.exe -m ensurepip --upgrade
python.exe -m pip install --upgrade pip
python.exe -m pip install virtualenv
python.exe -m virtualenv venv
./venv/Scripts/activate
python.exe -m pip install wheel setuptools cython
- name: compile library
run: |
cd pointing
qmake
nmake
# mingw32-make
- name: compile Python binding
run: |
./venv/Scripts/activate
cp pointing/release/pointing.lib bindings/Python/cython/
cd bindings/Python/cython/
python.exe --version
python.exe buildcythonlib.py build_ext --inplace
- name: Save the compiled libraries
uses: actions/upload-artifact@v5
with:
name: WindowsArtifact-${{ matrix.python-version }}
path: |
pointing/release/pointing.lib
bindings/Python/cython/libpointing/*.pyd
buildPythonBinding:
needs: [buildLinux, buildMacOS, buildWindows]
runs-on: ubuntu-latest
container: ubuntu:latest
steps:
- uses: actions/checkout@v5
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: '3.14'
- name: Install python
run: |
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get install -y python3-venv python3-pip cython3
mkdir venv
python -m venv venv/
. venv/bin/activate
python -m pip install --upgrade pip
python -m pip install setuptools build cython twine
- name: Download Linux artifacts
uses: actions/download-artifact@v5
with:
pattern: LinuxArtifact-*
path: linux-artifact
merge-multiple: true
- name: Download macOS artifacts
uses: actions/download-artifact@v5
with:
pattern: macOSArtifact-*
path: macOS-artifact
merge-multiple: true
- name: Download Windows artifacts
uses: actions/download-artifact@v5
with:
pattern: WindowsArtifact-*
path: windows-artifact
merge-multiple: true
- name: Copy files from artifacts
run: |
mkdir -p libraries/Linux
mkdir -p libraries/macOS
mkdir -p libraries/Windows
cp -r linux-artifact/pointing/libpointing.a libraries/Linux/
cp -r macOS-artifact/pointing/libpointing.a libraries/macOS/
cp -r windows-artifact/pointing/release/pointing.lib libraries/Windows/
ls linux-artifact/bindings/Python/cython/libpointing/
cp -r linux-artifact/bindings/Python/cython/libpointing/*.so bindings/Python/cython/libpointing/
cp -r macOS-artifact/bindings/Python/cython/libpointing/*.so bindings/Python/cython/libpointing/
cp -r windows-artifact/bindings/Python/cython/libpointing/*.pyd bindings/Python/cython/libpointing/
- name: compile Python binding
run: |
. venv/bin/activate
cd bindings/Python/cython/
ls -la libpointing/
python -m build
ls -la dist/
cd ../../..
mkdir python
cp -r bindings/Python/cython/dist/*.whl python/
- name: Save the compiled libraries
uses: actions/upload-artifact@v5
with:
name: librairiesAndPythonBinding
path: |
libraries/
python/
- name: Publish Python 🐍 distribution 📦 to PyPI
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
env:
TWINE_USERNAME: "__token__"
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
run : |
. venv/bin/activate
python -m twine upload python/*