[Yum-devel] [PATCH] Move some dependency checks to _has_needed_revdeps.
tim.lauridsen at gmail.com
tim.lauridsen at gmail.com
Tue May 8 08:34:29 UTC 2012
On Mon, May 7, 2012 at 10:42 PM, Casey Jao <cjao at ugcs.caltech.edu> wrote:
> 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 | 38 ++++++++++++++++++++++++++++----------
> 1 file changed, 28 insertions(+), 10 deletions(-)
>
> diff --git a/yum/__init__.py b/yum/__init__.py
> index 7e67d20..3b4ddf5 100644
> --- a/yum/__init__.py
> +++ b/yum/__init__.py
> @@ -6292,16 +6292,16 @@ class YumBase(depsolve.Depsolve):
> 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 (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:
> @@ -6354,7 +6354,25 @@ 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():
> + #still_needed = True
> + okay_to_remove[pkg] = False
> + okay_to_remove[curpkg] = False
> + self.verbose_logger.log(logginglevels.DEBUG_2,
> _("%s is needed by a package to be installed."), curpkg)
> + return True
> + #break
> + for fn in curpkg.filelist + curpkg.dirlist:
> + if self.tsInfo.getNewRequires(fn,
> None,(None,None,None)).keys():
> + okay_to_remove[pkg] = False
> + okay_to_remove[curpkg] = False
> + #still_needed = True
> + self.verbose_logger.log(logginglevels.DEBUG_2,
> _("%s is needed by a package to be installed."), curpkg)
> + return True
> + #break
> visited[curpkg] = True
> all_leaves_visited = True
> leaves = curpkg.requiring_packages()
> --
> 1.7.10.1
>
> _______________________________________________
> Yum-devel mailing list
> Yum-devel at lists.baseurl.org
> http://lists.baseurl.org/mailman/listinfo/yum-devel
>
All the commented out code look bad to me, especially the '#break', fine
while testing, but bad in a final commit.
If some code is left commented out, there should be some comment of why it
is there in the code.
Some unit test cases would be nice :)
Tim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.baseurl.org/pipermail/yum-devel/attachments/20120508/70f980b1/attachment.html>
More information about the Yum-devel
mailing list