.github/workflows/wheel-macos.yml #120
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-wheels | |
on: | |
push: # run on push events | |
paths-ignore: # but ignore everything in the docs subfolder | |
- 'docs/**' | |
- 'src/gui*/**' | |
- 'src/netedit/**' | |
- 'tests/netedit/**' | |
branches: | |
- '**' | |
tags: | |
- '*' | |
pull_request: # run on pull requests | |
paths-ignore: # but ignore everything in the docs subfolder | |
- 'docs/**' | |
workflow_dispatch: | |
schedule: | |
- cron: '25 2 * * *' | |
jobs: | |
build-wheels: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-12, macos-14] | |
python_version: [3.8, 3.9, '3.10', 3.11, 3.12] | |
exclude: | |
- os: macos-14 | |
python_version: 3.8 | |
- os: macos-14 | |
python_version: 3.9 | |
runs-on: ${{ matrix.os }} | |
env: | |
CCACHE_COMPILERTYPE: clang | |
steps: | |
- name: Cloning SUMO | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fetching SUMO tags | |
run: git fetch --tags --force | |
- name: Set up Python ${{ matrix.python_version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python_version }} | |
- name: Preparing Build System | |
run: | | |
brew update | |
brew upgrade || brew link --overwrite [email protected] | |
brew install --cask xquartz | |
brew install xerces-c fox proj gdal gl2ps ccache googletest fmt | |
- name: ccache | |
if: github.event_name != 'schedule' | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }}-${{ matrix.python_version }}-${{ matrix.os }} | |
- name: Building SUMO / Libsumo wheels | |
run: | | |
python3 -m pip install --upgrade pip | |
python3 -m pip install build | |
cp build_config/pyproject.toml . | |
python3 tools/build_config/version.py tools/build_config/setup-sumo.py ./setup.py | |
python3 -m build --wheel | |
python3 tools/build_config/version.py tools/build_config/setup-libsumo.py tools/setup.py | |
python3 -m build --wheel tools -o dist | |
if [[ "${{ matrix.python_version }}" != "3.8" ]]; then rm dist/eclipse_sumo-*; fi | |
if [[ "${{ matrix.python_version }}" == "3.8" ]]; then mv dist/eclipse_sumo-* `echo dist/eclipse_sumo-* | sed 's/cp38-cp38/py2.py3-none/'`; fi | |
- name: Uploading artifacts (Python wheels) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: python-${{ matrix.python_version }}-${{ matrix.os }}-wheels | |
path: dist | |
################### | |
# testing wheels | |
################### | |
test-wheels: | |
needs: [build-wheels] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-12, macos-13] | |
# os: [macos-12, macos-13, macos-14] | |
python_version: [3.8, 3.9, '3.10', 3.11, 3.12] | |
# exclude: | |
# - os: macos-14 | |
# python_version: 3.8 | |
# - os: macos-14 | |
# python_version: 3.9 | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Cloning SUMO | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fetching SUMO tags | |
run: git fetch --tags --force | |
- name: Downloading Wheels artifact | |
uses: actions/download-artifact@v4 | |
with: | |
path: python-wheels | |
merge-multiple: true | |
- name: Configuring Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python_version }} | |
- name: Installing dependencies | |
run: | | |
brew update | |
brew upgrade || brew link --overwrite [email protected] | |
brew install --cask xquartz | |
brew install xerces-c fox proj gdal gl2ps fmt | |
- name: Preparing Python environment | |
run: | | |
python3 -m pip install --upgrade pip | |
python3 -m pip install wheel # need to do this separately because the texttest install wants it | |
python3 -m pip install texttest | |
python3 -m pip install -f python-wheels eclipse_sumo | |
python3 -c "import sumo; print('SUMO_HOME=' + sumo.SUMO_HOME)" >> $GITHUB_ENV | |
- name: Running "sumo in the wheel" tests | |
if: github.repository == 'DLR-TS/sumo' | |
run: | | |
if [[ "${{ matrix.python_version }}" != "3.12" ]]; then python3 -m pip install -r tools/requirements.txt; fi | |
tests/runTests.sh -b ci -v ci.fast -a activitygen,duarouter,jtrrouter,marouter,od2trips,polyconvert | |
- name: Running meta tests and cleaning up | |
run: | | |
tests/runTests.sh -b ci -v ci -ts meta | |
python3 -m pip uninstall -y eclipse-sumo | |
- name: Building helper wheels | |
run: | | |
cd tools | |
python3 -m pip install build | |
python3 build_config/version.py build_config/setup-sumolib.py ./setup.py | |
python3 -m build --wheel | |
python3 build_config/version.py build_config/setup-traci.py ./setup.py | |
python3 -m build --wheel | |
- name: Running libsumo tests | |
run: | | |
python3 -m pip install -f tools/dist sumolib traci | |
python3 -m pip install -f python-wheels libsumo | |
cd tests | |
texttest -b ci -v ci -a complex.libsumo | |
- name: Compressing test results | |
if: failure() | |
run: | | |
zip -r texttesttmp.zip ~/.texttest/tmp | |
- name: Uploading test results | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: texttesttmp-${{ matrix.python_version }}-${{ matrix.os }} | |
path: texttesttmp.zip | |
if-no-files-found: warn | |
################### | |
# publishing wheels | |
################### | |
publish-wheels: | |
if: github.repository == 'eclipse-sumo/sumo' && (github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags')) | |
needs: [test-wheels] | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
path: python-wheels | |
merge-multiple: true | |
- name: Publish to Test PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
packages-dir: python-wheels/ | |
repository-url: https://test.pypi.org/legacy/ | |
skip-existing: true | |
- name: Publish to PyPI | |
if: startsWith(github.ref, 'refs/tags') | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
packages-dir: python-wheels/ |