Skip to content

Try moving location of setuptools #149

Try moving location of setuptools

Try moving location of setuptools #149

Workflow file for this run

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