PR builds link against published edge, so a Hyprland bump in the same merge cannot see the carry, and as a fast-ring package it would reach every aarch64 channel. The rebuild detection fix that bumps it once the carry publishes moves to its own PR, so this change only adds the aquamarine carry.
101 lines
3.0 KiB
Bash
101 lines
3.0 KiB
Bash
# Common path variables for Omarchy package build system
|
|
# This file should be sourced after setting BUILD_ROOT
|
|
|
|
# Default architecture and mirror
|
|
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
|
|
# 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"
|
|
|
|
validate_mirror() {
|
|
case "$1" in
|
|
edge | rc | stable) return 0 ;;
|
|
*) return 1 ;;
|
|
esac
|
|
}
|
|
|
|
require_valid_mirror() {
|
|
if ! validate_mirror "$1"; then
|
|
echo "Invalid mirror: $1 (must be one of: $VALID_MIRRORS)" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Core directories (architecture-independent)
|
|
BUILD_DIR="$BUILD_ROOT/build"
|
|
SRC_DIR="$BUILD_ROOT/src"
|
|
LOG_DIR="$BUILD_ROOT/logs"
|
|
PKGBUILDS_DIR="$BUILD_ROOT/pkgbuilds"
|
|
|
|
# The published repository tree. Secondary checkouts (like the rc branch
|
|
# worktree on the build host) set OMARCHY_REPO_ROOT so every channel lives in
|
|
# one shared tree regardless of which checkout ran the command.
|
|
REPO_ROOT="${OMARCHY_REPO_ROOT:-$BUILD_ROOT/pkgs.omarchy.org}"
|
|
|
|
# Function to update architecture and mirror-specific paths
|
|
# Call this after changing ARCH or MIRROR variables
|
|
update_arch_paths() {
|
|
BUILD_OUTPUT_DIR="$BUILD_ROOT/build-output/$MIRROR/$ARCH" # Unsigned packages
|
|
REPO_DIR="$REPO_ROOT/$MIRROR/$ARCH" # Repository (signed packages)
|
|
}
|
|
|
|
# Initialize architecture-specific directories with default ARCH and MIRROR
|
|
update_arch_paths
|