Index: emerge =================================================================== --- emerge (revision 4311) +++ emerge (working copy) @@ -40,6 +40,8 @@ import portage_locks import portage_exception from portage_data import secpass +from portage_const import SET_PATH +from portage_sets import FileList if not hasattr(__builtins__, "set"): from sets import Set as set @@ -194,7 +196,8 @@ "--newuse", "--nocolor", "--nodeps", "--noreplace", "--nospinner", "--oneshot", -"--onlydeps", "--pretend", +"--onlydeps", "--package-set", +"--pretend", "--quiet", "--resume", "--searchdesc", "--selective", "--skipfirst", "--skip-first", @@ -357,6 +360,8 @@ sub=[] if "--update" in myopts or myaction in ("system", "world"): add.extend(["selective","empty"]) + if "--package-set" in myopts: + add.extend(["selective"]) if "--emptytree" in myopts: add.extend(["empty"]) sub.extend(["selective"]) @@ -1208,6 +1213,28 @@ retlist.append(y) return retlist + def setCreate( self, set_id ): + """ Checks dependencies on non-system non-world sets """ + + packagelist = FileList( SET_PATH + os.path.sep + set_id ) + missing_atoms = [] + for pkg in packagelist.items: + print pkg + try: + if not self.select_dep( + self.target_root, pkg, raise_on_missing=True): + print "\n\n!!! Problem resolving dependencies for", mydep + return 0 + except ValueError: + missing_atoms.append(pkg) + if missing_atoms: + print "\n" + colorize("BAD", "!!!") + \ + " Ebuilds for the following packages are either all" + print colorize("BAD", "!!!") + " masked or don't exist:" + print " ".join(missing_atoms) + "\n" + + return 1 + def xcreate(self,mode="system"): world_problems = False if mode=="system": @@ -3409,7 +3436,16 @@ myparams = create_depgraph_params(myopts, myaction) mydepgraph = depgraph(settings, trees, myopts, myparams, spinner) - if myaction in ["system","world"]: + if "--package-set" in myopts: + sets = myfiles + if not ("--quiet" in myopts): + print "Calculating",myaction,"dependencies ", + sys.stdout.flush() + unfulfilled_sets = [p_set for p_set in sets if not mydepgraph.setCreate(p_set)] + if unfulfilled_sets: + print "!!! Depgraph creation failed." + sys.exit(1) + elif myaction in ["system","world"]: if not ("--quiet" in myopts): print "Calculating",myaction,"dependencies ", sys.stdout.flush()