jay-compositor 1.14.0

The Jay compositor
name: tests

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
  workflow_dispatch:

env:
  CARGO_TERM_COLOR: always

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Show env
        run: |
          uname -a
          ldd --version
      - name: Install
        run: |
          sudo apt-get update
          sudo apt-get install -y libinput-dev libgbm-dev libudev-dev libpango1.0-dev libfontconfig-dev
          curl https://sh.rustup.rs -sSf | sh -s -- -y
          echo "$HOME/.cargo/bin" >> $GITHUB_PATH
      - name: Restore target dir
        id: restore-cache
        uses: actions/cache/restore@v5
        with:
          path: target
          key: target-build
      - name: Build
        run: |
          cargo build --profile=ci
      - name: Clear workspace
        run: cargo clean --workspace
      - name: Delete old cache
        if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && steps.restore-cache.outputs.cache-hit
        env:
          GH_TOKEN: ${{ github.token }}
        run: gh cache delete --repo ${{ github.repository }} ${{ steps.restore-cache.outputs.cache-primary-key }}
      - name: Save target dir
        uses: actions/cache/save@v5
        if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
        with:
          path: target
          key: ${{ steps.restore-cache.outputs.cache-primary-key }}
  unit-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Show env
        run: |
          uname -a
          ldd --version
      - name: Install
        run: |
          sudo apt-get update
          sudo apt-get install -y libinput-dev libgbm-dev libudev-dev libpango1.0-dev libfontconfig-dev
          curl https://sh.rustup.rs -sSf | sh -s -- -y
          echo "$HOME/.cargo/bin" >> $GITHUB_PATH
      - name: Restore target dir
        id: restore-cache
        uses: actions/cache/restore@v5
        with:
          path: target
          key: target-unit-test
      - name: Test
        run: |
          cargo test --profile=ci
          ls -lha target
      - name: Test-tc
        run: |
          git submodule update --init
          cd toml-config
          cargo test --profile=ci
      - name: Clear workspace
        run: cargo clean --workspace
      - name: Delete old cache
        if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && steps.restore-cache.outputs.cache-hit
        env:
          GH_TOKEN: ${{ github.token }}
        run: gh cache delete --repo ${{ github.repository }} ${{ steps.restore-cache.outputs.cache-primary-key }}
      - name: Save target dir
        uses: actions/cache/save@v5
        if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
        with:
          path: target
          key: ${{ steps.restore-cache.outputs.cache-primary-key }}
  check-musl:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Show env
        run: |
          uname -a
          ldd --version
      - name: Install
        run: |
          sudo apt-get update
          sudo apt-get install -y musl-dev
          curl https://sh.rustup.rs -sSf | sh -s -- -y
          echo "$HOME/.cargo/bin" >> $GITHUB_PATH
          rustup target install x86_64-unknown-linux-musl
      - name: Restore target dir
        id: restore-cache
        uses: actions/cache/restore@v5
        with:
          path: target
          key: target-musl
      - name: Check
        run: |
          cargo check --profile=ci --target x86_64-unknown-linux-musl
      - name: Clear workspace
        run: cargo clean --workspace
      - name: Delete old cache
        if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && steps.restore-cache.outputs.cache-hit
        env:
          GH_TOKEN: ${{ github.token }}
        run: gh cache delete --repo ${{ github.repository }} ${{ steps.restore-cache.outputs.cache-primary-key }}
      - name: Save target dir
        uses: actions/cache/save@v5
        if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
        with:
          path: target
          key: ${{ steps.restore-cache.outputs.cache-primary-key }}
  tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Show env
        run: |
          uname -a
          ldd --version
      - name: Install
        run: |
          sudo apt-get update
          sudo apt-get install -y libinput-dev libgbm-dev libudev-dev libpango1.0-dev \
            libfontconfig-dev libvulkan1 mesa-vulkan-drivers xwayland adwaita-icon-theme
          curl https://sh.rustup.rs -sSf | sh -s -- -y
          echo "$HOME/.cargo/bin" >> $GITHUB_PATH
      - name: Configure
        run: |
          ls -lha /dev/dri
          sudo chmod o+rw /dev/dri/card*
          sudo chmod o+r /dev/udmabuf
      - name: Restore target dir
        id: restore-cache
        uses: actions/cache/restore@v5
        with:
          path: target
          key: target-tests
      - name: Build
        run: |
          cargo build --profile=ci --features it
      - name: Test
        run: |
          export RUST_BACKTRACE=1
          ./target/ci/jay run-tests
      - name: Clear workspace
        run: cargo clean --workspace
      - name: Delete old cache
        if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && steps.restore-cache.outputs.cache-hit
        env:
          GH_TOKEN: ${{ github.token }}
        run: gh cache delete --repo ${{ github.repository }} ${{ steps.restore-cache.outputs.cache-primary-key }}
      - name: Save target dir
        uses: actions/cache/save@v5
        if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
        with:
          path: target
          key: ${{ steps.restore-cache.outputs.cache-primary-key }}
  nix:
    if: false
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Install
        run: |
          sudo apt-get update
          sudo apt-get install -y nix
          sudo systemctl start nix-daemon.service
          sudo chown -R $(whoami) /nix
      - name: Restore cache
        id: restore-cache
        uses: actions/cache/restore@v5
        with:
          path: |
            /nix
            target
          key: cache-nix
      - name: Build
        run: |
          nix \
            --extra-experimental-features nix-command \
            --extra-experimental-features flakes \
            develop --command cargo build --profile ci
      - name: Clear workspace
        run: cargo clean --workspace
      - name: Delete old cache
        if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && steps.restore-cache.outputs.cache-hit
        env:
          GH_TOKEN: ${{ github.token }}
        run: gh cache delete --repo ${{ github.repository }} ${{ steps.restore-cache.outputs.cache-primary-key }}
      - name: Save cache
        uses: actions/cache/save@v5
        if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
        with:
          path: |
            /nix
            target
          key: ${{ steps.restore-cache.outputs.cache-primary-key }}
  check-release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Show env
        run: |
          uname -a
          ldd --version
      - name: Install
        run: |
          curl https://sh.rustup.rs -sSf | sh -s -- -y
          echo "$HOME/.cargo/bin" >> $GITHUB_PATH
      - name: Restore target dir
        id: restore-cache
        uses: actions/cache/restore@v5
        with:
          path: target
          key: target-check-release
      - name: Check
        run: |
          cargo check --release
      - name: Clear workspace
        run: cargo clean --workspace
      - name: Delete old cache
        if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && steps.restore-cache.outputs.cache-hit
        env:
          GH_TOKEN: ${{ github.token }}
        run: gh cache delete --repo ${{ github.repository }} ${{ steps.restore-cache.outputs.cache-primary-key }}
      - name: Save target dir
        uses: actions/cache/save@v5
        if: github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
        with:
          path: target
          key: ${{ steps.restore-cache.outputs.cache-primary-key }}