Avoid reboot prompts after identical Hyprland reinstalls - #10524
Open
Brams-s wants to merge 1 commit into
Open
Conversation
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.
Reinstalling an unchanged Hyprland package replaces the executable inode. The running
/proc/<pid>/exelink then ends in(deleted)even when its bytes exactly match the installed replacement, so the updater incorrectly requests a reboot.Compare the running executable with its replacement before requesting a reboot. Check the current user's Hyprland PIDs individually so SDDM and other users' compositors are excluded, and request at most one compositor reboot. A different or unavailable replacement retains the existing prompt. Kernel handling and
confirm_rebootbehavior remain unchanged.Six regression cases use real copied executables and
/proclinks: unchanged, identical reinstall, a changed executable among multiple processes, multiple changed processes, missing replacement, and no compositor. System actions are stubbed. On the affected desktop, the running deleted executable and installed Hyprland had identical SHA-256 hashes.Validation: all six regression cases, command metadata, shell/Python syntax, and diff checks pass. Full CLI suite: 112 assertions pass. Full shell suite: 225/228 files pass initially. The desktop IPC smoke test passes all 16 assertions when rerun alone; Snapper passes all 8 after providing the required sibling omarchy-iso checkout. The remaining bin-style failure is reproduced on unmodified HEAD: existing raw
command -v gumcalls in omarchy-remove-ai-openclaw and omarchy-remove-ai-hermes.Prepared with Codex assistance; reproduction, live executable comparison, tests, and review were performed locally.
The ARM updater that exposed this is addressed separately in omarchy-mac#360; this change also covers identical reinstalls through other update paths.
CI availability: this upstream branch has no repository test workflows under
.github/workflows, and GitHub reports no test checks for this PR. The focused regression suite was independently rerun and passes all six cases; this should not be described as an upstream CI pass.