🔒 Repository is read-only – file editing is disabled.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
#!/usr/bin/env python3
"""libpwquality: dodaje brakujace zaleznosci runtime.
pam_pwquality.so i libpwquality.so.1 maja NEEDED libcrack.so.2 (pakiet cracklib)
oraz libpam.so.0 (pakiet pam), a receptura miala depends: [] (cracklib tylko
w makedepends). Odkad shadow uzywa pam_pwquality jako modulu 'required'
w system-password, brak cracklib na systemie = brak mozliwosci zmiany hasla.
"""
import sys
import yaml
P = "/var/lib/pagan-sync/recipes/utils/libpwquality/PAGBUILD.yaml"
APPLY = "--apply" in sys.argv
text = open(P, newline="", encoding="utf-8").read()
before = yaml.safe_load(text)
if before.get("depends") != []:
print(f"UWAGA: depends nie jest puste: {before.get('depends')!r} - przerywam")
sys.exit(1)
if text.count("depends: []") != 1:
print("BLAD: nie znalazlem dokladnie jednego 'depends: []'")
sys.exit(1)
new = text.replace("depends: []", "depends:\n- pam\n- cracklib", 1)
old_rel = before.get("pkgrel")
new_rel = str(int(str(old_rel)) + 1)
assert f"pkgrel: '{old_rel}'" in new, "nie znalazlem pkgrel w formie z cudzyslowem"
new = new.replace(f"pkgrel: '{old_rel}'", f"pkgrel: '{new_rel}'", 1)
after = yaml.safe_load(new)
print("depends :", after["depends"])
print("pkgrel :", old_rel, "->", after["pkgrel"])
changed = [k for k in set(before) | set(after) if before.get(k) != after.get(k)]
print("zmienione klucze:", changed)
ok = (after["depends"] == ["pam", "cracklib"] and set(changed) == {"depends", "pkgrel"})
print("walidacja:", "OK" if ok else "BLAD")
if not ok:
sys.exit(1)
if APPLY:
with open(P, "w", newline="", encoding="utf-8") as f:
f.write(new)
print("ZAPISANO")
else:
print("DRY-RUN")