actions: add Apple M support #97
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 --find-links=dist clipspy | |
# - 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: | |
runs-on: macos-12 | |
env: | |
ARCHFLAGS: "-arch x86_64" | |
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 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: | |
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: | |
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: Unzip artifacts | |
run: | | |
mkdir -p wheels | |
ls artifacts | |
for artifact in $(ls artifacts); do | |
unzip --extract-dir wheels $artifact | |
done | |
ls -ahl wheels | |
- name: Store build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: macos-intel-build | |
path: dist/ |