From: Zac Medico Date: Wed, 5 Dec 2007 00:52:24 +0000 (-0000) Subject: In order to know exactly which atoms/sets should be added to the X-Git-Tag: v2.2_pre1~225 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=bfe248fc1b3dbb05d6ec3dee01ff24485eee03dd;p=portage.git In order to know exactly which atoms/sets should be added to the world file, the depgraph performs set expansion later. It will get confused about where the atoms came from if it's not allowed to expand them itself. svn path=/main/trunk/; revision=8844 --- diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index ee58ff75d..481906a6c 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -6919,43 +6919,50 @@ def emerge_main(): print "emerge: incomplete set configuration, no \"%s\" set defined" % s print " sets defined: %s" % ", ".join(sets) return 1 - newargs = [] - for a in myfiles: - if a in ("system", "world"): - newargs.append(SETPREFIX+a) - else: - newargs.append(a) - myfiles = newargs - del newargs - newargs = [] - for a in myfiles: - if a.startswith(SETPREFIX): - s = a[len(SETPREFIX):] - if s not in sets: - print "emerge: there are no sets to satisfy %s." % \ - colorize("INFORM", s) - return 1 - if myaction in ["unmerge", "prune", "clean", "depclean"] and \ - not sets[s].supportsOperation("unmerge"): - print "emerge: the given set %s does not support unmerge operations" % s - return 1 - if not setconfig.getSetAtoms(s): - print "emerge: '%s' is an empty set" % s - elif myaction != None: - newargs.extend(setconfig.getSetAtoms(s)) + unmerge_actions = ("unmerge", "prune", "clean", "depclean") + # In order to know exactly which atoms/sets should be added to the + # world file, the depgraph performs set expansion later. It will get + # confused about where the atoms came from if it's not allowed to + # expand them itself. + if myaction not in (None,): + newargs = [] + for a in myfiles: + if a in ("system", "world"): + newargs.append(SETPREFIX+a) else: - newargs.append(SETPREFIX+s) - for e in sets[s].errors: - print e - else: - newargs.append(a) - myfiles = newargs - del newargs - # Need to handle empty sets specially, otherwise emerge will react - # with the help message for empty argument lists - if oldargs and not myfiles: - print "emerge: no targets left after set expansion" - return 0 + newargs.append(a) + myfiles = newargs + del newargs + newargs = [] + for a in myfiles: + if a.startswith(SETPREFIX): + s = a[len(SETPREFIX):] + if s not in sets: + print "emerge: there are no sets to satisfy %s." % \ + colorize("INFORM", s) + return 1 + if myaction in unmerge_actions and \ + not sets[s].supportsOperation("unmerge"): + sys.stderr.write("emerge: the given set %s does " + \ + "not support unmerge operations\n" % s) + return 1 + if not setconfig.getSetAtoms(s): + print "emerge: '%s' is an empty set" % s + elif myaction != None: + newargs.extend(setconfig.getSetAtoms(s)) + else: + newargs.append(SETPREFIX+s) + for e in sets[s].errors: + print e + else: + newargs.append(a) + myfiles = newargs + del newargs + # Need to handle empty sets specially, otherwise emerge will react + # with the help message for empty argument lists + if oldargs and not myfiles: + print "emerge: no targets left after set expansion" + return 0 if ("--tree" in myopts) and ("--columns" in myopts): print "emerge: can't specify both of \"--tree\" and \"--columns\"."