Make aarch64 a first-class architecture in the scheduled pipeline
One list, PUBLISHED_ARCHES in helpers/paths.sh (default x86_64, overridable with OMARCHY_ARCHES), now drives everything the repository host schedules. check-versions compares PKGBUILDs against each architecture's channel databases and writes one queue per channel and architecture; auto-release works through the queues one architecture at a time, each with its own backoff, so a failing build on one never blocks the other; advance-channel --arch all re-runs an advance for every published architecture and omarchy-release uses it for start and ship, building the pinned pair once per architecture in its rc trigger; the train observes channels through the reference (first) architecture instead of a hard-coded x86_64. Queue and backoff files written under the old per-channel names are treated as x86_64 until consumed. Two things made an aarch64 builder image impossible to create: the keyring bootstrap fetched omarchy-keyring from the target architecture's own channel tree, which does not exist before that architecture has published anything, and the QEMU probe only knew the x86_64-host, aarch64-target case. The keyring (arch=any) now always comes from the x86_64 tree, and the probe compares host and target architectures and runs a container for the target platform. clean-repo grouped versions with a regex that only knew any, x86_64 and i686, so aarch64 packages would never have been pruned.
This commit is contained in:
1 parent
069ffc8c3a
commit
91843ab099
12 files changed
+330
-104
No files matched your search
@@ -5,6 +5,62 @@
|
||||
ARCH=${ARCH:-x86_64}
|
||||
MIRROR=${MIRROR:-edge}
|
||||
|
||||
# Architectures the tooling knows how to build.
|
||||
VALID_ARCHES="x86_64 aarch64"
|
||||
|
||||
# Architectures this repository PUBLISHES. The scheduled pipeline (version
|
||||
# check, auto-release, channel advance with --arch all) runs once per entry,
|
||||
# in this order; the first entry is the reference architecture that the
|
||||
# release train observes channels through. Adding an architecture here is the
|
||||
# enablement step: the next check-versions tick queues its packages and the
|
||||
# next auto-release tick builds them. OMARCHY_ARCHES overrides it for a host
|
||||
# or a one-off run.
|
||||
PUBLISHED_ARCHES="${OMARCHY_ARCHES:-x86_64}"
|
||||
|
||||
validate_arch() {
|
||||
case " $VALID_ARCHES " in
|
||||
*" $1 "*) return 0 ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
require_valid_arch() {
|
||||
if ! validate_arch "$1"; then
|
||||
echo "Invalid architecture: $1 (must be one of: $VALID_ARCHES)" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
published_arches() {
|
||||
local arch
|
||||
for arch in $PUBLISHED_ARCHES; do
|
||||
require_valid_arch "$arch"
|
||||
echo "$arch"
|
||||
done
|
||||
}
|
||||
|
||||
reference_arch() {
|
||||
published_arches | head -1
|
||||
}
|
||||
|
||||
# Scheduled-pipeline state, one file per channel and architecture, so one
|
||||
# architecture's queue or backoff never gates another's.
|
||||
STATE_DIR="${OMARCHY_STATE_DIR:-/root/.state}"
|
||||
|
||||
sync_queue_file() { # sync_queue_file <mirror> <arch>
|
||||
echo "$STATE_DIR/.sync-needed-$1-$2"
|
||||
}
|
||||
|
||||
sync_fail_file() { # sync_fail_file <mirror> <arch>
|
||||
echo "$STATE_DIR/.build-failed-$1-$2"
|
||||
}
|
||||
|
||||
# The pre-architecture names, .sync-needed-<mirror> and .build-failed-<mirror>,
|
||||
# meant x86_64. A host upgraded mid-cycle may still hold one; readers treat
|
||||
# it as the x86_64 file until it is consumed.
|
||||
legacy_sync_queue_file() { echo "$STATE_DIR/.sync-needed-$1"; }
|
||||
legacy_sync_fail_file() { echo "$STATE_DIR/.build-failed-$1"; }
|
||||
|
||||
# Valid package channels, in pipeline order: packages move edge -> rc -> stable
|
||||
VALID_MIRRORS="edge rc stable"
|
||||
|
||||
|
||||
Reference in new issue
Block a user