]> code.delx.au - monosys/commitdiff
aptorphan/pacorphan: Support exclusions
authorJames Bunton <jamesbunton@delx.net.au>
Sat, 13 Feb 2016 00:18:21 +0000 (11:18 +1100)
committerJames Bunton <jamesbunton@delx.net.au>
Sat, 13 Feb 2016 00:18:21 +0000 (11:18 +1100)
scripts/aptorphan
scripts/pacorphan

index 0b1d7830d9dde2c8bd68ca579ab33d6f11204fde..0126a43abe0383fa499f04e73dd0ada04757f737 100755 (executable)
@@ -52,16 +52,24 @@ need_install_list = []
 installed_pkg_list = []
 explicit_pkg_list = []
 
-for filename in os.listdir(APTORPHAN_PATH):
+for filename in sorted(os.listdir(APTORPHAN_PATH)):
     if filename.startswith("."):
         continue
-    filename = os.path.join(APTORPHAN_PATH, filename)
-    for pkg in codecs.open(filename, "r", "utf-8"):
-        pkg = strip_comment(pkg)
-        if pkg in keep_pkg_list:
-            print("# Duplicate entry: " + pkg)
-        if pkg:
-            keep_pkg_list.append(pkg.strip())
+    full_filename = os.path.join(APTORPHAN_PATH, filename)
+    for pkg in codecs.open(full_filename, "r", "utf-8"):
+        pkg = strip_comment(pkg).strip()
+        if not pkg:
+            continue
+        if filename[0] != "~":
+            if pkg in keep_pkg_list:
+                print("# Duplicate entry:", pkg, "in file", filename)
+                continue
+            keep_pkg_list.append(pkg)
+        else:
+            if pkg not in keep_pkg_list:
+                print("# Redundant removal:", pkg, "in file", filename)
+                continue
+            keep_pkg_list.remove(pkg)
 
 for pkg in run(["aptitude", "search", "?or(~i!~aremove,~ainstall)", "-F", "%p"]):
     installed_pkg_list.append(pkg.strip())
index 39f90f0d5f452dfc887b5099a5ec9a25ece6c7bc..a64a2ee0c1d6a6d434ca8e21fe7ca073fbdb159a 100755 (executable)
@@ -27,16 +27,24 @@ unneeded_pkg_list = []
 installed_pkg_list = []
 explicit_pkg_list = []
 
-for filename in os.listdir(PACORPHAN_PATH):
+for filename in sorted(os.listdir(PACORPHAN_PATH)):
     if filename.startswith("."):
         continue
-    filename = os.path.join(PACORPHAN_PATH, filename)
-    for pkg in codecs.open(filename, "r", "utf-8"):
-        pkg = strip_comment(pkg)
-        if pkg in keep_pkg_list:
-            print("# Duplicate entry: " + pkg)
-        if pkg:
-            keep_pkg_list.append(pkg.strip())
+    full_filename = os.path.join(PACORPHAN_PATH, filename)
+    for pkg in codecs.open(full_filename, "r", "utf-8"):
+        pkg = strip_comment(pkg).strip()
+        if not pkg:
+            continue
+        if filename[0] != "~":
+            if pkg in keep_pkg_list:
+                print("# Duplicate entry:", pkg, "in file", filename)
+                continue
+            keep_pkg_list.append(pkg)
+        else:
+            if pkg not in keep_pkg_list:
+                print("# Redundant removal:", pkg, "in file", filename)
+                continue
+            keep_pkg_list.remove(pkg)
 
 for pkg in run(["pacman", "-Qq"]):
     installed_pkg_list.append(pkg)