version 1.0.4 #146
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CLIPSPy build job | |
on: [push, pull_request] | |
jobs: | |
build-linux: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Build Manylinux Container | |
run: | | |
docker build -t clipspy-build-wheels:latest -f manylinux/Dockerfile . | |
- name: Build Manylinux packages | |
run: | | |
docker run --rm -v `pwd`/manylinux/wheelhouse:/io/wheelhouse clipspy-build-wheels:latest | |
- name: Store build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: linux-build | |
path: manylinux/wheelhouse | |
build-windows: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] | |
steps: | |
- uses: actions/checkout@v2 | |
# Install nmake | |
- uses: ilammy/msvc-dev-cmd@v1 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Build CLIPSPy | |
run: | | |
python -m pip install --upgrade pip | |
pip install --upgrade cffi wheel pytest setuptools | |
nmake /F Makefile.win | |
- name: Install CLIPSPy | |
run: | | |
pip install clipspy --no-index --find-links dist | |
- name: Run tests | |
run: | | |
# Run test from outside module to test installed package | |
cd ../ | |
python -m pytest -v clipspy/test | |
- name: Store build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: windows-build | |
path: dist/ | |
build-macos-intel: | |
# Installed Python is 'universal2', this leads to packages | |
# being mistakenly built as 'universal2' instead of 'x86_64'. | |
runs-on: macos-12 | |
env: | |
ARCHFLAGS: "-arch x86_64" | |
MACOSX_DEPLOYMENT_TARGET: "11.0" | |
strategy: | |
matrix: | |
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install Python dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install --upgrade cffi wheel delocate pytest setuptools | |
- name: Build and install CLIPS | |
run: | | |
make install-clips | |
- name: Build CLIPSPy | |
run: | | |
export PY_PLATFORM=$(python -c "import sysconfig; print('%s' % sysconfig.get_platform());") | |
export _PYTHON_HOST_PLATFORM="${PY_PLATFORM/universal2/x86_64}" | |
make clipspy | |
- name: Repair wheels | |
run: | | |
for whl in $(ls dist | grep .whl); do | |
delocate-wheel -v "dist/$whl" | |
done | |
- name: Install CLIPSPy | |
run: | | |
pip install dist/*.whl | |
- name: Run tests | |
run: | | |
# Run test from outside module to test installed package | |
cd ../ | |
python -m pytest -v clipspy/test | |
- name: Store build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: macos-intel-build | |
path: dist/ | |
build-macos-arm: | |
# On MACOS 14, user 'runner' is not part of wheel group. | |
# Hence, we need to use sudo everywhere. | |
# Moreover, installed Python is 'universal2', this leads to packages | |
# being mistakenly built as 'universal2' instead of 'arm64'. | |
# This confuses the heck out of 'delocate-wheel' which we need to patch | |
# to make it work. | |
runs-on: macos-14 | |
env: | |
ARCHFLAGS: "-arch arm64" | |
MACOSX_DEPLOYMENT_TARGET: "11.0" | |
strategy: | |
matrix: | |
python-version: ['3.11', '3.12'] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install Python dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install --upgrade cffi wheel delocate pytest setuptools | |
- name: Build and install CLIPS | |
run: | | |
make clips | |
sudo make install-clips | |
- name: Build CLIPSPy | |
run: | | |
export PY_PLATFORM=$(python -c "import sysconfig; print('%s' % sysconfig.get_platform());") | |
export _PYTHON_HOST_PLATFORM="${PY_PLATFORM/universal2/arm64}" | |
sudo --preserve-env make clipspy | |
- name: Repair wheels | |
run: | | |
# This is a shortcut to have a successful delocate-wheel. Credits: @alexsavulescu | |
# See: https://github.com/matthew-brett/delocate/issues/153 | |
python -c "import os,delocate; print(os.path.join(os.path.dirname(delocate.__file__), 'tools.py'));quit()" | xargs -I{} sed -i."" "s/first, /input.pop('x86_64',None); first, /g" {} | |
sudo delocate-wheel -v dist/*.whl | |
- name: Install CLIPSPy | |
run: | | |
pip install dist/*.whl | |
- name: Run tests | |
run: | | |
# Run test from outside module to test installed package | |
cd ../ | |
python -m pytest -v clipspy/test | |
- name: Store build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: macos-arm-build | |
path: dist/ | |
build-macos-universal: | |
# Merge MACOS 'x86_64' and 'arm64' into 'universal2' for most recent versions of Python. | |
needs: [build-macos-intel, build-macos-arm] | |
runs-on: macos-12 | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: macos-intel-build | |
path: artifacts/ | |
- uses: actions/download-artifact@v3 | |
with: | |
name: macos-arm-build | |
path: artifacts/ | |
- name: Set up Python 3.12 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: 3.12 | |
- name: Install rename utility | |
run: | | |
brew update --preinstall | |
brew install rename | |
- name: Install Python dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install --upgrade wheel delocate setuptools | |
- name: Run delocate fuse onto the wheels | |
run: | | |
mkdir -p dist | |
# Can't understand why globbing does not work in here | |
delocate-fuse artifacts/clipspy-1.0.4-cp311-cp311-macosx_11_0_arm64.whl artifacts/clipspy-1.0.4-cp311-cp311-macosx_11_0_x86_64.whl -w dist/ | |
delocate-fuse artifacts/clipspy-1.0.4-cp312-cp312-macosx_11_0_arm64.whl artifacts/clipspy-1.0.4-cp312-cp312-macosx_11_0_x86_64.whl -w dist/ | |
rename "s/arm64/universal2/" dist/*.whl | |
- name: Store build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: macos-universal-build | |
path: dist/ |