Skip to content

Commit

Permalink
actions: add Apple M support
Browse files Browse the repository at this point in the history
Signed-off-by: Matteo Cafasso <noxdafox@gmail.com>
  • Loading branch information
noxdafox committed Feb 17, 2024
1 parent 6d10327 commit 06e8b7f
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 5 deletions.
58 changes: 55 additions & 3 deletions .github/workflows/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,11 @@ jobs:
name: windows-build
path: dist/

build-macos:
runs-on: macos-latest
build-macos-intel:
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']
Expand Down Expand Up @@ -88,5 +91,54 @@ jobs:
- name: Store build artifacts
uses: actions/upload-artifact@v3
with:
name: macos-build
name: macos-intel-build
path: dist/

build-macos-arm:
runs-on: macos-14
env:
ARCHFLAGS: "-arch arm64"
MACOSX_DEPLOYMENT_TARGET: "11.0"
_PYTHON_HOST_PLATFORM: "macosx-10.9-universal2/universal2/arm64"
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: Add runner user to wheel group
run: |
sudo dseditgroup -o edit -a runner -t user wheel
- 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: |
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" {}
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/
3 changes: 1 addition & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,7 @@ endif

clipspy: clips
$(PYTHON) setup.py build_ext --include-dirs=clips_source/ \
--library-dirs=clips_source/
$(PYTHON) setup.py sdist bdist_wheel
--library-dirs=clips_source/ bdist_wheel

test: clipspy
cp build/lib.*/clips/_clips*.so clips
Expand Down
28 changes: 28 additions & 0 deletions repair_wheels_osx.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/usr/bin/env bash
set -xe

py_platform=$(python -c "import sysconfig; print('%s' % sysconfig.get_platform());")

echo " - Python platform: ${py_platform}"
if [[ "${py_platform}" == *"-universal2" ]]; then
if [[ `uname -m` == 'arm64' ]]; then
export _PYTHON_HOST_PLATFORM="${py_platform/universal2/arm64}"
echo " - Python installation is universal2 and we are on arm64, setting _PYTHON_HOST_PLATFORM to: ${_PYTHON_HOST_PLATFORM}"
export ARCHFLAGS="-arch arm64"
echo " - Setting ARCHFLAGS to: ${ARCHFLAGS}"
# This is a shortcut to have a successful delocate-wheel. 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" {}
else
export _PYTHON_HOST_PLATFORM="${py_platform/universal2/x86_64}"
echo " - Python installation is universal2 and we are on x84_64, setting _PYTHON_HOST_PLATFORM to: ${_PYTHON_HOST_PLATFORM}"
export ARCHFLAGS="-arch x86_64"
echo " - Setting ARCHFLAGS to: ${ARCHFLAGS}"
fi
fi

python setup.py build_ext --include-dirs=clips_source/ --library-dirs=clips_source/ bdist_wheel

delocate-listdeps dist/*.whl

delocate-wheel -v dist/*.whl

0 comments on commit 06e8b7f

Please sign in to comment.