diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-11-24 00:34:17 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-11-24 00:34:17 +0000 |
commit | ea61f3589be3ca08638d0cb548dad746e5ba2dff (patch) | |
tree | 7905453522f0a8bee4333ed545ca6c7d321fa432 /pym | |
parent | 892ece74ccae5681a4b9c2b789c720f2c387c0ff (diff) | |
download | portage-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
Diffstat (limited to 'pym')
-rw-r--r-- | pym/_emerge/__init__.py | 22 | ||||
-rw-r--r-- | pym/portage/__init__.py | 2 |
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): |