name: macos concurrency: group: macos-${{ github.head_ref || github.ref }} cancel-in-progress: true on: push: branches: - master # Stable branches such as 0.56 or 1.0 - '[0-9]+.[0-9]+' paths: - "mesonbuild/**" - "test cases/**" - "unittests/**" - ".github/workflows/macos.yml" - "run*tests.py" pull_request: paths: - "mesonbuild/**" - "test cases/**" - "unittests/**" - ".github/workflows/macos.yml" - "run*tests.py" permissions: contents: read jobs: unittests-appleclang: runs-on: macos-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: '3.x' - run: | python -m pip install --upgrade pip python -m pip install pytest pytest-xdist pytest-subtests fastjsonschema coverage - run: brew install pkg-config ninja llvm qt@5 - env: CPPFLAGS: "-I/opt/homebrew/include" LDFLAGS: "-L/opt/homebrew/lib" MESON_CI_JOBNAME: unittests-appleclang MESON_UNIT_TEST_BACKEND: ninja HOMEBREW_NO_AUTO_UPDATE: 1 # These cannot evaluate anything, so we cannot set PATH or SDKROOT here run: | export SDKROOT="$(xcodebuild -version -sdk macosx Path)" export PATH="$HOME/tools:/opt/homebrew/opt/qt@5/bin:/opt/homebrew/opt/llvm/bin:$PATH" export PKG_CONFIG_PATH="/opt/homebrew/opt/qt@5/lib/pkgconfig:$PKG_CONFIG_PATH" ./tools/run_with_cov.py ./run_unittests.py - name: Aggregate coverage reports run: ./ci/combine_cov.sh - name: Upload coverage report uses: codecov/codecov-action@v3 with: files: .coverage/coverage.xml name: "appleclang [unit tests]" fail_ci_if_error: false verbose: true project-tests-appleclang: runs-on: macos-latest strategy: fail-fast: false matrix: include: - NAME: macos-clang unity: off - NAME: macos-clang-unity unity: on name: ${{ matrix.NAME }} env: MESON_CI_JOBNAME: ${{ matrix.NAME }} HOMEBREW_NO_AUTO_UPDATE: 1 steps: - uses: actions/checkout@v3 # Avoid picking up an older version of LLVM that does not work. - run: brew update # github actions overwrites brew's python. Force it to reassert itself, by running in a separate step. - name: unbreak python in github actions run: | find /usr/local/bin -lname '*/Library/Frameworks/Python.framework/*' -delete sudo rm -rf /Library/Frameworks/Python.framework/ brew install --force python3 && brew unlink python3 && brew unlink python3 && brew link --overwrite python3 # Delete nonsensical PEP 668 breakage. It is the wrong solution to the problem and isn't designed to be # productive -- only victim blaming -- however it bites particularly badly because this is a container/VM # See commit 5c479d7a13a518c18ccb4dc3b6bdd7bfc2a9bdb5 for a more thorough analysis. find /opt/homebrew/Cellar/python* -name EXTERNALLY-MANAGED -print0 | xargs -0 rm -vf # use python3 from homebrew because it is a valid framework, unlike the actions one: # https://github.com/actions/setup-python/issues/58 - run: brew install pkg-config ninja llvm qt@5 boost ldc hdf5 openmpi lapack scalapack sdl2 boost-python3 gtk-doc zstd ncurses objfw libomp - run: | python3 -m pip install --upgrade setuptools python3 -m pip install --upgrade pip python3 -m pip install cython coverage - env: CPPFLAGS: "-I/opt/homebrew/include" LDFLAGS: "-L/opt/homebrew/lib" MESON_ARGS: --unity=${{ matrix.unity }} XML_CATALOG_FILES: "/opt/homebrew/etc/xml/catalog" CI: 1 # These cannot evaluate anything, so we cannot set PATH or SDKROOT here run: | export SDKROOT="$(xcodebuild -version -sdk macosx Path)" export PATH="$HOME/tools:/opt/homebrew/opt/qt@5/bin:/opt/homebrew/opt/llvm/bin:/opt/homebrew/opt/ncurses/bin:$PATH" export PKG_CONFIG_PATH="/opt/homebrew/opt/qt@5/lib/pkgconfig:/opt/homebrew/opt/lapack/lib/pkgconfig:/opt/homebrew/opt/ncurses/lib/pkgconfig:$PKG_CONFIG_PATH" ./tools/run_with_cov.py ./run_project_tests.py --backend=ninja - name: Aggregate coverage reports run: ./ci/combine_cov.sh - name: Upload coverage report uses: codecov/codecov-action@v3 with: files: .coverage/coverage.xml name: "appleclang [project tests; unity=${{ matrix.unity }}]" fail_ci_if_error: false verbose: true Qt4macos: # This job only works on Intel Macs, because OpenSSL 1.0 doesn't build on # Apple ARM runs-on: macos-13 env: HOMEBREW_NO_AUTO_UPDATE: 1 steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: '3.x' - run: python -m pip install -e . - run: brew install pkg-config ninja gcc - run: brew tap cartr/qt4 - run: brew install qt@4 - run: brew link qt@4 # qt4 tap seems to be broken - run: ln -sfn /usr/local/Cellar/qt@4/4.8.7_6.reinstall /usr/local/Cellar/qt@4/4.8.7_6 - run: meson setup "test cases/frameworks/4 qt" build -Drequired=qt4 - run: meson compile -C build - uses: actions/upload-artifact@v3 if: failure() with: name: Qt4_Mac_build path: build/meson-logs/meson-log.txt - run: meson test -C build -v - uses: actions/upload-artifact@v3 if: failure() with: name: Qt4_Mac_test path: build/meson-logs/testlog.txt