summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-11-24 00:34:17 +0000
committerZac Medico <zmedico@gentoo.org>2008-11-24 00:34:17 +0000
commitea61f3589be3ca08638d0cb548dad746e5ba2dff (patch)
tree7905453522f0a8bee4333ed545ca6c7d321fa432
parent892ece74ccae5681a4b9c2b789c720f2c387c0ff (diff)
downloadportage-ea61f3589be3ca08638d0cb548dad746e5ba2dff.tar.gz
portage-ea61f3589be3ca08638d0cb548dad746e5ba2dff.tar.bz2
portage-ea61f3589be3ca08638d0cb548dad746e5ba2dff.zip
Make emerge detect an invalid profile an bail out for anything except
--help, --info, --sync, and --version actions. When bailing out, suggest to revert back to the previous profile configuration advise the user which actions are allowed with an invalid profile. (trunk r12064:12066) svn path=/main/branches/2.1.6/; revision=12067
-rw-r--r--pym/_emerge/__init__.py22
-rw-r--r--pym/portage/__init__.py2
2 files changed, 23 insertions, 1 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index e73455023..ff24576b2 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -13462,6 +13462,25 @@ def ambiguous_package_name(arg, atoms, root_config, spinner, myopts):
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()
@@ -13482,6 +13501,9 @@ def emerge_main():
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()
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py
index ff40f2f5c..929b82ad2 100644
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@ -1220,7 +1220,7 @@ class config(object):
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):