Take Hyprtoolkit from the mirror so fresh guest builds work again - #284
Open
stevederico wants to merge 5 commits into
Open
stevederico wants to merge 5 commits into
stevederico wants to merge 5 commits into
Conversation
Arch Linux ARM dropped hyprland-guiutils 0.2.2-3, and 0.2.2-4 needs libhyprtoolkit.so=6, which the local Hyprtoolkit 0.5.4 rebuild does not provide. The mirror's Hyprtoolkit 0.6.0 is already built against libaquamarine.so=14, so the rebuild is no longer needed. Keep the aquamarine rebuild and every guest hold.
pacman will not install an ignored package to satisfy another package's dependency, so holding hyprland-guiutils (and now Hyprtoolkit) in the builder leaves Hyprland unresolvable. The finished guest keeps both holds.
Resolved natively on Apple Silicon with guest/build-container.sh --refresh-package-lock. Brings hyprtoolkit 0.6.0-1 and hyprland-guiutils 0.2.2-4 with the other packages the mirror has moved since the last refresh.
The ARM mirror replaced hyprland-protocols 0.7.0-1 and meson 1.12.0-1, so the patched Hyprland build could not install its pinned toolchain.
hyprland-protocols 0.7.1 and meson 1.12.1 produce a different reproducible Hyprland binary. Update its digest and the launcher's component identity.
This was referenced Sep 29, 2026
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.
What changed and why
Fixes #280. A fresh
make guestonmainstops atunable to satisfy dependency 'hyprland-guiutils' required by hyprland. Two things cause it:hyprland-guiutils0.2.2-3. Its replacement, 0.2.2-4, needslibhyprtoolkit.so=6, which only Hyprtoolkit 0.6.0 provides, not the local 0.5.4 rebuild.hyprland-guiutilson the guest'sIgnorePkg, and the factory builder reuses those holds. pacman won't install an ignored package to satisfy another package's dependency, so Hyprland can't pull it in even when a compatible version exists.The mirror is consistent again: its Hyprtoolkit 0.6.0-1 is built against
libaquamarine.so=14, the same ABI as the pinned aquamarine 0.15.1 and Hyprland 0.56.2. So this PR:hyprland-guiutils0.2.2-4 from the locked mirror transaction. The aquamarine rebuild stays.DEPENDENCY_HOLDSinwrite-builder-pacman-conf.py). The finished guest still holds the kernel, Hyprland, aquamarine, Hyprtoolkit andhyprland-guiutilstogether, so omarchy update fails: hyprland-guiutils 0.2.2-4 needs libhyprtoolkit.so=6, but hyprtoolkit is held at 0.5.4 #266/fix: hold hyprland-guiutils with the compatible graphics stack #268 are unchanged for users.packages.lock.json(46 packages the mirror has moved, includinglinux-aarch647.2.8-1 and systemd 262).hyprland-protocols0.7.1-1,meson1.12.1-1; the pinned versions are gone), and pins the resulting Hyprland binary digest and the launcher's component identity.Testing
On a Mac mini M4, macOS 26.6.2, Docker via Colima (6 CPUs, 10 GiB), native arm64:
guest/build-container.sh --refresh-package-lock guest/packages.lock.json: wrote the lock in this PR.OMARCHY_GUEST_BUILD_JOBS=4 make guest: passes ([build-cache] recorded successful guest build). Onmainit fails with the error in make guest fails: hyprland-guiutils 0.2.2-3 is gone from ALARM, and 0.2.2-4 needs hyprtoolkit 0.6 #280.32bd58fd…); the first failed the old digest check, the second matched the new pin.make app: passes.run-qemu-gpu.sh --ephemeral: the fresh guest boots toomarchy-factory login:.python3 guest/tests/verify.py: native guest contract verified.python3 -m unittest guest.tests.test_builder_pacman_conf guest.tests.test_repair_update_holds: 18 tests pass. The builder test now asserts that the dependency-only holds are released in the builder config while the guest file keeps them.make testsuites on the same Mac mini:test-contractsandtest-guestpass (256 guest tests, 1 skipped). The Swift suite passes (377 tests in 81 suites). The ninetest-shellsuites andtest-resizepass. The mini has Command Line Tools 26.4.1 rather than Xcode, so the Swift suite ran asswift testwith the Command Line Tools'Testing.frameworkadded to the search path; CI covers it with Xcode.run-qemu-gpu.sh --ephemeral: owner provisioning ("Setting up your machine") completes and lands on the Hyprland desktop with Waybar and the first-run notifications. In the guest,pacman -Qreportshyprland 0.56.2-3.2,hyprtoolkit 0.6.0-1,hyprland-guiutils 0.2.2-4,aquamarine 0.15.1-1andlinux-aarch64 7.2.8-1.omarchy-updatein that guest: package databases sync, the full system upgrade reports "there is nothing to do", and mise tools are up to date. No errors.Release
Once this is in, could we cut a release?
mainhas 44 commits since v0.4.1, and users on 0.4.1 still hit issues that are already fixed there, including #257, #263, #266, #259, #238, #212 and the M4 startup crash (#151, fixed by #277). A fresh guest build was the blocker, which this PR clears.