3.6.0 release #63
Workflow file for this run
This file contains hidden or 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 package | |
| permissions: | |
| contents: read | |
| on: | |
| push: | |
| tags: [ '**' ] | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| runs-on: macos-14 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up python | |
| env: | |
| PYVER: '3.9.7' | |
| PYVER_SHORT: '3.9' | |
| run: | | |
| wget -O python.pkg "https://www.python.org/ftp/python/${PYVER}/python-${PYVER}-macosx10.9.pkg" | |
| sudo installer -pkg python.pkg -target / | |
| echo "/Library/Frameworks/Python.framework/Versions/${PYVER_SHORT}/bin" >> $GITHUB_PATH | |
| - name: Install dependencies | |
| run: | | |
| python3 -m pip install --upgrade pip | |
| python3 -m pip install --no-binary=Pillow \ | |
| Pillow attrs configobj py2app pycotap pygame-ce pysol-cards setuptools ttkthemes accessible-output2 | |
| if [ -f requirements.txt ]; then pip install -r requirements.txt; fi | |
| brew install create-dmg | |
| - name: Install missing pygame-ce macOS assets for py2app | |
| env: | |
| PYGAME_HIDE_SUPPORT_PROMPT: '1' | |
| run: | | |
| set -euo pipefail | |
| # py2app's pygame recipe copies freesansbold.ttf and pygame_icon.icns | |
| # from the installed pygame package. pygame-ce omits pygame_icon.icns | |
| # from wheels (pygame-community/pygame-ce#2780); freesansbold.ttf can | |
| # also be missing depending on the wheel, so restore both when needed. | |
| PYGAME_DIR=$(python3 -c "import pygame, os; print(os.path.dirname(pygame.__file__))") | |
| PYGAME_TAG=$(python3 -c "import pygame; print(pygame.__version__.split('.dev')[0])") | |
| BASE_URL="https://raw.githubusercontent.com/pygame-community/pygame-ce/${PYGAME_TAG}/src_py" | |
| for asset in freesansbold.ttf pygame_icon.icns; do | |
| if [ ! -f "$PYGAME_DIR/$asset" ]; then | |
| echo "Fetching missing $asset from pygame-ce ${PYGAME_TAG}..." | |
| curl -fSL -o "$PYGAME_DIR/$asset" "${BASE_URL}/${asset}" | |
| fi | |
| done | |
| for asset in freesansbold.ttf pygame_icon.icns; do | |
| if [ ! -s "$PYGAME_DIR/$asset" ]; then | |
| echo "ERROR: $PYGAME_DIR/$asset is missing or empty after fetch" | |
| exit 1 | |
| fi | |
| done | |
| - name: Get cardsets | |
| run: | | |
| wget -O cardsets-pack.tar.xz "https://sourceforge.net/projects/pysolfc/files/PySolFC-Cardsets/minimal/PySolFC-Cardsets--Minimal-3.1.0.tar.xz/download" | |
| tar -xJf cardsets-pack.tar.xz | |
| mv PySolFC-Cardsets--Minimal-3.1.0/cardset-* data | |
| - name: Prepare game rules (process the HTML) and translations | |
| run: | | |
| make rules mo | |
| - name: Create the executable .app | |
| run: | | |
| set -euo pipefail | |
| PYTHONPATH="." python3 setup_osx.py py2app | |
| test -d dist/PySolFC.app | |
| zip -q -r -X PySolFC-app.zip dist | |
| - name: Make the .dmg for easy installation | |
| run: | |
| create-dmg --volname "Install PySolFC" | |
| --volicon data/PySol.icns | |
| --background html-src/images/pysollogo01.png | |
| --window-size 800 400 | |
| --icon PySolFC.app 200 185 | |
| --app-drop-link 600 185 | |
| --skip-jenkins | |
| PySolFC.dmg dist | |
| - name: Upload zipped app | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: pysolfc-app | |
| path: PySolFC-app.zip | |
| - name: Upload dmg | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: pysolfc-dmg | |
| path: PySolFC.dmg |