Bound IPC transport deadlines while preserving portal leases, supervise desktop helper and agent recovery, and reserve final floating window geometry during placement. Stabilize CLI output and isolated tests, expand workspace CI, resolve formatting and lint failures, and bundle the MIT license with installer compatibility.
102 lines
4.0 KiB
YAML
102 lines
4.0 KiB
YAML
name: Workspace release checks
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- "compositor/**"
|
|
- "crates/**"
|
|
- "shell/**"
|
|
- "portal/**"
|
|
- "feresectl/**"
|
|
- "scripts/**"
|
|
- "packaging/**"
|
|
- "assets/**"
|
|
- "LICENSE"
|
|
- "rust-toolchain.toml"
|
|
- "rustfmt.toml"
|
|
- "Cargo.toml"
|
|
- "Cargo.lock"
|
|
- ".github/workflows/compositor-lifecycle.yml"
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- "compositor/**"
|
|
- "crates/**"
|
|
- "shell/**"
|
|
- "portal/**"
|
|
- "feresectl/**"
|
|
- "scripts/**"
|
|
- "packaging/**"
|
|
- "assets/**"
|
|
- "LICENSE"
|
|
- "rust-toolchain.toml"
|
|
- "rustfmt.toml"
|
|
- "Cargo.toml"
|
|
- "Cargo.lock"
|
|
- ".github/workflows/compositor-lifecycle.yml"
|
|
workflow_dispatch:
|
|
permissions:
|
|
contents: read
|
|
concurrency:
|
|
group: compositor-lifecycle-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
jobs:
|
|
protocol:
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 30
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install compositor build dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y build-essential pkg-config dbus-daemon libwayland-dev \
|
|
libxkbcommon-dev xkb-data libinput-dev libudev-dev libseat-dev libgbm-dev \
|
|
libegl-dev libegl-mesa0 libgl1-mesa-dri libdrm-dev libfontconfig1-dev libfreetype-dev libexpat1-dev
|
|
- name: Install Rust
|
|
run: rustup toolchain install 1.95.0 --profile minimal
|
|
- name: Test compositor policies, protocols and worker lifecycles
|
|
run: cargo +1.95.0 test --locked -p ferese -- --nocapture
|
|
- name: Test capture privacy, resize dependencies and cursor composition
|
|
env:
|
|
LIBGL_ALWAYS_SOFTWARE: "1"
|
|
EGL_PLATFORM: surfaceless
|
|
run: |
|
|
cargo +1.95.0 test --locked -p ferese state::capture_privacy::tests -- --ignored --nocapture
|
|
cargo +1.95.0 test --locked -p ferese backends::direct::capture::tests::capture_recomposes_cursor_without_touching_the_display_target -- --ignored --nocapture
|
|
cargo +1.95.0 test --locked -p ferese winit::tests::capture_failure_restores_display_target_and_subsequent_frames_render -- --ignored --nocapture
|
|
|
|
workspace:
|
|
runs-on: ubuntu-24.04
|
|
container: fedora:44
|
|
timeout-minutes: 60
|
|
env:
|
|
CARGO_BUILD_JOBS: "2"
|
|
CARGO_INCREMENTAL: "0"
|
|
CARGO_PROFILE_DEV_DEBUG: "0"
|
|
CARGO_PROFILE_TEST_DEBUG: "0"
|
|
steps:
|
|
- name: Install desktop build and test dependencies
|
|
run: |
|
|
dnf install -y --allowerasing python3 python3-gobject python3-pillow git curl gcc gcc-c++ make cmake pkgconf-pkg-config \
|
|
wayland-devel wayland-protocols-devel libxkbcommon-devel libinput-devel systemd-devel libseat-devel \
|
|
mesa-libgbm-devel mesa-libEGL-devel mesa-dri-drivers libdrm-devel fontconfig-devel \
|
|
freetype-devel expat-devel dbus-daemon dbus-tools desktop-file-utils foot pam \
|
|
clang clang-devel pipewire-devel pipewire wireplumber polkit polkit-libs libei \
|
|
xdg-desktop-portal xdg-desktop-portal-gtk \
|
|
gstreamer1-devel gstreamer1-plugins-base gstreamer1-plugins-good pipewire-gstreamer
|
|
- uses: actions/checkout@v6
|
|
- name: Install pinned Rust and checks
|
|
run: |
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o /tmp/rustup.sh
|
|
sh /tmp/rustup.sh -y --profile minimal --default-toolchain 1.95.0 --component rustfmt --component clippy
|
|
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
|
|
- name: Check formatting and all workspace lints
|
|
run: |
|
|
cargo fmt --all --check
|
|
cargo clippy --locked --workspace --all-targets -- -D warnings
|
|
- name: Build desktop binaries and test the complete workspace
|
|
run: |
|
|
cargo build --locked --workspace
|
|
cargo test --locked --workspace --no-fail-fast
|
|
- name: Test installer, session recovery and private portal contracts
|
|
run: python3 -m unittest discover -s scripts/tests -v
|