#!/usr/bin/env python3 """Wymuszenie sum kontrolnych dla pakietow krytycznych w pagbuild.""" import sys TARGETS = ["/tmp/pagbuild-src/pagbuild", "/opt/pagan-web-v2/pagbuild"] anchor = 'echo "πŸš€ Budowanie: $FULL_NAME [$PKG_CAT]"\n' insert = anchor + ''' # ── Wymuszenie sum kontrolnych dla pakietow krytycznych ───────────────────── # Pakiety z tej listy nie moga byc budowane z sha256sums=SKIP: podmienione # zrodlo przeszloby bez wykrycia. Swiadome obejscie: PAGBUILD_ALLOW_SKIP=1. # Uzupelnienie sum w recepturach: pagsync --fix-sha CRITICAL_PKGS_SUMS="glibc gcc binutils openssl gnutls nettle sudo shadow pam \ systemd dbus bash coreutils util-linux curl wget gnupg libgcrypt libgpg-error \ libassuan libksba libxcrypt make-ca openssh polkit seatd kernel kernel-lts \ kernel-mainline libcap e2fsprogs procps-ng python perl zlib xz tar libarchive \ pcre2 expat iproute2 kmod elfutils attr acl gzip bzip2 less sed grep findutils gawk" if [[ " $CRITICAL_PKGS_SUMS " == *" $PKG_NAME "* ]] && [[ "${PAGBUILD_ALLOW_SKIP:-0}" != "1" ]]; then _skip_count=$(python3 - "$RECIPE_FILE" <<'PYSUM' import sys, yaml try: d = yaml.safe_load(open(sys.argv[1], encoding="utf-8")) or {} except Exception: print(0) raise SystemExit s = d.get("sha256sums") or [] if not isinstance(s, list): s = [s] print(sum(1 for x in s if str(x).strip().upper().startswith("SKIP"))) PYSUM ) if [[ "${_skip_count:-0}" != "0" ]]; then echo "❌ BΕ‚Δ…d: $PKG_NAME jest pakietem krytycznym, a receptura ma ${_skip_count} wpis(y) SKIP w sha256sums." echo " UzupeΕ‚nij sumy: pagsync --fix-sha" echo " ObejΕ›cie (Ε›wiadome): PAGBUILD_ALLOW_SKIP=1 pagbuild $RECIPE_FILE ..." exit 1 fi fi ''' for path in TARGETS: try: s = open(path, encoding="utf-8").read() except OSError as e: print(f"POMINIETO {path}: {e}") continue if s.count(anchor) != 1: sys.exit(f"BLAD {path}: znaleziono {s.count(anchor)} wystapien kotwicy") if "CRITICAL_PKGS_SUMS" in s: print(f"juz spatchowane: {path}") continue s = s.replace(anchor, insert, 1) open(path, "w", encoding="utf-8").write(s) print(f"spatchowano {path}")