SonicDE-rpmspecs/copr-build.sh

126 lines
2.6 KiB
Bash
Executable file

#!/bin/bash
set -e
COPR="@SonicDE/SonicDE-EL10"
GIT_URL="https://pc-rytteren.dk/forge/anders/SonicDE-rpmspecs.git"
BRANCH="master"
METHOD="rpkg"
# Build order tiers (sequential within tier for dependency safety)
TIER1=(
sonic-silver-theme
sonic-frameworks-keybind
sonic-frameworks-windowsystem
sonic-keybind-daemon
sonic-sysguard-library
sonic-screen-library
sonic-interface-libraries
sonic-system-info
sonic-login-manager
)
TIER2=(
sonic-screen
sonic-screenlocker
)
TIER3=(
sonic-win
)
TIER4=(
sonic-workspace
)
TIER5=(
sonic-desktop-interface
)
# Submit SCM build to Copr (blocks until completion by default)
submit_scm() {
local pkg=$1
echo "=== Bygger $pkg i Copr (SCM) ==="
copr-cli buildscm "$COPR" \
--clone-url "$GIT_URL" \
--commit "$BRANCH" \
--subdir "$pkg" \
--spec "$pkg.spec" \
--method "$METHOD"
}
# Submit tier in parallel
submit_tier() {
local -n tier=$1
local tier_name=$2
local pids=()
echo ""
echo "========================================"
echo " $tier_name"
echo "========================================"
for pkg in "${tier[@]}"; do
submit_scm "$pkg" &
pids+=($!)
done
# Wait for all builds in this tier
for pid in "${pids[@]}"; do
wait $pid || { echo "FEJL: Bygning fejlede i $tier_name"; exit 1; }
done
echo " $tier_name færdig"
}
usage() {
echo "Brug: $0 [tier1|tier2|tier3|tier4|tier5|all ...]"
echo " tier1 - Byg Tier 1 pakker (uden afhængigheder)"
echo " tier2 - Byg Tier 2 pakker"
echo " tier3 - Byg Tier 3 pakker"
echo " tier4 - Byg Tier 4 pakker"
echo " tier5 - Byg Tier 5 pakker"
echo " all - Byg alle tiers (default hvis intet angivet)"
echo ""
echo "Eksempler:"
echo " $0 tier2 # Kør kun Tier 2"
echo " $0 tier1 tier2 # Kør Tier 1 og 2"
exit 1
}
# Determine which tiers to run
if [ $# -eq 0 ]; then
set -- all
fi
# Validate args
for arg; do
case "$arg" in
tier1|tier2|tier3|tier4|tier5|all) ;;
*) echo "Ukendt argument: $arg"; usage ;;
esac
done
echo "Bygger SonicDE pakker i Copr fra git repo"
echo "COPR: $COPR"
echo "GIT: $GIT_URL"
echo "Branch: $BRANCH"
echo ""
for arg; do
case "$arg" in
tier1) submit_tier TIER1 "Tier 1" ;;
tier2) submit_tier TIER2 "Tier 2" ;;
tier3) submit_tier TIER3 "Tier 3" ;;
tier4) submit_tier TIER4 "Tier 4" ;;
tier5) submit_tier TIER5 "Tier 5" ;;
all)
submit_tier TIER1 "Tier 1"
submit_tier TIER2 "Tier 2"
submit_tier TIER3 "Tier 3"
submit_tier TIER4 "Tier 4"
submit_tier TIER5 "Tier 5"
;;
esac
done
echo ""
echo "Kørsel færdig."