[yum-commits] Branch 'yum-3_2_X' - 2 commits - output.py test/testbase.py yum/depsolve.py yum/transactioninfo.py
skvidal at osuosl.org
skvidal at osuosl.org
Tue Oct 19 14:52:34 UTC 2010
output.py | 12 +++++++-----
test/testbase.py | 6 ++++--
yum/depsolve.py | 24 ++++++++++++++++++------
yum/transactioninfo.py | 4 ++--
4 files changed, 31 insertions(+), 15 deletions(-)
New commits:
commit a5c0742f6421337c35ec38093dfa302cdd9910d0
Merge: b9d72cc... 42009d4...
Author: Seth Vidal <skvidal at fedoraproject.org>
Date: Mon Oct 18 14:36:30 2010 -0400
Merge branch 'yum-3_2_X' of ssh://yum.baseurl.org/srv/projects/yum/git/yum into yum-3_2_X
* 'yum-3_2_X' of ssh://yum.baseurl.org/srv/projects/yum/git/yum:
Fix our pkgtup+checksum cache to save every pkgtup, so we don't lose pkgs.
l10n: Fix mistake for italian translation
Close urlgrabber's curl object after download packages.
Might as well add this to the repo. at least.
Fix problems with remove+update.
Add tests for remove+update, and update+remove.
Allow tests to be multi-commands, aka. shell.
commit b9d72ccf696ff343cfb98ae3c578a3e16b679325
Author: Seth Vidal <skvidal at fedoraproject.org>
Date: Mon Oct 18 14:34:37 2010 -0400
add 'ud' and 'od' modes to transaction members: updated and obsoleted
- change the outputs a bit to correspond to this.
- add depsolve cases to handle this better
diff --git a/output.py b/output.py
index cfca45f..5e2f073 100755
--- a/output.py
+++ b/output.py
@@ -1988,15 +1988,17 @@ class DepSolveProgressCallBack:
def pkgAdded(self, pkgtup, mode):
modedict = { 'i': _('installed'),
- 'u': _('updated'),
- 'o': _('obsoleted'),
+ 'u': _('an update'),
'e': _('erased'),
'r': _('reinstalled'),
- 'd': _('downgraded')}
+ 'd': _('a downgrade'),
+ 'o': _('obsoleting'),
+ 'ud': _('updated'),
+ 'od': _('obsoleted'),}
(n, a, e, v, r) = pkgtup
modeterm = modedict[mode]
self.verbose_logger.log(logginglevels.INFO_2,
- _('---> Package %s.%s %s:%s-%s set to be %s'), n, a, e, v, r,
+ _('---> Package %s.%s %s:%s-%s will be %s'), n, a, e, v, r,
modeterm)
def start(self):
@@ -2172,7 +2174,7 @@ def _pkgname_ui(ayum, pkgname, ts_states=None):
if ts_states is None:
# Note 'd' is a placeholder for downgrade, and
# 'r' is a placeholder for reinstall. Neither exist atm.
- ts_states = ('d', 'e', 'i', 'r', 'u')
+ ts_states = ('d', 'e', 'i', 'r', 'u', 'od', 'ud')
matches = []
def _cond_add(po):
diff --git a/test/testbase.py b/test/testbase.py
index f91fbf1..e6744c1 100644
--- a/test/testbase.py
+++ b/test/testbase.py
@@ -128,8 +128,10 @@ class DepSolveProgressCallBack:
def pkgAdded(self, pkgtup, mode):
modedict = { 'i': _('installed'),
'u': _('updated'),
- 'o': _('obsoleted'),
- 'e': _('erased')}
+ 'od': _('obsoleted'),
+ 'o': _('obsoleting'),
+ 'e': _('erased'),
+ 'ud':_('update'),}
(n, a, e, v, r) = pkgtup
modeterm = modedict[mode]
self.verbose_logger.log(logginglevels.INFO_2,
diff --git a/yum/depsolve.py b/yum/depsolve.py
index 886cca8..b3d014f 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -376,6 +376,16 @@ class Depsolve(object):
self.verbose_logger.log(logginglevels.DEBUG_2, _('Mode for pkg providing %s: %s'),
niceformatneed, needmode)
+ if needmode in ['ud', 'od']: # the thing it needs is being updated or obsoleted away
+ # try to update the requiring package in hopes that all this problem goes away :(
+ self.verbose_logger.log(logginglevels.DEBUG_2, _('Trying to update %s to resolve dep'), requiringPo)
+ txmbrs = self.update(po=requiringPo, requiringPo=requiringPo)
+ if not txmbrs:
+ msg = self._err_missing_requires(requiringPo, requirement)
+ self.verbose_logger.log(logginglevels.DEBUG_2, _('No update paths found for %s. Failure!'), requiringPo)
+ return self._requiringFromTransaction(requiringPo, requirement, errorlist)
+ checkdeps = 1
+
if needmode in ['e']:
self.verbose_logger.log(logginglevels.DEBUG_2, _('TSINFO: %s package requiring %s marked as erase'),
requiringPo, needname)
@@ -384,11 +394,10 @@ class Depsolve(object):
checkdeps = 1
if needmode in ['i', 'u']:
- length = len(self.tsInfo)
- self.update(name=name, epoch=epoch, version=ver, release=rel,
- requiringPo=requiringPo)
+ newupdates = self.update(name=name, epoch=epoch, version=ver, release=rel,
+ requiringPo=requiringPo)
txmbrs = self.tsInfo.getMembersWithState(requiringPo.pkgtup, TS_REMOVE_STATES)
- if len(self.tsInfo) != length and txmbrs:
+ if newupdates and txmbrs:
if txmbrs[0].output_state == TS_OBSOLETED:
self.verbose_logger.log(logginglevels.DEBUG_2, _('TSINFO: Obsoleting %s with %s to resolve dep.'),
requiringPo, txmbrs[0].obsoleted_by[0])
@@ -795,8 +804,11 @@ class Depsolve(object):
dscb_ts_state = 'd'
if dscb_ts_state == 'u' and txmbr.reinstall:
dscb_ts_state = 'r'
- if dscb_ts_state == 'u' and not txmbr.updates:
- dscb_ts_state = 'i'
+ if dscb_ts_state == 'u':
+ if txmbr.output_state == TS_OBSOLETING:
+ dscb_ts_state = 'o'
+ elif not txmbr.updates:
+ dscb_ts_state = 'i'
self.dsCallback.pkgAdded(txmbr.pkgtup, dscb_ts_state)
self.verbose_logger.log(logginglevels.DEBUG_2,
_("Checking deps for %s") %(txmbr,))
diff --git a/yum/transactioninfo.py b/yum/transactioninfo.py
index f34a45e..91bcbcb 100644
--- a/yum/transactioninfo.py
+++ b/yum/transactioninfo.py
@@ -497,7 +497,7 @@ class TransactionData:
txmbr.current_state = TS_INSTALL
txmbr.output_state = TS_UPDATED
txmbr.po.state = TS_UPDATED
- txmbr.ts_state = None # FIXME: should use a real state here.
+ txmbr.ts_state = 'ud'
txmbr.relatedto.append((updating_po, 'updatedby'))
txmbr.updated_by.append(updating_po)
self.add(txmbr)
@@ -529,7 +529,7 @@ class TransactionData:
txmbr.current_state = TS_INSTALL
txmbr.output_state = TS_OBSOLETED
txmbr.po.state = TS_OBSOLETED
- txmbr.ts_state = None # FIXME: should use a real state here.
+ txmbr.ts_state = 'od'
txmbr.relatedto.append((obsoleting_po, 'obsoletedby'))
txmbr.obsoleted_by.append(obsoleting_po)
self.add(txmbr)
More information about the Yum-commits
mailing list