Hi all: The attached patch adds skip-broken output to the yum cli's summary bit, like so:
============================================================================= Package Arch Version Repository Size ============================================================================= Updating: openbox-libs x86_64 3.4.5-1.fc8 updates 45 k Skipped: frobnitz x86_64 0.0.1 badrepo 165 k frobnitz-libs x86_64 0.0.1 badrepo 100 k libdc1394 x86_64 2.0.1-3.fc8 updates 111 k Transaction Summary ============================================================================= Install 0 Package(s) Update 1 Package(s) Remove 0 Package(s) So, I didn't add a count of skipped packages at the end, but that might be nice to show when some packages are actually skipped, or if skip-broken is enabled (rather than all the time). The code itself puts the skipped packages into the transaction info in a new 'skipped' array. While not used by rpm proper, this feels like a good place for it to be. What does everyone think? -James
From 397ccf184a810150d5412c2954419c6c01cb41f3 Mon Sep 17 00:00:00 2001
From: James Bowes <[EMAIL PROTECTED]>
Date: Mon, 11 Feb 2008 19:20:25 -0500
Subject: [PATCH] Display packages skipped by skip-broken in the cli transaction
summary
---
output.py | 3 ++-
test/skipbroken-tests.py | 8 +++++++-
yum/__init__.py | 1 +
yum/transactioninfo.py | 6 ++++++
4 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/output.py b/output.py
index 187a16c..b8bf111 100644
--- a/output.py
+++ b/output.py
@@ -488,7 +488,8 @@ class YumOutput:
(_('Removing'), self.tsInfo.removed),
(_('Installing for dependencies'),
self.tsInfo.depinstalled),
(_('Updating for dependencies'),
self.tsInfo.depupdated),
- (_('Removing for dependencies'),
self.tsInfo.depremoved)]:
+ (_('Removing for dependencies'),
self.tsInfo.depremoved),
+ (_('Skipped'), self.tsInfo.skipped)]:
if pkglist:
totalmsg = u"%s:\n" % action
for txmbr in pkglist:
diff --git a/test/skipbroken-tests.py b/test/skipbroken-tests.py
index e15ae56..628f82c 100644
--- a/test/skipbroken-tests.py
+++ b/test/skipbroken-tests.py
@@ -359,7 +359,13 @@ class SkipBrokenTests(DepsolveTests):
self.assertEquals('empty', *self.resolveCode(skip=True))
self.assertResult([ipo1,ipo2])
-
+ def testSkippedAddedToTransactionInfo(self):
+ ipo1 = self.instPackage('foo', '1',arch='i386')
+ po1 = self.repoPackage('foo', '2',arch='i386')
+ po1.addRequires('notfound', 'EQ', ('0', '1', '0'))
+ self.tsInfo.addUpdate(po1, oldpo=ipo1)
+ self.assertEquals('empty', *self.resolveCode(skip=True))
+ self.assertEquals(po1, self.tsInfo.skipped[0])
def resolveCode(self,skip = False):
solver = YumBase()
diff --git a/yum/__init__.py b/yum/__init__.py
index 2b88c9c..be5bba2 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -678,6 +678,7 @@ class YumBase(depsolve.Depsolve):
for po in skipped_list:
msg = _(" %s from %s") % (str(po),po.repo.id)
self.verbose_logger.info(msg)
+ self.tsInfo.addSkipped(po)
else:
# If we cant solve the problems the show the original error
messages.
self.verbose_logger.info("Skip-broken could not solve problems")
diff --git a/yum/transactioninfo.py b/yum/transactioninfo.py
index c899abc..01d23d9 100644
--- a/yum/transactioninfo.py
+++ b/yum/transactioninfo.py
@@ -63,6 +63,7 @@ class TransactionData:
self.depremoved = []
self.depinstalled = []
self.depupdated = []
+ self.skipped = []
def __len__(self):
return len(self.pkgdict)
@@ -293,6 +294,7 @@ class TransactionData:
self.depupdated.sort()
self.depinstalled.sort()
self.depremoved.sort()
+ self.skipped.sort()
self.instgroups.sort()
self.removedgroups.sort()
@@ -400,6 +402,10 @@ class TransactionData:
self.add(txmbr)
return txmbr
+ def addSkipped(self, po):
+ """ Add a package that has been skipped due to dependency problems """
+ txmbr = TransactionMember(po)
+ self.skipped.append(txmbr)
def setDatabases(self, rpmdb, pkgSack):
self.rpmdb = rpmdb
--
1.5.4.1.1228.g547b
pgppAJZpbhK5E.pgp
Description: PGP signature
_______________________________________________ Yum-devel mailing list [email protected] https://lists.dulug.duke.edu/mailman/listinfo/yum-devel
