[yum-cvs] yum/yum constants.py, 1.10, 1.11 depsolve.py, 1.119, 1.120 transactioninfo.py, 1.34, 1.35

Seth Vidal skvidal at linux.duke.edu
Fri Feb 16 06:06:34 UTC 2007


Update of /home/groups/yum/cvs/yum/yum
In directory login1.linux.duke.edu:/tmp/cvs-serv18850/yum

Modified Files:
	constants.py depsolve.py transactioninfo.py 
Log Message:

all of this may need to be rolled back but:

-  add an 'updated' txmbr for tsInfo so we can easily see what's being
  removed, implicitly as part of an update
- make _checkUpdate() in YumDepsolver be an amalgam of install and remove
- add the TS_UPDATED constant to constants


Index: constants.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/constants.py,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- constants.py	7 Feb 2007 06:48:36 -0000	1.10
+++ constants.py	16 Feb 2007 06:06:32 -0000	1.11
@@ -24,7 +24,7 @@
 TS_OBSOLETED = 50
 TS_OBSOLETING = 60
 TS_AVAILABLE = 70
-
+TS_UPDATED = 90
 
 TS_INSTALL_STATES = [TS_INSTALL, TS_TRUEINSTALL, TS_UPDATE, TS_OBSOLETING]
 TS_REMOVE_STATES = [TS_ERASE, TS_OBSOLETED]

Index: depsolve.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/depsolve.py,v
retrieving revision 1.119
retrieving revision 1.120
diff -u -r1.119 -r1.120
--- depsolve.py	15 Feb 2007 10:03:24 -0000	1.119
+++ depsolve.py	16 Feb 2007 06:06:32 -0000	1.120
@@ -1214,49 +1214,55 @@
 
     def _checkUpdate(self, txmbr):
         ret = self._checkInstall(txmbr)
+        for oldpo in txmbr.updates:
+            for this_txmbr in self.tsInfo.getMembers(oldpo.pkgtup):
+                ret.extend(self._checkRemove(this_txmbr))
+        # this is probably incomplete, but it does create curious results
+        return ret
 
+# FIXME - commenting the below temporarily
+        #~ flags = {"GT": rpm.RPMSENSE_GREATER,
+                 #~ "GE": rpm.RPMSENSE_EQUAL | rpm.RPMSENSE_GREATER,
+                 #~ "LT": rpm.RPMSENSE_LESS,
+                 #~ "LE": rpm.RPMSENSE_LESS | rpm.RPMSENSE_EQUAL,
+                 #~ "EQ": rpm.RPMSENSE_EQUAL,
+                 #~ None: 0 }
+
+        #~ newprovs = txmbr.po.returnPrco('provides')
+
+        #~ for up in txmbr.updates:
+            #~ provs = up.returnPrco('provides')
+            #~ for prov in provs:
+                #~ (r, f, v) = prov
+                #~ found = False
+                #~ for (nr, nf, nv) in newprovs:
+                    #~ if nr == r and f == None:
+                        #~ found = True
+                        #~ break
+                    #~ elif nr == r and f == "EQ" and nv == v:
+                        #~ found = True
+                        #~ break
+                #~ if found:
+                    #~ continue
+                #~ for pkgtup in self.rpmdb.whatRequires(r, f, v):
+                    #~ inst = self.getInstalledPackageObject(pkgtup)
+                    #~ if inst in txmbr.updates:
+                        #~ continue
+                    #~ updated = False
+                    #~ for tx in self.tsInfo.matchNaevr(name=inst.name):
+                        #~ if tx.output_state == TS_UPDATE and inst in tx.updates:
+                            #~ updated = True
+                            #~ break
+                        #~ # XXX: check for erasure and obsoletes
+                    #~ if updated:
+                        #~ continue
+                    
+                    #~ ret.append( ((inst.name, inst.version, inst.release),
+                                 #~ (r, version_tuple_to_string(v)),
+                                 #~ flags[f], None,
+                                 #~ rpm.RPMDEP_SENSE_REQUIRES))
 
-        flags = {"GT": rpm.RPMSENSE_GREATER,
-                 "GE": rpm.RPMSENSE_EQUAL | rpm.RPMSENSE_GREATER,
-                 "LT": rpm.RPMSENSE_LESS,
-                 "LE": rpm.RPMSENSE_LESS | rpm.RPMSENSE_EQUAL,
-                 "EQ": rpm.RPMSENSE_EQUAL,
-                 None: 0 }
-
-        newprovs = txmbr.po.returnPrco('provides')
-
-        for up in txmbr.updates:
-            provs = up.returnPrco('provides')
-            for prov in provs:
-                (r, f, v) = prov
-                found = False
-                for (nr, nf, nv) in newprovs:
-                    if nr == r and f == None:
-                        found = True
-                        break
-                    elif nr == r and f == "EQ" and nv == v:
-                        found = True
-                        break
-                if found:
-                    continue
-                for pkgtup in self.rpmdb.whatRequires(r, f, v):
-                    inst = self.getInstalledPackageObject(pkgtup)
-                    if inst in txmbr.updates:
-                        continue
-                    updated = False
-                    for tx in self.tsInfo.matchNaevr(name=inst.name):
-                        if tx.output_state == TS_UPDATE and inst in tx.updates:
-                            updated = True
-                            break
-                        # XXX: check for erasure and obsoletes
-                    if updated:
-                        continue
-                    ret.append( ((inst.name, inst.version, inst.release),
-                                 (r, version_tuple_to_string(v)),
-                                 flags[f], None,
-                                 rpm.RPMDEP_SENSE_REQUIRES))
-
-        return ret
+#        return ret
 
     def _checkRemove(self, txmbr):
         po = txmbr.po

Index: transactioninfo.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/transactioninfo.py,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- transactioninfo.py	3 Feb 2007 15:44:22 -0000	1.34
+++ transactioninfo.py	16 Feb 2007 06:06:32 -0000	1.35
@@ -277,6 +277,21 @@
         if oldpo:
             txmbr.relatedto.append((oldpo.pkgtup, 'updates'))
             txmbr.updates.append(oldpo)
+            self.addUpdated(oldpo, po)
+        self.add(txmbr)
+        return txmbr
+
+    def addUpdated(self, po, updating_po):
+        """adds a package as being updated by another pkg
+           takes a packages object and returns a TransactionMember Object"""
+    
+        txmbr = TransactionMember(po)
+        txmbr.current_state = TS_INSTALL
+        txmbr.output_state =  TS_UPDATED
+        txmbr.po.state = TS_UPDATED
+        txmbr.ts_state = None
+        txmbr.relatedto.append((updating_po, 'updatedby'))
+        txmbr.updated_by.append(updating_po)
         self.add(txmbr)
         return txmbr
 
@@ -308,6 +323,7 @@
         self.add(txmbr)
         return txmbr
 
+
 class ConditionalTransactionData(TransactionData):
     """A transaction data implementing conditional package addition"""
     def __init__(self):




More information about the Yum-cvs-commits mailing list