Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Unified Diff: parallel_emerge

Issue 2868094: Fix --onlydeps flag. (Closed) Base URL: ssh://git@chromiumos-git/crosutils.git
Patch Set: s/, This/, this/g Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: parallel_emerge
diff --git a/parallel_emerge b/parallel_emerge
index 0977231642350ca4e571b47ac1f73da4edffce3e..be5b3908ef19a308b7b30a6b5d5f32978be5f2e6 100755
--- a/parallel_emerge
+++ b/parallel_emerge
@@ -664,16 +664,35 @@ class DepGraphGenerator(object):
def RemoveInstalledPackages():
"""Remove installed packages, propagating dependencies."""
- # If we're not in selective mode, the packages on the command line are
- # not optional.
+ # If we're in non-selective mode, the packages specified on the command
+ # line are generally mandatory.
+ #
+ # There are a few exceptions to this rule:
+ # 1. If the package isn't getting installed because it's in
+ # package.provided, it's not mandatory.
+ # 2. If the package isn't getting installed because we're in --onlydeps
+ # mode, it's not mandatory either.
if "--selective" in emerge.opts:
selective = emerge.opts["--selective"] != "n"
else:
selective = "--noreplace" in emerge.opts or "--update" in emerge.opts
+ onlydeps = "--onlydeps" in emerge.opts
if not selective:
for pkg in emerge.cmdline_packages:
+ # If the package specified on the command-line is in our install
+ # list, mark it as non-optional.
+ found = False
for db_pkg in final_db.match_pkgs(pkg):
- deps_info[db_pkg.cpv]["optional"] = False
+ this_pkg = deps_info.get(db_pkg.cpv)
+ if this_pkg:
+ found = True
+ this_pkg["optional"] = False
+
+ # We didn't find the package in our final db. If we're not in
+ # --onlydeps mode, this likely means that the package was specified
+ # in package.provided.
+ if not found and not onlydeps and "--verbose" in emerge.opts:
+ print "Skipping %s (is it in package.provided?)" % pkg
# Schedule packages that aren't on the install list for removal
rm_pkgs = set(deps_map.keys()) - set(deps_info.keys())
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698