.TP
.BR "\-\-update " (\fB\-u\fR)
Updates packages to the best version available, which may not always be the
-highest version number due to masking for testing and development. This will
-also update direct dependencies which may not be what you want. Package atoms
+highest version number due to masking for testing and development.
+Package atoms
specified on the command line are greedy, meaning that unspecific atoms may
match multiple installed versions of slotted packages.
.TP
it to output verbose debugging information to stdout. This also enables
a plethora of other output (mostly dependency resolution messages).
.TP
-.BR "\-\-deep " (\fB\-D\fR)
+.BR "\-\-deep [DEPTH] " (\fB\-D\fR)
This flag forces
\fBemerge\fR to consider the entire dependency tree of packages,
instead of checking only the immediate dependencies of the packages.
if "--nodeps" in myopts:
myparams.pop("recurse", None)
if "--deep" in myopts:
- myparams["deep"] = True
+ myparams["deep"] = myopts["--deep"]
if "--complete-graph" in myopts:
myparams["complete"] = True
return myparams
buildpkgonly = "--buildpkgonly" in self._frozen_config.myopts
nodeps = "--nodeps" in self._frozen_config.myopts
empty = "empty" in self._dynamic_config.myparams
- deep = "deep" in self._dynamic_config.myparams
- update = "--update" in self._frozen_config.myopts and dep.depth <= 1
+ deep = self._dynamic_config.myparams.get("deep", 0)
+ recurse = empty or deep is True or dep.depth <= deep
if dep.blocker:
if not buildpkgonly and \
not nodeps and \
# available for optimization of merge order.
if dep.priority.satisfied and \
not dep_pkg.installed and \
- not (existing_node or empty or deep or update):
+ not (existing_node or recurse):
myarg = None
if dep.root == self._frozen_config.target_root:
try:
emerge --deep <pkgspec>; we need to recursively check dependencies of pkgspec
If we are in --nodeps (no recursion) mode, we obviously only check 1 level of dependencies.
"""
+ if arg_atoms:
+ depth = 0
+ pkg.depth = depth
+ deep = self._dynamic_config.myparams.get("deep", 0)
+ empty = "empty" in self._dynamic_config.myparams
+ recurse = empty or deep is True or depth + 1 <= deep
dep_stack = self._dynamic_config._dep_stack
if "recurse" not in self._dynamic_config.myparams:
return 1
- elif pkg.installed and \
- "deep" not in self._dynamic_config.myparams:
+ elif pkg.installed and not recurse:
dep_stack = self._dynamic_config._ignored_deps
self._frozen_config.spinner.update()
- if arg_atoms:
- depth = 0
- pkg.depth = depth
if not previously_added:
dep_stack.append(pkg)
return 1
# accounted for.
self._select_atoms = self._select_atoms_from_graph
self._select_package = self._select_pkg_from_graph
- already_deep = "deep" in self._dynamic_config.myparams
+ already_deep = self._dynamic_config.myparams.get("deep") is True
if not already_deep:
self._dynamic_config.myparams["deep"] = True
print " "+green("--update")+" ("+green("-u")+" short option)"
print " Updates packages to the best version available, which may not"
print " always be the highest version number due to masking for testing"
- print " and development. This will also update direct dependencies which"
- print " may not be what you want. Package atoms specified on the command"
+ print " and development. Package atoms specified on the command"
print " line are greedy, meaning that unspecific atoms may match multiple"
print " installed versions of slotted packages."
print
print " --debug is great for finding bash syntax errors as providing"
print " very verbose information about the dependency and build process."
print
- print " "+green("--deep")+" ("+green("-D")+" short option)"
+ print " "+green("--deep") + " " + turquoise("[DEPTH]") + \
+ " (" + green("-D") + " short option)"
print " This flag forces emerge to consider the entire dependency tree of"
print " packages, instead of checking only the immediate dependencies of"
print " the packages. As an example, this catches updates in libraries"
"--buildpkg", "--buildpkgonly",
"--changelog", "--columns",
"--complete-graph",
-"--debug", "--deep",
+"--debug",
"--digest",
"--emptytree",
"--fetchonly", "--fetch-all-uri",
"a":"--ask",
"b":"--buildpkg", "B":"--buildpkgonly",
"c":"--clean", "C":"--unmerge",
-"d":"--debug", "D":"--deep",
+"d":"--debug",
"e":"--emptytree",
"f":"--fetchonly", "F":"--fetch-all-uri",
"g":"--getbinpkg", "G":"--getbinpkgonly",
new_args = []
default_arg_opts = {
+ '--deep' : valid_integers,
'--deselect' : ('n',),
'--binpkg-respect-use' : ('n', 'y',),
'--jobs' : valid_integers,
}
short_arg_opts = {
+ 'D' : valid_integers,
'j' : valid_integers,
}
"choices":("y", "n")
},
+ "--deep": {
+
+ "shortopt" : "-D",
+
+ "help" : "Specifies how deep to recurse into dependencies " + \
+ "of packages given as arguments. If no argument is given, " + \
+ "depth is unlimited. Default behavior is to skip " + \
+ "dependencies of installed packages.",
+
+ "action" : "store"
+ },
+
"--deselect": {
"help" : "remove atoms from the world file",
"type" : "choice",
if myoptions.root_deps == "True":
myoptions.root_deps = True
+ if myoptions.deep is not None:
+ deep = None
+ if myoptions.deep == "True":
+ deep = True
+ else:
+ try:
+ deep = int(myoptions.deep)
+ except (OverflowError, ValueError):
+ deep = -1
+
+ if deep is not True and deep < 0:
+ deep = None
+ if not silent:
+ writemsg("!!! Invalid --deep parameter: '%s'\n" % \
+ (myoptions.deep,), noiselevel=-1)
+
+ myoptions.deep = deep
+
if myoptions.jobs:
jobs = None
if myoptions.jobs == "True":