| Index: pym/_emerge/main.py
|
| diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py
|
| index 40266943f00172499cbbf915c598802d0aeb1c7a..2f370b6f8b799557257ff70b54a820506010460e 100644
|
| --- a/pym/_emerge/main.py
|
| +++ b/pym/_emerge/main.py
|
| @@ -511,6 +511,23 @@ def insert_optional_args(args):
|
|
|
| return new_args
|
|
|
| +def _find_bad_atoms(atoms):
|
| + bad_atoms = []
|
| + for x in ' '.join(atoms).split():
|
| + bad_atom = False
|
| + try:
|
| + atom = portage.dep.Atom(x, allow_wildcard=True)
|
| + except portage.exception.InvalidAtom:
|
| + try:
|
| + atom = portage.dep.Atom("*/"+x, allow_wildcard=True)
|
| + except portage.exception.InvalidAtom:
|
| + bad_atom = True
|
| +
|
| + if bad_atom or atom.operator or atom.blocker or atom.use:
|
| + bad_atoms.append(x)
|
| + return bad_atoms
|
| +
|
| +
|
| def parse_opts(tmpcmdline, silent=False):
|
| myaction=None
|
| myopts = {}
|
| @@ -640,6 +657,14 @@ def parse_opts(tmpcmdline, silent=False):
|
| "choices":["changed-use"]
|
| },
|
|
|
| + "--reinstall-atoms": {
|
| + "help" :"A space separated list of package names or slot atoms. " + \
|
| + "Emerge will treat matching packages as if they are not " + \
|
| + "installed, and reinstall them if necessary. Implies --deep.",
|
| +
|
| + "action" : "append",
|
| + },
|
| +
|
| "--binpkg-respect-use": {
|
| "help" : "discard binary packages if their use flags \
|
| don't match the current configuration",
|
| @@ -661,6 +686,13 @@ def parse_opts(tmpcmdline, silent=False):
|
| "choices" : true_y_or_n
|
| },
|
|
|
| + "--nousepkg-atoms": {
|
| + "help" :"A space separated list of package names or slot atoms. " + \
|
| + "Emerge will ignore matching binary packages. ",
|
| +
|
| + "action" : "append",
|
| + },
|
| +
|
| "--package-moves": {
|
| "help" : "perform package moves when necessary",
|
| "type" : "choice",
|
| @@ -711,6 +743,13 @@ def parse_opts(tmpcmdline, silent=False):
|
| "choices" : true_y_or_n
|
| },
|
|
|
| + "--useoldpkg-atoms": {
|
| + "help" :"A space separated list of package names or slot atoms. " + \
|
| + "Emerge will prefer matching binary packages over newer unbuilt packages. ",
|
| +
|
| + "action" : "append",
|
| + },
|
| +
|
| "--usepkg": {
|
| "shortopt" : "-k",
|
| "help" : "use binary packages",
|
| @@ -794,32 +833,28 @@ def parse_opts(tmpcmdline, silent=False):
|
| myoptions.depclean_lib_check = True
|
|
|
| if myoptions.exclude:
|
| - exclude = []
|
| - bad_atoms = []
|
| - for x in ' '.join(myoptions.exclude).split():
|
| - bad_atom = False
|
| - try:
|
| - atom = portage.dep.Atom(x, allow_wildcard=True)
|
| - except portage.exception.InvalidAtom:
|
| - try:
|
| - atom = portage.dep.Atom("*/"+x, allow_wildcard=True)
|
| - except portage.exception.InvalidAtom:
|
| - bad_atom = True
|
| -
|
| - if bad_atom:
|
| - bad_atoms.append(x)
|
| - else:
|
| - if atom.operator or atom.blocker or atom.use:
|
| - bad_atoms.append(x)
|
| - else:
|
| - exclude.append(atom)
|
| -
|
| + bad_atoms = _find_bad_atoms(myoptions.exclude)
|
| if bad_atoms and not silent:
|
| parser.error("Invalid Atom(s) in --exclude parameter: '%s' (only package names and slot atoms (with wildcards) allowed)\n" % \
|
| (",".join(bad_atoms),))
|
|
|
| - if myoptions.fail_clean in true_y:
|
| - myoptions.fail_clean = True
|
| + if myoptions.reinstall_atoms:
|
| + bad_atoms = _find_bad_atoms(myoptions.reinstall_atoms)
|
| + if bad_atoms and not silent:
|
| + parser.error("Invalid Atom(s) in --reinstall-atoms parameter: '%s' (only package names and slot atoms (with wildcards) allowed)\n" % \
|
| + (",".join(bad_atoms),))
|
| +
|
| + if myoptions.nousepkg_atoms:
|
| + bad_atoms = _find_bad_atoms(myoptions.nousepkg_atoms)
|
| + if bad_atoms and not silent:
|
| + parser.error("Invalid Atom(s) in --nousepkg-atoms parameter: '%s' (only package names and slot atoms (with wildcards) allowed)\n" % \
|
| + (",".join(bad_atoms),))
|
| +
|
| + if myoptions.useoldpkg_atoms:
|
| + bad_atoms = _find_bad_atoms(myoptions.useoldpkg_atoms)
|
| + if bad_atoms and not silent:
|
| + parser.error("Invalid Atom(s) in --useoldpkg-atoms parameter: '%s' (only package names and slot atoms (with wildcards) allowed)\n" % \
|
| + (",".join(bad_atoms),))
|
|
|
| if myoptions.getbinpkg in true_y:
|
| myoptions.getbinpkg = True
|
|
|