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