Repository navigation
ci: build the Nix flake and check the minimum Rust version - #436
Merged
Merged
Conversation
The "Nix flake" job ran `check nix-instantiation`, which is `nix build --dry-run`: it evaluates the packages and the development shell but never builds them, so a check phase that fails only at build time, as in #432, still passed CI. Add `check nix-build`, which builds the same flake outputs and prints their logs, and run it in the job after the instantiation check. Both commands share one list of flake outputs. Raise the job timeout for the release builds.
Both manifests declare rust-version 1.99.0 so that nixpkgs, which ships rustc 1.99.0, can build Wayscriber, but every CI job used the 1.99.1 development toolchain, so nothing checked that the floor still builds. Add `ci minimum-rust` and a "Minimum Rust" job that runs it. The command reads rust-version from both manifests, which must agree, installs that toolchain with rustup, and runs `cargo +<version> check --locked --workspace --all-targets` with all features and with no default features. The explicit toolchain is needed because rust-toolchain.toml selects 1.99.1 inside the checkout. `version check` now also requires both crates to declare the same rust-version and rust-toolchain.toml to pin a channel no older than it.
The configurator's language-rebuild contract fails on a workstation with GTK 4.24 and Weston 15: shortcut recording ends before the first language switch. The CI job passes on Ubuntu 24.04, while ubuntu-latest is moving to a newer image. Pin the job until the contract is checked against newer GTK and Weston, so a runner image change cannot break the required check unnoticed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds three CI changes, one commit each:
nix build --dry-run,which evaluates the packages but never builds them. [BUG] Installing via nix flake fails #432 shipped because of
this: the check phase failed only during a real build.
rust-version = "1.99.0"so nixpkgs can build Wayscriber. Every job usedthe 1.99.1 development toolchain, so nothing tested that floor.
ubuntu-24.04.ubuntu-latestis moving to anewer image, and with newer GTK and Weston the configurator contract below
fails.
Changes
ci: build the Nix flake instead of only evaluating itcheck nix-build. It builds.#wayscriber,.#wayscriber-configurator,and the x86_64-linux development shell, including each package's check
phase, and prints the build logs. It uses the same list of flake outputs as
check nix-instantiation.from 20 to 45 minutes for the release builds. The check name stays the same.
ci: check the workspace with the minimum Rust versionci minimum-rustand a new "Minimum Rust" job that runs it. Thecommand:
rust-versionfrom both manifests, which must agree--no-self-updatecargo +<version> check --locked --workspace --all-targetswith--all-featuresand with--no-default-features+<version>is needed becauserust-toolchain.tomlselects1.99.1 inside the checkout.
version checkalso requires both crates to declare the samerust-version, andrust-toolchain.tomlto pin a channel no older thanit.
rust-versioninto itssynthetic manifests.
ci: pin the GTK widget job to Ubuntu 24.04app::component::tests::language_changes_rebuild_the_window_in_placefailswith GTK 4.24 and Weston 15. Shortcut recording ends before the first
language switch. Giving Weston a fake seat (
--fake-seat) removes the seatwarning, but the test still fails, so a missing seat is not the cause. The
job passes on Ubuntu 24.04. The pin keeps a runner image change from
breaking this required check until the contract is investigated separately.
Validation
check nix-instantiation,check nix-build, andci minimum-rustwouldrun, and new
version checkcases for both Rust rules.dotnet formatpasses, and so doversion check,assets check,check nixpkgs-recipe,check legacy-tools, andcheck rust-source-coverage.ci minimum-rustwas run locally. It installs and selects 1.99.0, andboth feature sets check cleanly.
time on this PR.
Notes
should be required.
Arm runner lane is a possible follow-up.