summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/main.py
diff options
context:
space:
mode:
authorSebastian Luther <SebastianLuther@gmx.de>2011-10-16 20:43:17 +0200
committerZac Medico <zmedico@gentoo.org>2011-10-16 11:58:12 -0700
commit2d78dcda11d753a54f821c7fb482b4bb3b511d0b (patch)
tree19ae2e382ef4e47f772f54f7b47008170a98dd82 /pym/_emerge/main.py
parentc9e22480dbb1767cc0e59eee5c1c3b358da7a078 (diff)
downloadportage-2d78dcda11d753a54f821c7fb482b4bb3b511d0b.tar.gz
portage-2d78dcda11d753a54f821c7fb482b4bb3b511d0b.tar.bz2
portage-2d78dcda11d753a54f821c7fb482b4bb3b511d0b.zip
Add --binpkg-exclude option
This options disables creation of binary packages, no matter what enabled it in the first place. See bug 386903.
Diffstat (limited to 'pym/_emerge/main.py')
-rw-r--r--pym/_emerge/main.py28
1 files changed, 24 insertions, 4 deletions
diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py
index ed07c092d..26f37667a 100644
--- a/pym/_emerge/main.py
+++ b/pym/_emerge/main.py
@@ -556,19 +556,25 @@ def insert_optional_args(args):
return new_args
-def _find_bad_atoms(atoms):
+def _find_bad_atoms(atoms, less_strict=False):
+ """
+ Declares all atoms as invalid that have an operator,
+ a use dependency, a blocker or a repo spec.
+ It accepts atoms with wildcards.
+ In less_strict mode it accepts operators and repo specs.
+ """
bad_atoms = []
for x in ' '.join(atoms).split():
bad_atom = False
try:
- atom = portage.dep.Atom(x, allow_wildcard=True)
+ atom = portage.dep.Atom(x, allow_wildcard=True, allow_repo=less_strict)
except portage.exception.InvalidAtom:
try:
- atom = portage.dep.Atom("*/"+x, allow_wildcard=True)
+ atom = portage.dep.Atom("*/"+x, allow_wildcard=True, allow_repo=less_strict)
except portage.exception.InvalidAtom:
bad_atom = True
- if bad_atom or atom.operator or atom.blocker or atom.use:
+ if bad_atom or (atom.operator and not less_strict) or atom.blocker or atom.use:
bad_atoms.append(x)
return bad_atoms
@@ -644,6 +650,14 @@ def parse_opts(tmpcmdline, silent=False):
"choices" : true_y_or_n
},
+ "--buildpkg-exclude": {
+ "help" :"A space separated list of package atoms for which " + \
+ "no binary packages should be built. This option overrides all " + \
+ "possible ways to enable building of binary packages.",
+
+ "action" : "append"
+ },
+
"--config-root": {
"help":"specify the location for portage configuration files",
"action":"store"
@@ -967,6 +981,12 @@ def parse_opts(tmpcmdline, silent=False):
else:
myoptions.buildpkg = None
+ if myoptions.buildpkg_exclude:
+ bad_atoms = _find_bad_atoms(myoptions.buildpkg_exclude, less_strict=True)
+ if bad_atoms and not silent:
+ parser.error("Invalid Atom(s) in --buildpkg-exclude parameter: '%s'\n" % \
+ (",".join(bad_atoms),))
+
if myoptions.changed_use is not False:
myoptions.reinstall = "changed-use"
myoptions.changed_use = False