2026-05-29 20:05:11 -03:00
|
|
|
#!/bin/bash
|
|
|
|
|
set -e
|
|
|
|
|
|
Fix build failures across all 136 SonicDE specs for RHEL 10
The hard-forked specs inherited Fedora's Qt5/KF5 dual-build logic and
upstream naming, but SonicDE is Qt6/KF6-only and renames many install
paths. This resolves every build failure so all 136 packages build
cleanly on AlmaLinux 10 (EPEL10).
Major categories of fixes:
- Qt5/KF5 bcond: force-disable kf5/qt5 in sonic-accounts-integration,
sonic-breeze, sonic-qt-theme-bridge and sonic-crypto-library, since
the forks are Qt6-only and no KF5 packages are shipped.
- %find_lang / %files -f mismatch: 41 specs called %find_lang with the
upstream name but referenced %{name}.lang in %files, so the .lang file
was never found. Aligned %files -f to the same name %find_lang emits.
- Fork-specific install paths: silver/silver-dark icon themes
(sonic-frameworks-silver-icons), Silver GTK theme dir
(sonic-gtk-theme-bridge), and glob-based wallpaper listing
(sonic-workspace-wallpapers) replace the old breeze/hardcoded paths.
- Library SOVERSION globs: sonic-frameworks-quick-ui and
sonic-quick-image-editor shipped %{version} in .so paths, but the
CMake project version differs from the spec version; switched to
SOVERSION globs.
- Distro compatibility: disable HEIF plugin in sonic-frameworks-image-
formats (libheif 1.17 API break), drop missing ffmpeg8 patch from
sonic-pipewire, always build X11 plugin in sonic-frameworks-idle-
tracker, and remove unbuildable kf5-rpm-macros / version-pinned
BuildRequires.
- sonic-frameworks-sso: drop D-Bus interface XML install rule and fix
sysconfdir path.
- sonic-polkit: remove Qt5 build (fork is Qt6-only).
2026-08-25 12:14:17 +02:00
|
|
|
COPR="${COPR:-@SonicDE/SonicDE-EL10-dev}"
|
2026-08-25 01:26:42 +02:00
|
|
|
GIT_URL="${GIT_URL:-https://pc-rytteren.dk/forge/anders/SonicDE-rpmspecs.git}"
|
Fix build failures across all 136 SonicDE specs for RHEL 10
The hard-forked specs inherited Fedora's Qt5/KF5 dual-build logic and
upstream naming, but SonicDE is Qt6/KF6-only and renames many install
paths. This resolves every build failure so all 136 packages build
cleanly on AlmaLinux 10 (EPEL10).
Major categories of fixes:
- Qt5/KF5 bcond: force-disable kf5/qt5 in sonic-accounts-integration,
sonic-breeze, sonic-qt-theme-bridge and sonic-crypto-library, since
the forks are Qt6-only and no KF5 packages are shipped.
- %find_lang / %files -f mismatch: 41 specs called %find_lang with the
upstream name but referenced %{name}.lang in %files, so the .lang file
was never found. Aligned %files -f to the same name %find_lang emits.
- Fork-specific install paths: silver/silver-dark icon themes
(sonic-frameworks-silver-icons), Silver GTK theme dir
(sonic-gtk-theme-bridge), and glob-based wallpaper listing
(sonic-workspace-wallpapers) replace the old breeze/hardcoded paths.
- Library SOVERSION globs: sonic-frameworks-quick-ui and
sonic-quick-image-editor shipped %{version} in .so paths, but the
CMake project version differs from the spec version; switched to
SOVERSION globs.
- Distro compatibility: disable HEIF plugin in sonic-frameworks-image-
formats (libheif 1.17 API break), drop missing ffmpeg8 patch from
sonic-pipewire, always build X11 plugin in sonic-frameworks-idle-
tracker, and remove unbuildable kf5-rpm-macros / version-pinned
BuildRequires.
- sonic-frameworks-sso: drop D-Bus interface XML install rule and fix
sysconfdir path.
- sonic-polkit: remove Qt5 build (fork is Qt6-only).
2026-08-25 12:14:17 +02:00
|
|
|
BRANCH="${BRANCH:-hardfork}"
|
2026-08-25 01:26:42 +02:00
|
|
|
METHOD="${METHOD:-rpkg}"
|
2026-05-29 20:05:11 -03:00
|
|
|
|
2026-08-25 01:26:42 +02:00
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
|
ORDER_FILE="$SCRIPT_DIR/build-order.txt"
|
2026-05-29 20:05:11 -03:00
|
|
|
|
2026-08-25 01:26:42 +02:00
|
|
|
# All tier names present in build-order.txt, in order.
|
|
|
|
|
tier_names() {
|
|
|
|
|
sed -n 's/^\[\(tier[0-9]\+\)\]$/\1/p' "$ORDER_FILE"
|
|
|
|
|
}
|
2026-05-29 20:05:11 -03:00
|
|
|
|
2026-08-25 01:26:42 +02:00
|
|
|
# Packages of a single tier.
|
|
|
|
|
tier_packages() {
|
|
|
|
|
sed -n "/^\[$1\]$/,/^\[/p" "$ORDER_FILE" |
|
|
|
|
|
grep -v '^\[' | grep -v '^#' | grep -v '^$'
|
|
|
|
|
}
|
2026-05-29 20:05:11 -03:00
|
|
|
|
|
|
|
|
# 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() {
|
2026-08-25 01:26:42 +02:00
|
|
|
local tier=$1
|
2026-05-29 20:05:11 -03:00
|
|
|
local pids=()
|
|
|
|
|
|
|
|
|
|
echo ""
|
|
|
|
|
echo "========================================"
|
2026-08-25 01:26:42 +02:00
|
|
|
echo " $tier"
|
2026-05-29 20:05:11 -03:00
|
|
|
echo "========================================"
|
|
|
|
|
|
2026-08-25 01:26:42 +02:00
|
|
|
for pkg in $(tier_packages "$tier"); do
|
2026-05-29 20:05:11 -03:00
|
|
|
submit_scm "$pkg" &
|
|
|
|
|
pids+=($!)
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
for pid in "${pids[@]}"; do
|
2026-08-25 01:26:42 +02:00
|
|
|
wait $pid || { echo "FEJL: Bygning fejlede i $tier"; exit 1; }
|
2026-05-29 20:05:11 -03:00
|
|
|
done
|
2026-08-25 01:26:42 +02:00
|
|
|
echo " $tier færdig"
|
2026-05-29 20:05:11 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
usage() {
|
2026-08-25 01:26:42 +02:00
|
|
|
echo "Brug: $0 [tierN ...|all]"
|
|
|
|
|
echo " tierN - Byg pakkerne i den angivne tier fra build-order.txt"
|
|
|
|
|
echo " all - Byg alle tiers i rækkefølge (default hvis intet angivet)"
|
2026-05-29 20:05:11 -03:00
|
|
|
echo ""
|
2026-08-25 01:26:42 +02:00
|
|
|
echo "Tiers i $ORDER_FILE:"
|
|
|
|
|
for t in $(tier_names); do
|
|
|
|
|
echo " $t ($(tier_packages "$t" | wc -l) pakker)"
|
|
|
|
|
done
|
|
|
|
|
echo ""
|
|
|
|
|
echo "Miljøvariabler: COPR, GIT_URL, BRANCH, METHOD"
|
2026-05-29 20:05:11 -03:00
|
|
|
exit 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if [ $# -eq 0 ]; then
|
|
|
|
|
set -- all
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
for arg; do
|
|
|
|
|
case "$arg" in
|
2026-08-25 01:26:42 +02:00
|
|
|
all) ;;
|
|
|
|
|
tier[0-9]*)
|
|
|
|
|
tier_names | grep -qx "$arg" || { echo "Ukendt tier: $arg"; usage; } ;;
|
2026-05-29 20:05:11 -03:00
|
|
|
*) 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
|
2026-08-25 01:26:42 +02:00
|
|
|
if [ "$arg" = all ]; then
|
|
|
|
|
for t in $(tier_names); do
|
|
|
|
|
submit_tier "$t"
|
|
|
|
|
done
|
|
|
|
|
else
|
|
|
|
|
submit_tier "$arg"
|
|
|
|
|
fi
|
2026-05-29 20:05:11 -03:00
|
|
|
done
|
|
|
|
|
|
|
|
|
|
echo ""
|
|
|
|
|
echo "Kørsel færdig."
|