]> xn--ix-yja.es Git - alex.git/commitdiff
Refine hack_dnf_problems script
authoralex <alex@pdp7.net>
Fri, 1 Aug 2025 06:51:53 +0000 (08:51 +0200)
committeralexpdp7 <alex@corcoles.net>
Fri, 1 Aug 2025 06:52:51 +0000 (08:52 +0200)
personal_infra/hack_dnf_problems.py

index a88f1b5ba0fc3d11be0df349ed70502d3ad9dc15..5c104d700d7ecf97422c74dc60da27c8212dfbfb 100755 (executable)
@@ -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}")