• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1name: macos-ci
2
3on:
4  push:
5    branches: [ main ]
6  pull_request:
7    branches: [ main ]
8
9permissions:
10  contents: read
11
12jobs:
13  build:
14    runs-on: macos-latest
15
16    steps:
17    - name: Checkout
18      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
19    - name: Setup Ccache
20      uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14
21      with:
22        key: ${{ github.job }}-${{ runner.os }}-${{ runner.arch }}
23    - name: Install Dependencies
24      run: |
25        export HOMEBREW_NO_AUTO_UPDATE=1
26        export HOMEBREW_NO_INSTALL_CLEANUP=1
27        brew rm -f pkg-config@0.29.2
28        brew install \
29          cairo \
30          freetype \
31          glib \
32          gobject-introspection \
33          graphite2 \
34          icu4c \
35          meson \
36          ninja \
37          pkgconf
38    - name: Setup Python
39      uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
40      with:
41        python-version: '3.12'
42    - name: Install Python Dependencies
43      run: pip3 install -r .ci/requirements.txt --require-hashes
44    - name: Setup Meson
45      env:
46        PKG_CONFIG_PATH: "/usr/local/opt/libffi/lib/pkgconfig"
47      run: |
48        brew link --force icu4c
49        ccache --version
50        meson setup build \
51          -Dauto_features=enabled \
52          -Ddocs=disabled \
53          -Dchafa=disabled \
54          -Dcoretext=enabled \
55          -Dgraphite=enabled \
56          -Doptimization=2 \
57          -Db_coverage=true \
58    - name: Build
59      run: meson compile -Cbuild
60    - name: Test
61      run: meson test --print-errorlogs -Cbuild
62    - name: Generate Coverage
63      run: ninja -Cbuild coverage-xml
64    - name: Upload Coverage
65      uses: codecov/codecov-action@7f8b4b4bde536c465e797be725718b88c5d95e0e # v5.1.1
66      with:
67        token: ${{ secrets.CODECOV_TOKEN }}
68        file: build/meson-logs/coverage.xml
69