print "!!! The short ebuild name \"%s\" is ambiguous. Please specify" % arg
print "!!! one of the above fully-qualified ebuild names instead.\n"
+def profile_check(trees, myaction, myopts):
+ if myaction in ("info", "sync"):
+ return os.EX_OK
+ elif "--version" in myopts or "--help" in myopts:
+ return os.EX_OK
+ for root, root_trees in trees.iteritems():
+ if root_trees["root_config"].settings.profiles:
+ continue
+ # generate some profile related warning messages
+ validate_ebuild_environment(trees)
+ msg = "If you have just changed your profile configuration, you " + \
+ "should revert back to the previous configuration. Due to " + \
+ "your current profile being invalid, allowed actions are " + \
+ "limited to --help, --info, --sync, and --version."
+ writemsg_level("".join("!!! %s\n" % l for l in textwrap.wrap(msg, 70)),
+ level=logging.ERROR, noiselevel=-1)
+ return 1
+ return os.EX_OK
+
def emerge_main():
global portage # NFC why this is necessary now - genone
portage._disable_legacy_globals()
os.umask(022)
settings, trees, mtimedb = load_emerge_config()
portdb = trees[settings["ROOT"]]["porttree"].dbapi
+ rval = profile_check(trees, myaction, myopts)
+ if rval != os.EX_OK:
+ return rval
if portage._global_updates(trees, mtimedb["updates"]):
mtimedb.commit()
writemsg("!!! ParseError: %s\n" % str(e), noiselevel=-1)
del e
self.profiles = []
- if local_config:
+ if local_config and self.profiles:
custom_prof = os.path.join(
config_root, CUSTOM_PROFILE_PATH.lstrip(os.path.sep))
if os.path.exists(custom_prof):