From: alex Date: Fri, 1 Aug 2025 06:51:53 +0000 (+0200) Subject: Refine hack_dnf_problems script X-Git-Url: https://xn--ix-yja.es/gitweb/?a=commitdiff_plain;h=b859bc938954ee4d8e7674df4cea488062c5ce99;p=alex.git Refine hack_dnf_problems script --- diff --git a/personal_infra/hack_dnf_problems.py b/personal_infra/hack_dnf_problems.py index a88f1b5..5c104d7 100755 --- a/personal_infra/hack_dnf_problems.py +++ b/personal_infra/hack_dnf_problems.py @@ -1,8 +1,10 @@ #!/usr/bin/python3 -import itertools +import datetime +import pathlib import shlex import subprocess +import sys def _(*args): print(shlex.join(args)) @@ -12,27 +14,32 @@ def clean(): _("rpm", "--rebuilddb") _("dnf", "clean", "all") -def update_disabled(repos): - args = ["dnf", "update", "-y"] + list(itertools.chain(*[("--disablerepo", r) for r in repos])) - _(*args) +def update_enabled(repo): + clean() + _("dnf", "update", "-y", "--disablerepo=*", "--enablerepo", repo) -def update_enabled(repos): - args = ["dnf", "update", "-y", "--disablerepo=*"] + list(itertools.chain(*[("--enablerepo", r) for r in repos])) - _(*args) - -clean() - -problematic_repos = ["copr:copr.fedorainfracloud.org:mlampe:emacs-30", "okay", "extras"] - -update_disabled(problematic_repos) +repolist = subprocess.run(["dnf", "repolist"], check=True, stdout=subprocess.PIPE, text=True).stdout +repos = [lps[0] for lps in map(str.split, repolist.splitlines()[1:])] failed = [] -for r in problematic_repos: +for r in repos: try: - update_enabled([r]) + update_enabled(r) except Exception as e: failed.append(r) print(f"fail {r}: {e}") -print(f"failed {failed}") +if not failed: + sys.exit(0) + +failed_path = pathlib.Path("failed") + +existing_failed = failed_path.read_text() if failed_path.exists() else "" + +for f in failed: + existing_failed += f"{f} {datetime.date.today()}\n" + +failed_path.write_text(existing_failed) + +print(f"failed {failed}, wrote to {failed_path}")