🔒 Repository is read-only – file editing is disabled.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
#!/bin/bash
# =============================================================================
# run-weekly.sh – tygodniowa heurystyka + budowa najnowszych pakietów
# 1) pagsync --check-updates --apply → znajduje nowsze wersje upstream i
# podbija pkgver w recepturach (heurystyka: update-skrypt / git / httpdir /
# automatyczna ze źródeł)
# 2) commit zmian receptur do recipes.git (best-effort)
# 3) pagsync --fix-sha → uzupełnia realne sumy SHA256 (SKIP→suma)
# 4) buduje DOKŁADNIE pakiety, których wersja została podbita (lista z --apply)
#
# Zabezpieczenia:
# • globalny lock w pagsync (exit 3) – jeśli buduje panel/timer, kończymy
# od razu, bez masowych porażek
# • każdy build w pojedynczym wywołaniu pagsync – rootfs zajęty = przerwij
# =============================================================================
set -uo pipefail
export PAGAN_RECIPES=/var/lib/pagan-sync/recipes
export PAGAN_ROOTFS=/var/lib/pagan-build/rootfs
export PAGAN_REPO=/var/www/repo.paganlinux.eu
export PAGAN_PAGBUILD=/opt/pagan-web-v2/pagbuild
export PAGAN_BUILD_OUT=/var/cache/pagbuild/output
export PAGAN_GPG_KEY=A14CBE52BE0D63F5
export PAGAN_DO_SIGN=1
export PYTHONUNBUFFERED=1
PS=/opt/pagan-web-v2/pagsync
LOG=/var/log/pagan-weekly.log
UPDATED=/var/lib/pagan-build/updated-packages.list
RECIPES=/var/lib/pagan-sync/recipes
echo "===== WEEKLY START $(date '+%Y-%m-%d %H:%M:%S') =====" >> "$LOG"
# ── 1) Heurystyka: nowe wersje upstream + podbicie pkgver ──
"$PS" --once --check-updates --apply >> "$LOG" 2>&1
rc=$?
if [[ $rc -eq 3 ]]; then
echo "⏭ Inna instancja pagsync już działa – tygodniowy przebieg pominięty" >> "$LOG"
exit 0
fi
# ── 2) Commit zmian receptur (heurystyka) – best-effort ──
# git add -u (nie -A!): tylko modyfikacje/usunięcia śledzonych plików – -A z
# nieaktualnego drzewa przywracałoby usunięte pliki (np. easytag/id3lib).
# commit -> pull --rebase -> push – wspólna dyscyplina zapisu jak w panelu/auto-fix.
( cd "$RECIPES" && git add -u && \
git -c user.name="PaganOS Builder" -c user.email="repo@paganlinux.eu" \
commit -m "weekly: check-updates (podbicie wersji upstream)" && \
git pull --rebase origin main && \
git push origin HEAD ) >> "$LOG" 2>&1 || \
echo "⚠ weekly: commit/push NIEUDANY (rebase/konflikt?) – sprawdź ręcznie: $RECIPES" >> "$LOG"
# ── 3) Uzupełnij realne sumy SHA256 (po --apply są SKIP; auto_fix commituje sam) ──
"$PS" --once --fix-sha >> "$LOG" 2>&1 || true
# ── 4) Zbuduj najnowsze wersje (tylko te podbite przez heurystykę) ──
if [[ -s "$UPDATED" ]]; then
echo "Budowanie zaktualizowanych pakietów:" >> "$LOG"
while IFS= read -r pkg; do
[[ -z "$pkg" ]] && continue
echo " → $pkg" >> "$LOG"
"$PS" --once --build "$pkg" >> "$LOG" 2>&1 || true
done < "$UPDATED"
: > "$UPDATED"
else
echo "ℹ Brak zaktualizowanych pakietów – wszystko aktualne" >> "$LOG"
fi
echo "===== WEEKLY DONE $(date '+%Y-%m-%d %H:%M:%S') =====" >> "$LOG"
exit 0