if opts.mode == 'help':
parser.print_help(short=False)
- for arg in args:
+ for arg in args[1:]:
if arg in modes:
if not opts.mode:
opts.mode = arg
break
+ else:
+ parser.error("invalid mode: %s" % arg)
if not opts.mode:
opts.mode = 'full'
from itertools import chain
import portage
from portage.cache.mappings import slot_dict_class
-from portage.dep import paren_reduce, use_reduce, \
+from portage.dep import isvalidatom, paren_reduce, use_reduce, \
paren_normalize, paren_enclose, _slot_re
from portage.const import EPREFIX
from _emerge.Task import Task
getattr(self, "_set_" + k.lower())(k, v)
elif k in self._use_conditional_keys:
try:
- use_reduce(paren_reduce(v), matchall=1)
+ reduced = use_reduce(paren_reduce(v), matchall=1)
except portage.exception.InvalidDependString as e:
self._pkg._invalid_metadata(k + ".syntax", "%s: %s" % (k, e))
+ else:
+ if reduced and k == 'PROVIDE':
+ for x in portage.flatten(reduced):
+ if not isvalidatom(x):
+ self._pkg._invalid_metadata(k + ".syntax",
+ "%s: %s" % (k, x))
def _set_inherited(self, k, v):
if isinstance(v, basestring):
if files and not valid_atoms:
return 1
+ if action == 'unmerge' and '--quiet' not in opts:
+ msg = "This action can remove important packages! " + \
+ "In order to be safer, use " + \
+ "`emerge -pv --depclean <atom>` to check for " + \
+ "reverse dependencies before removing packages."
+ out = portage.output.EOutput()
+ for line in textwrap.wrap(msg, 72):
+ out.ewarn(line)
+
if action in ('clean', 'unmerge') or \
(action == 'prune' and "--nodeps" in opts):
# When given a list of atoms, unmerge them in the order given.
print(colorize("BAD", "\n*** You need to adjust PORTDIR or PORTDIR_OVERLAY to emerge this package.\n"))
return 0, myfavorites
if mykey not in portdb.xmatch(
- "match-visible", portage.dep_getkey(mykey)):
+ "match-visible", portage.cpv_getkey(mykey)):
print(colorize("BAD", "\n*** You are emerging a masked package. It is MUCH better to use"))
print(colorize("BAD", "*** /etc/portage/package.* to accomplish this. See portage(5) man"))
print(colorize("BAD", "*** page for details."))
slotmap[myslot][localtree.dbapi.cpv_counter(mypkg)] = mypkg
for mypkg in vartree.dbapi.cp_list(
- portage.dep_getkey(mymatch[0])):
+ portage.cpv_getkey(mymatch[0])):
myslot = vartree.getslot(mypkg)
if myslot not in slotmap:
slotmap[myslot] = {}
valid keyword."""
myarch = pgroups[0].lstrip("~")
- cp = dep_getkey(mycpv)
+ cp = cpv_getkey(mycpv)
pkgdict = settings.pkeywordsdict.get(cp)
matches = False
if pkgdict:
(fullpkg, self.settings["PORTAGE_CONFIGROOT"]),
noiselevel=-1)
continue
- mykey = dep_getkey(fullpkg)
+ mykey = portage.cpv_getkey(fullpkg)
try:
# invalid tbz2's can hurt things.
#print "cpv_inject("+str(fullpkg)+")"
if others_in_slot is None:
slot = self.vartree.dbapi.aux_get(self.mycpv, ["SLOT"])[0]
slot_matches = self.vartree.dbapi.match(
- "%s:%s" % (dep_getkey(self.mycpv), slot))
+ "%s:%s" % (portage.cpv_getkey(self.mycpv), slot))
others_in_slot = []
for cur_cpv in slot_matches:
if cur_cpv == self.mycpv:
others_in_slot = []
slot = self.vartree.dbapi.aux_get(self.mycpv, ["SLOT"])[0]
slot_matches = self.vartree.dbapi.match(
- "%s:%s" % (dep_getkey(self.mycpv), slot))
+ "%s:%s" % (portage.cpv_getkey(self.mycpv), slot))
for cur_cpv in slot_matches:
if cur_cpv == self.mycpv:
continue
# Fall back to legacy code for backward compatibility.
warnings.warn(_("%s is deprecated, use %s instead") % \
('portage.dep.dep_getcpv()', 'portage.dep.Atom.cpv'),
- DeprecationWarning)
+ DeprecationWarning, stacklevel=2)
mydep_orig = mydep
if mydep:
mydep = remove_slot(mydep)
else:
warnings.warn(_("invalid input to %s: '%s', use %s instead") % \
('portage.dep.dep_getkey()', mydep, 'portage.cpv_getkey()'),
- DeprecationWarning)
+ DeprecationWarning, stacklevel=2)
return atom.cp
# Fall back to legacy code for backward compatibility.
warnings.warn(_("%s is deprecated, use %s instead") % \
('portage.dep.dep_getkey()', 'portage.dep.Atom.cp'),
- DeprecationWarning)
+ DeprecationWarning, stacklevel=2)
mydep = dep_getcpv(mydep)
if mydep and isspecific(mydep):
mysplit = catpkgsplit(mydep)