[Yum-devel] [PATCH 1/2] Move some dependency checks to _has_needed_revdeps.
Casey Jao
cjao at ugcs.caltech.edu
Sat May 19 05:33:21 UTC 2012
This patch is intended to address Bug 773440 regarding
clean_requirements_on_remove
(https://bugzilla.redhat.com/show_bug.cgi?id=773440).
Currently we only consider a reverse dependency of a pkg "needed"
if it was user-installed. The patch checks if the revdep is needed
by a pkg to be installed in the transaction. The corresponding
check in _remove_old_deps is now redundant since _has_needed_revdeps
considers a pkg as a revdep of itself.
---
yum/__init__.py | 29 +++++++++++++++--------------
1 file changed, 15 insertions(+), 14 deletions(-)
diff --git a/yum/__init__.py b/yum/__init__.py
index 5be32e9..1cf0d99 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -6297,19 +6297,7 @@ class YumBase(depsolve.Depsolve):
for requiring in required.requiring_packages(): # so we have required deps - look at all the pkgs which require them
if requiring == required: # if they are self-requiring skip them
continue
-
- # go through the stuff in the ts to be installed - make sure none of that needs the required pkg, either.
- for (provn,provf,provevr) in required.provides:
- if self.tsInfo.getNewRequires(provn, provf, provevr).keys():
- still_needed = True
- okay_to_remove[required] = False
- break
- for fn in required.filelist + required.dirlist:
- if self.tsInfo.getNewRequires(fn, None,(None,None,None)).keys():
- okay_to_remove[required] = False
- still_needed = True
- break
-
+
#for tbi_pkg in self.tsInfo.getMembersWithState(output_states=TS_INSTALL_STATES):
# for reqtuple in tbi_pkg.po.requires:
# if required.provides_for(reqtuple):
@@ -6361,7 +6349,21 @@ class YumBase(depsolve.Depsolve):
# Debugging output
self.verbose_logger.log(logginglevels.DEBUG_2, _("%s has revdep %s which was user-installed."), pkg, curpkg)
ok_to_remove[pkg] = False
+ ok_to_remove[curpkg] = False
return True
+ # go through the stuff in the ts to be installed - make sure none of that needs the required pkg, either.
+ for (provn,provf,provevr) in curpkg.provides:
+ if self.tsInfo.getNewRequires(provn, provf, provevr).keys():
+ ok_to_remove[pkg] = False
+ ok_to_remove[curpkg] = False
+ self.verbose_logger.log(logginglevels.DEBUG_2, _("%s is needed by a package to be installed."), curpkg)
+ return True
+ for fn in curpkg.filelist + curpkg.dirlist:
+ if self.tsInfo.getNewRequires(fn, None,(None,None,None)).keys():
+ ok_to_remove[pkg] = False
+ ok_to_remove[curpkg] = False
+ self.verbose_logger.log(logginglevels.DEBUG_2, _("%s is needed by a package to be installed."), curpkg)
+ return True
visited[curpkg] = True
all_leaves_visited = True
leaves = curpkg.requiring_packages()
@@ -6375,4 +6377,3 @@ class YumBase(depsolve.Depsolve):
# Debugging output
self.verbose_logger.log(logginglevels.DEBUG_2, _("%s has no user-installed revdeps."), pkg)
return False
-
--
1.7.10.1
More information about the Yum-devel
mailing list