#!/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."