Skip to content

Use vcpkg for building cdd and cddgmp, and refactor library to follow same structure. #41

Use vcpkg for building cdd and cddgmp, and refactor library to follow same structure.

Use vcpkg for building cdd and cddgmp, and refactor library to follow same structure. #41

Workflow file for this run

name: build
on:
push:
branches: [ develop ]
tags: ['**']
pull_request:
branches: [ develop ]
jobs:
build-sdist:
runs-on: 'ubuntu-latest'
steps:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- uses: actions/checkout@v3
- name: Create sdist
run: |
pip install setuptools
python setup.py sdist
- name: Check files
run: |
python -m pip install twine
twine check dist/*
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: sdist
path: dist/*
if-no-files-found: error
test-ubuntu-macos:
runs-on: ${{ matrix.os }}
needs: build-sdist
strategy:
fail-fast: false
matrix:
os: ['ubuntu-latest', 'macos-latest']
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
cython-version: ['']
include:
# test oldest supported Cython version on most recent Python
- os: 'ubuntu-latest'
python-version: '3.12'
cython-version: '==3.0.0'
steps:
- uses: actions/checkout@v3
- name: Download sdist
uses: actions/download-artifact@v4
with:
name: sdist
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install cddlib and gmp (Ubuntu)
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get install -y libcdd-dev libgmp-dev
- name: Install libgmp (MacOS)
if: matrix.os == 'macos-latest'
run: brew install cddlib gmp
- name: Install Python dependencies
run: python -m pip install setuptools Cython${{ matrix.cython-version }} Sphinx pytest wheel numpy
- name: Install tarball (Ubuntu)
if: matrix.os == 'ubuntu-latest'
run: python -m pip install --pre --no-index --find-links=. pycddlib
- name: Install tarball (MacOS)
if: matrix.os == 'macos-latest'
run: |
brew --prefix
ls $(brew --prefix)/include/cddlib/
ls $(brew --prefix)/lib/cddlib/
ls $(brew --prefix)/include/*gmp*
ls $(brew --prefix)/lib/*gmp*
env "CFLAGS=-I$(brew --prefix)/include -L$(brew --prefix)/lib" python -m pip install --pre --no-index --find-links=. pycddlib
- name: Run test suite
run: |
pytest
cd docs
make doctest
build-vcpkg:
runs-on: 'windows-latest'
strategy:
fail-fast: false
matrix:
architecture: ['x86', 'x64']
vcpkg_ref: ['dee8b7d2c']
steps:
- uses: actions/checkout@v3
with:
repository: mcmtroffaes/vcpkg
ref: ${{ matrix.vcpkg_ref }}
- uses: actions/cache@v3
id: vcpkg-installed-cache
with:
path: installed/
key: vcpkg-0-${{ matrix.architecture }}-${{ matrix.vcpkg_ref }}
- name: Install cddlib
if: steps.vcpkg-installed-cache.outputs.cache-hit != 'true'
run: |
./bootstrap-vcpkg.bat -disableMetrics
./vcpkg.exe install cddlib:${{ matrix.architecture }}-windows-static-md-release
ls installed/${{ matrix.architecture }}-windows-static-md-release/include/ -r
ls installed/${{ matrix.architecture }}-windows-static-md-release/lib/ -r
- name: Upload vcpkg
uses: actions/upload-artifact@v4
with:
name: vcpkg-${{ matrix.architecture }}
path: installed/
if-no-files-found: error
build-test-windows:
runs-on: 'windows-latest'
needs: build-vcpkg
strategy:
fail-fast: false
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
architecture: ['x86', 'x64']
steps:
- uses: actions/checkout@v3
- name: Download vcpkg
uses: actions/download-artifact@v4
with:
name: vcpkg-${{ matrix.architecture }}
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.architecture }}
- name: Check Python
run: |
ls installed/x64-windows-static-md-release/include/ -r
ls installed/x64-windows-static-md-release/lib/ -r
python --version
python -c "import struct; print(struct.calcsize('P') * 8)"
- name: Install Python dependencies
run: python -m pip install Sphinx pytest numpy twine build
- name: Create wheel
run: |
mkdir dist -Force
python -m build --wheel -C="--global-option=build_ext" -C="--global-option=-Iinstalled/x64-windows-static-md-release/include/" -C="--global-option=-Linstalled/x64-windows-static-md-release/lib/" .
- name: Check files
run: twine check dist/*
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
name: windows-wheels-${{ matrix.python-version }}-${{ matrix.architecture }}
path: dist/*
if-no-files-found: error
- name: Install wheel
run: |
cd dist
ls
pip install --pre --no-index --find-links=. pycddlib
cd ..
- name: Run test suite
run: |
pytest
cd docs
make doctest
release:
if: github.repository == 'mcmtroffaes/pycddlib'
runs-on: 'ubuntu-latest'
needs: [ build-sdist, test-ubuntu-macos, build-test-windows ]
steps:
- name: Download sdist
uses: actions/download-artifact@v4
with:
name: sdist
path: dist/
- name: Download wheels
uses: actions/download-artifact@v4
with:
pattern: windows-wheels-*
path: dist/
merge-multiple: true
- name: List files
run: ls -R dist/
- name: Publish to Test PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
repository-url: https://test.pypi.org/legacy/
skip-existing: true
- name: Publish to PyPI
if: startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}