summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-10-19 03:37:16 +0000
committerZac Medico <zmedico@gentoo.org>2009-10-19 03:37:16 +0000
commit077024f43c3c482b2eb1c70e2e1ba414c9ffcff8 (patch)
treed2d180116e36789bdc65e8f389de70312a79b9b5
parentd47feac9df36d524568f24e291123501117aab13 (diff)
downloadportage-077024f43c3c482b2eb1c70e2e1ba414c9ffcff8.tar.gz
portage-077024f43c3c482b2eb1c70e2e1ba414c9ffcff8.tar.bz2
portage-077024f43c3c482b2eb1c70e2e1ba414c9ffcff8.zip
Add a --use-ebuild-visibility option, for using unbuilt ebuild metadata
in visibility checks for built ebuilds. Thanks to Sebastian Mingramm (few) for reporting the problem and testing the patch. (trunk r14665) svn path=/main/branches/2.1.7/; revision=14685
-rw-r--r--man/emerge.14
-rw-r--r--pym/_emerge/depgraph.py4
-rw-r--r--pym/_emerge/help.py6
-rw-r--r--pym/_emerge/main.py12
4 files changed, 25 insertions, 1 deletions
diff --git a/man/emerge.1 b/man/emerge.1
index e6aaf7bef..8e52b814b 100644
--- a/man/emerge.1
+++ b/man/emerge.1
@@ -494,6 +494,10 @@ Shows the dependency tree for the given target by indenting dependencies.
This is only really useful in combination with \fB\-\-emptytree\fR or
\fB\-\-update\fR and \fB\-\-deep\fR.
.TP
+.BR "\-\-use\-ebuild\-visibility[=n]"
+Use unbuilt ebuild metadata for visibility
+checks on built packages.
+.TP
.BR "\-\-usepkg[=n] " (\fB\-k\fR)
Tells emerge to use binary packages (from $PKGDIR) if they are available, thus
possibly avoiding some time\-consuming compiles. This option is useful for CD
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 2236bff0e..d0151bfab 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -2319,6 +2319,8 @@ class depgraph(object):
reinstall = False
noreplace = "--noreplace" in self._frozen_config.myopts
avoid_update = "--update" not in self._frozen_config.myopts
+ use_ebuild_visibility = self._frozen_config.myopts.get(
+ '--use-ebuild-visibility', 'n') != 'n'
# Behavior of the "selective" parameter depends on
# whether or not a package matches an argument atom.
# If an installed package provides an old-style
@@ -2392,7 +2394,7 @@ class depgraph(object):
# instances (installed or binary).
# If --usepkgonly is enabled, assume that
# the ebuild status should be ignored.
- if usepkgonly:
+ if not use_ebuild_visibility and usepkgonly:
if installed and \
pkgsettings._getMissingKeywords(
pkg.cpv, pkg.metadata):
diff --git a/pym/_emerge/help.py b/pym/_emerge/help.py
index 3f18b5429..bf8a7d526 100644
--- a/pym/_emerge/help.py
+++ b/pym/_emerge/help.py
@@ -535,6 +535,12 @@ def help(myopts, havecolor=1):
print(" a package's dependencies follow the package. Only really useful")
print(" in combination with --emptytree, --update or --deep.")
print()
+ print(" " + green("--use-ebuild-visibility") + "[=%s]" % turquoise("n"))
+ desc = "Use unbuilt ebuild metadata for visibility " + \
+ "checks on built packages."
+ for line in wrap(desc, desc_width):
+ print(desc_indent + line)
+ print()
print(" "+green("--usepkg")+ "[=%s]" % turquoise("n") + " ("+green("-k")+" short option)")
print(" Tell emerge to use binary packages (from $PKGDIR) if they are")
print(" available, thus possibly avoiding some time-consuming compiles.")
diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py
index 5007ecfef..c09eef800 100644
--- a/pym/_emerge/main.py
+++ b/pym/_emerge/main.py
@@ -313,6 +313,7 @@ def insert_optional_args(args):
'--root-deps' : ('rdeps',),
'--select' : ('n',),
'--selective' : ('n',),
+ "--use-ebuild-visibility": ('n',),
'--usepkg' : ('n',),
'--usepkgonly' : ('n',),
}
@@ -550,6 +551,12 @@ def parse_opts(tmpcmdline, silent=False):
"choices" : ("True", "n")
},
+ "--use-ebuild-visibility": {
+ "help" : "use unbuilt ebuild metadata for visibility checks on built packages",
+ "type" : "choice",
+ "choices" : ("True", "n")
+ },
+
"--usepkg": {
"shortopt" : "-k",
"help" : "use binary packages",
@@ -693,6 +700,11 @@ def parse_opts(tmpcmdline, silent=False):
myoptions.load_average = load_average
+ if myoptions.use_ebuild_visibility in ("True",):
+ myoptions.use_ebuild_visibility = True
+ else:
+ myoptions.use_ebuild_visibility = None
+
if myoptions.usepkg in ("True",):
myoptions.usepkg = True
else: