[Piuparts-commits] [piuparts] 06/09: p: prepare for tracking versions of installed packages

Holger Levsen holger at moszumanska.debian.org
Sat May 16 14:51:33 UTC 2015


This is an automated email from the git hooks/post-receive script.

holger pushed a commit to branch develop
in repository piuparts.

commit 7b821779ada32892ebd7a1c87c1f9fb0b95c6152
Author: Andreas Beckmann <anbe at debian.org>
Date:   Mon May 4 22:15:39 2015 +0200

    p: prepare for tracking versions of installed packages
    
    s.t. restore_selections() can restore the correct version if there
    is more than one, e.g. in sid+experimental
    
    Signed-off-by: Andreas Beckmann <anbe at debian.org>
---
 piuparts.py | 33 +++++++++++++++++----------------
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/piuparts.py b/piuparts.py
index d754df7..0fca2b2 100644
--- a/piuparts.py
+++ b/piuparts.py
@@ -1204,7 +1204,7 @@ class Chroot:
         vlist = [line.split() for line in output.split("\n") if line.strip()]
         vdict = {}
         for name, status in vlist:
-            vdict[name] = status
+            vdict[name] = (status, None)
         return vdict
 
     def get_diversions(self):
@@ -1333,21 +1333,21 @@ class Chroot:
         changes = diff_selections(self, selections)
         deps = {}
         nondeps = {}
-        for name, state in changes.iteritems():
+        for name, state_version in changes.iteritems():
             if name in packages:
-                nondeps[name] = state
+                nondeps[name] = state_version
             else:
-                deps[name] = state
+                deps[name] = state_version
 
-        deps_to_remove = [name for name, state in deps.iteritems()
+        deps_to_remove = [name for name, (state, version) in deps.iteritems()
                           if state == "remove"]
-        deps_to_purge = [name for name, state in deps.iteritems()
+        deps_to_purge = [name for name, (state, version) in deps.iteritems()
                          if state == "purge"]
-        nondeps_to_remove = [name for name, state in nondeps.iteritems()
+        nondeps_to_remove = [name for name, (state, version) in nondeps.iteritems()
                              if state == "remove"]
-        nondeps_to_purge = [name for name, state in nondeps.iteritems()
+        nondeps_to_purge = [name for name, (state, version) in nondeps.iteritems()
                             if state == "purge"]
-        deps_to_install = [name for name, state in deps.iteritems()
+        deps_to_install = [name for name, (state, version) in deps.iteritems()
                            if state == "install"]
         all_to_remove = deps_to_remove + deps_to_purge + nondeps_to_remove + nondeps_to_purge
 
@@ -2117,15 +2117,16 @@ def diff_selections(chroot, selections):
        set to to restore original selections."""
     changes = {}
     current = chroot.get_selections()
-    for name, value in current.iteritems():
+    for name, (value, version) in current.iteritems():
         if name not in selections:
-            changes[name] = "purge"
-        elif selections[name] != current[name] and \
-                selections[name] in ["purge", "install"]:
+            changes[name] = ("purge", None)
+        elif selections[name][0] != value and \
+                selections[name][0] in ["purge", "install"]:
             changes[name] = selections[name]
-    for name, value in selections.iteritems():
-        if name not in current:
-            changes[name] = "install"
+    for name, (value, version) in selections.iteritems():
+        if name not in current or \
+            current[name][1] != version:
+                changes[name] = selections[name]
     return changes
 
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/piuparts/piuparts.git



More information about the Piuparts-commits mailing list