[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