Try moving location of setuptools #149
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: macOS | |
on: [push] | |
jobs: | |
build_app: | |
name: Build and sign macOS app | |
runs-on: macos-13 | |
env: | |
PYTHON: /Library/Frameworks/Python.framework/Versions/3.13/bin/python3 | |
OURPYTHON: ${{ github.workspace }}/Frameworks/Python.framework/Versions/3.13/bin/python3 | |
_PYTHON_HOST_PLATFORM: macosx-10.9-universal2 | |
ARCHFLAGS: "-arch x86_64 -arch arm64" | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Clone Snappy repo | |
run: | | |
git clone https://github.com/3-manifolds/snappy/ | |
- name: Download stripped frameworks for py2app | |
uses: dawidd6/action-download-artifact@v6 | |
with: | |
github_token: ${{secrets.GITHUB_TOKEN}} | |
repo: 3-manifolds/frameworks | |
workflow: build.yml | |
workflow_conclusion: success | |
branch: python_3.13 | |
name: Frameworks.tgz | |
path: snappy/mac_osx_app | |
- name: Download full frameworks for building the app | |
uses: dawidd6/action-download-artifact@v6 | |
with: | |
github_token: ${{secrets.GITHUB_TOKEN}} | |
repo: 3-manifolds/frameworks | |
workflow: build.yml | |
workflow_conclusion: success | |
branch: python_3.13 | |
name: Frameworks.tgz | |
- name: Unpack the runner frameworks so we can use that python for building | |
run: | | |
tar xfz Frameworks-3.13.tgz | |
- name: Install the Apple certificate and provisioning profile | |
env: | |
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} | |
P12_PASSWORD: ${{ secrets.P12_PASSWORD }} | |
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} | |
DEV_ID: ${{ secrets.DEV_ID }} | |
DEV_USERNAME: ${{ secrets.NOTARIZE_USERNAME }} | |
DEV_PASSWORD: ${{ secrets.NOTARIZE_PASSWORD }} | |
run: | | |
# create variables | |
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 | |
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision | |
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db | |
# import certificate and provisioning profile from secrets | |
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output=$CERTIFICATE_PATH | |
# create temporary keychain | |
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | |
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
# import certificate to keychain | |
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH | |
security list-keychain -d user -s $KEYCHAIN_PATH | |
# Create config file needed by release.py | |
echo -e "[developer]\nidentity = $DEV_ID" > notabot.cfg | |
echo -e "username = $DEV_USERNAME" >> notabot.cfg | |
echo -e "password = $DEV_PASSWORD\n" >> notabot.cfg | |
echo -e "[app]\napp_name = SnapPy" >> notabot.cfg | |
echo -e "app_path = dist/SnapPy.app" >> notabot.cfg | |
echo -e "dmg_path = disk_images/SnapPy.dmg" >> notabot.cfg | |
echo -e "bundle_id = SnapPy-3.1" >> notabot.cfg | |
cp notabot.cfg snappy/mac_osx_app | |
- name: Install packages | |
run: | | |
SITE_PACKAGES=`$PYTHON -c "import site; print(site.getusersitepackages())"` | |
$PYTHON -m pip install --user "setuptools<71" | |
$PYTHON -m pip install --user delocate wheel | |
$PYTHON -m pip install --user cython pyx py2app sphinx sphinx_rtd_theme | |
$PYTHON -m pip install --user https://github.com/3-manifolds/notary/archive/main.zip | |
# Patch the p2app recipe for tkinter | |
pushd $SITE_PACKAGES/py2app/recipes | |
patch -p0 < ${{ github.workspace }}/tkinter_recipe.patch | |
popd | |
- name: Install universal2 wheels | |
run: | | |
SITE_PACKAGES=`$PYTHON -c "import site; print(site.getusersitepackages())"` | |
STUPID_ARGS="--platform=macosx_10_13_universal2 --only-binary=:all: --target=$SITE_PACKAGES" | |
TEST_PYPI="--extra-index-url https://test.pypi.org/simple" | |
$PYTHON -m pip install $STUPID_ARGS $TEST_PYPI FXrays cypari low_index | |
$PYTHON -m pip install $STUPID_ARGS $TEST_PYPI --no-deps knot_floer_homology | |
- name: Install PLink | |
run: | | |
$PYTHON -m pip install --user https://github.com/3-manifolds/PLink/archive/master.zip | |
- name: Install manifolds | |
run: | | |
$PYTHON -m pip install --user https://github.com/3-manifolds/snappy_manifolds/archive/master.zip | |
$PYTHON -m pip install --user https://github.com/3-manifolds/snappy_15_knots/archive/master.zip | |
- name: Install spherogram | |
run: | | |
$PYTHON -m pip install --user https://github.com/3-manifolds/spherogram/archive/master.zip | |
- name: Build snappy (x86_64) | |
env: | |
_PYTHON_HOST_PLATFORM: macosx-10.13-x86_64 | |
ARCHFLAGS: "-arch x86_64" | |
run: | | |
cd snappy | |
$PYTHON setup.py build -j3 | |
$PYTHON setup.py bdist_wheel | |
- name: Build snappy (arm64) | |
env: | |
_PYTHON_HOST_PLATFORM: macosx-11-arm64 | |
ARCHFLAGS: "-arch arm64" | |
run: | | |
cd snappy | |
$PYTHON setup.py build -j3 | |
$PYTHON setup.py bdist_wheel | |
- name: Install snappy | |
run: | | |
PATH=/Library/Frameworks/Python.framework/Versions/3.13/bin:$PATH | |
cd snappy/dist | |
delocate-wheel snappy-*-macosx_10_13_x86_64.whl | |
delocate-wheel snappy-*-macosx_11_0_arm64.whl | |
delocate-merge snappy-*-macosx_10_13_x86_64.whl snappy-*-macosx_11_0_arm64.whl | |
$PYTHON -m pip install --user snappy-*-macosx_10_13_universal2.whl | |
cd ../.. | |
- name: Do the tests | |
run: | | |
$PYTHON -m snappy.test --skip-modern-opengl | |
- name: Build the installer | |
env: | |
PYTHONHOME: ${{ github.workspace }}/Frameworks/Python.framework/Versions/3.13 | |
run: | | |
cd snappy/mac_osx_app | |
$OURPYTHON release.py --no-freshen | |
- name: Notarize | |
run: | | |
cd snappy/mac_osx_app | |
$PYTHON notarize_snappy.py || true | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: SnapPy.dmg | |
path: snappy/mac_osx_app/disk_images/SnapPy.dmg |