Skip to content

Migration 1789316115 fails with a misleading keyring-file error when omarchy-mac-keyring is absent from the repo #446

Description

@EttienneM

System details

Apple MacBook Pro (16-inch, M2 Pro, 2023), Asahi / Arch Linux ARM, kernel 7.1.13-3-1-ARCH, Omarchy Mac dev (04862a02) / version 4.0.3rc4, branch quattro.

What's wrong?

Migration 1789316115 ("Trust packages signed by Omarchy Mac") fails on an existing install, because omarchy-mac-keyring does not exist in the omarchy-aarch64 repo. The migration reached clients on quattro before the rc4 packages were published.

Running migration (1789316115)
Trust packages signed by Omarchy Mac
Skipping 'omarchy-mac-keyring': not available in the repos on this system
[sudo] password for ettienne:
==> ERROR: The keyring file /usr/share/pacman/keyrings/omarchy-mac.gpg does not exist.

● Failed (exit 1). Press any key to close...

The repo is still serving 4.0.2-2, and has no fork keyring at all:

$ pacman -Sl omarchy-aarch64 | grep -E ' (omarchy|omarchy-settings|omarchy-keyring|omarchy-mac-keyring) '
omarchy-aarch64 omarchy 4.0.2-2
omarchy-aarch64 omarchy-keyring 20251027-1
omarchy-aarch64 omarchy-settings 4.0.2-2

Because the migration has no state marker, it re-fires the "pending migration" notification on every login, and each attempt prompts for sudo before failing.

The migration's comment assumes the keyring arrives as a dependency of the omarchy package. On an install running from the git checkout rather than the packaged omarchy, that path never fires, so the migration's self-repair branch is the only thing that can deliver the keyring.

The failure mode is worse than the timing bug

The sequencing will resolve itself when rc4 packages ship, but the way the failure surfaces is a separate defect that will outlive it.

migrations/1789316115.sh treats the keyring install as best-effort:

if omarchy-pkg-missing omarchy-mac-keyring; then
  omarchy-pkg-add omarchy-mac-keyring
fi

sudo pacman-key --populate omarchy-mac

but bin/omarchy-pkg-add is the Mac fork's filtering variant, which deliberately skips packages that aren't installable and exits 0:

  else
    echo -e "\033[33mSkipping '$pkg': not available in the repos on this system\033[0m" >&2
  fi
done

((${#to_install[@]})) || exit 0

That filter exists for a good reason — upstream migrations installing x86-only packages — but here it converts a hard prerequisite into a warning. The migration proceeds to pacman-key --populate omarchy-mac and dies on a missing file, so the surfaced error names /usr/share/pacman/keyrings/omarchy-mac.gpg rather than the actual cause: the package that ships that file was never installed. The orange "Skipping" line above it is easy to miss, and the sudo prompt lands between the two, which makes it read like a keyring-population problem rather than a missing-package one.

This is the same class as #428 and #429: an operation reporting success when the underlying action did not happen.

Why this one matters more than a normal migration failure

Per docs/arm-package-sources.md, the following RC moves the fork repo to PackageRequired DatabaseRequired TrustedOnly, and "a client that skipped the bootstrap cannot verify the candidate and stops before changing packages." Anyone who hits this failure and dismisses the recurring notification is silently staged for a blocked upgrade later, with no signal connecting the two.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions