diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a35426..dd81baf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,77 +8,46 @@ on: env: CARGO_TERM_COLOR: always - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} - UBUNTU_DOCKERFILE: .github/workflows/ubuntu.dockerfile - -permissions: - contents: read - packages: read jobs: - check-should-build-container: + ci: runs-on: ubuntu-latest permissions: - pull-requests: read contents: read - steps: - - if: ${{ github.event_name == 'push' }} - uses: actions/checkout@v4 - with: - fetch-depth: 2 - sparse-checkout: .github - - id: changed - uses: tj-actions/changed-files@v45 - with: - files: ${{ env.UBUNTU_DOCKERFILE }} - - id: name - run: echo "container_path=${{ env.REGISTRY }}/${GITHUB_REPOSITORY@L}" >> "$GITHUB_OUTPUT" - outputs: - should-build: ${{ steps.changed.outputs.any_changed }} - container-path: ${{ steps.name.outputs.container_path }} - - ubuntu-build: - runs-on: ubuntu-latest - needs: check-should-build-container - if: ${{ needs.check-should-build-container.outputs.should-build == 'true' }} - permissions: - contents: read - packages: write - id-token: write + packages: read steps: - - uses: docker/setup-buildx-action@v3 - - uses: docker/login-action@v3 + - uses: actions/checkout@v4 + - name: Get MSRV + id: msrv + run: | + echo "msrv=$( + awk '/^rust-version = "[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+"$/ { + print substr($NF, 2, length($NF) - 2) + }' Cargo.toml)" >> "$GITHUB_OUTPUT" + - name: Set XDG_RUNTIME_DIR + id: xrd + run: echo "testdir=$PWD/test-xwls" >> "$GITHUB_OUTPUT" + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y xwayland clang libxcb1 libxcb-cursor0 libxcb-cursor-dev pkg-config libegl1 + env: + DEBIAN_FRONTEND: noninteractive + - uses: dtolnay/rust-toolchain@master with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - uses: docker/build-push-action@v6 - with: - file: ${{ env.UBUNTU_DOCKERFILE }} - push: true - tags: ${{ needs.check-should-build-container.outputs.container-path }}-ubuntu:latest - labels: org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }} - cache-from: type=gha - cache-to: type=gha,mode=max - - build: - needs: [ubuntu-build, check-should-build-container] - if: ${{ always() && (needs.ubuntu-build.result == 'success' || needs.ubuntu-build.result == 'skipped') }} - runs-on: ubuntu-latest - container: - image: ${{ needs.check-should-build-container.outputs.container-path }}-ubuntu:latest - credentials: - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - steps: - - uses: actions/checkout@v4 - - name: Build - run: cargo build --release --verbose - - name: Run tests - run: cargo test --verbose - - name: Format check - run: cargo fmt --check - - name: Clippy - run: cargo clippy --workspace --all-targets + toolchain: ${{ steps.msrv.outputs.msrv }} + components: clippy, rustfmt + - uses: Swatinem/rust-cache@v2 + - name: Build + run: cargo build --all-targets --profile ci --locked --verbose + - name: Run tests + run: | + mkdir "$XDG_RUNTIME_DIR" + cargo test --profile ci --locked --verbose -- --test-threads 1 --nocapture + env: + XDG_RUNTIME_DIR: ${{ steps.xrd.outputs.testdir }} + - name: Format check + run: cargo fmt --check + - name: Clippy + run: cargo clippy --profile ci --locked --workspace --all-targets diff --git a/.github/workflows/ubuntu.dockerfile b/.github/workflows/ubuntu.dockerfile deleted file mode 100644 index e109925..0000000 --- a/.github/workflows/ubuntu.dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM ubuntu:24.04 - -ARG DEBIAN_FRONTEND=noninteractive -ENV TZ=Etc/UTC -ENV CARGO_HOME=/cargo RUSTUP_HOME=/rustup -RUN apt-get update \ - && apt-get install -y xwayland libxcb1 clang libxcb-cursor0 libxcb-cursor-dev curl pkg-config libegl1 \ - && rm -r /var/lib/apt/lists/* -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y \ - && . "/cargo/env" \ - && rustup toolchain install stable \ - && rustup default stable -RUN mkdir /run/xwls-test -ENV PATH="/cargo/bin:$PATH" XDG_RUNTIME_DIR="/run/xwls-test" diff --git a/Cargo.toml b/Cargo.toml index 8e8022e..db6028d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,10 +11,14 @@ rustix = "0.38.31" [workspace.lints.clippy] all = "deny" +[workspace.package] +rust-version = "1.83.0" + [package] name = "xwayland-satellite" version = "0.7.0" edition = "2021" +rust-version.workspace = true [lints] workspace = true @@ -51,3 +55,9 @@ testwl = { path = "testwl" } [build-dependencies] anyhow = "1.0.98" vergen-gitcl = "1.0.8" + +[profile.ci] +inherits = "dev" +# Shrink bloat in ./target which negatively affects build caching +incremental = false +debug = false diff --git a/tests/integration.rs b/tests/integration.rs index ca613c6..41b6075 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -131,7 +131,7 @@ impl Fixture { // wait for connection let fd = unsafe { BorrowedFd::borrow_raw(testwl.poll_fd().as_raw_fd()) }; let pollfd = PollFd::from_borrowed_fd(fd, PollFlags::IN); - assert!(poll(&mut [pollfd.clone()], 100).unwrap() > 0); + assert!(poll(&mut [pollfd.clone()], -1).unwrap() > 0); testwl.dispatch(); let try_bool_timeout = |b: &AtomicBool| {