| name: rust | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| permissions: | |
| contents: read | |
| jobs: | |
| build: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: Setup Ccache | |
| uses: hendrikmuhs/ccache-action@f09c25b45002a07be2955cbe52e8cee55643f89d # v1.2.24 | |
| with: | |
| key: ${{ github.job }}-${{ runner.os }}-${{ runner.arch }} | |
| - uses: dtolnay/rust-toolchain@881ba7bf39a41cda34ac9e123fb41b44ed08232f # nightly | |
| - name: Install Dependencies | |
| run: | | |
| rustup component add \ | |
| rust-src \ | |
| rustfmt \ | |
| clippy \ | |
| --toolchain nightly-x86_64-unknown-linux-gnu | |
| sudo rm -f /etc/apt/sources.list.d/google-chrome.list | |
| sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list | |
| sudo apt-get update | |
| sudo apt-get install \ | |
| gcc \ | |
| gobject-introspection \ | |
| gtk-doc-tools \ | |
| libcairo2-dev \ | |
| libchafa-dev \ | |
| libfreetype6-dev \ | |
| libgirepository1.0-dev \ | |
| libglib2.0-dev \ | |
| libgraphite2-dev \ | |
| libicu-dev \ | |
| libpng-dev \ | |
| pkg-config \ | |
| zlib1g-dev \ | |
| bindgen | |
| - name: Setup Python | |
| uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| python-version: '3.12' | |
| - name: Install Python Dependencies | |
| run: pip3 install -r .ci/requirements.txt --require-hashes | |
| - name: Setup Meson | |
| run: | | |
| ccache --version | |
| meson setup build \ | |
| -Dauto_features=enabled \ | |
| -Dgraphite=enabled \ | |
| -Doptimization=2 \ | |
| -Dfontations=enabled \ | |
| -Dharfrust=enabled \ | |
| -Dgpu_demo=disabled | |
| - name: Build | |
| run: meson compile -Cbuild | |
| - name: Test | |
| run: RUST_BACKTRACE=1 meson test --print-errorlogs -Cbuild |