For bug #144380, disable color at emerge startup and then enable it only when it...
authorZac Medico <zmedico@gentoo.org>
Sat, 13 Jan 2007 02:54:55 +0000 (02:54 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 13 Jan 2007 02:54:55 +0000 (02:54 -0000)
svn path=/main/trunk/; revision=5625

bin/emerge

index 408a44a51a13486a6640ffbf44e1e1969bc1371e..d73368b51673d8b93a58f37c0875e0b08ac77a01 100755 (executable)
@@ -4951,6 +4951,9 @@ def adjust_config(myopts, settings):
        settings["PORTAGE_DEBUG"] = str(PORTAGE_DEBUG)
        settings.backup_changes("PORTAGE_DEBUG")
 
+       if settings.get("NOCOLOR") not in ("yes","true"):
+               output.havecolor = 1
+
        """The explicit --color < y | n > option overrides the NOCOLOR environment
        variable and stdout auto-detection."""
        if "--color" in myopts:
@@ -4961,12 +4964,15 @@ def adjust_config(myopts, settings):
                        output.havecolor = 0
                        settings["NOCOLOR"] = "true"
                settings.backup_changes("NOCOLOR")
-       elif not sys.stdout.isatty():
+       elif not sys.stdout.isatty() and settings.get("NOCOLOR") != "no":
                output.havecolor = 0
                settings["NOCOLOR"] = "true"
                settings.backup_changes("NOCOLOR")
 
 def emerge_main():
+       # Disable color until we're sure that it should be enabled (after
+       # EMERGE_DEFAULT_OPTS has been parsed).
+       output.havecolor = 0
        # This first pass is just for options that need to be known as early as
        # possible, such as --config-root.  They will be parsed again later,
        # together with EMERGE_DEFAULT_OPTS (which may vary depending on the
@@ -4998,19 +5004,6 @@ def emerge_main():
 
        xterm_titles = "notitles" not in settings.features
 
-       """Disable color as early as possible via NOCOLOR and stdout
-       auto-detection.  This initial setting may later be overridden via the
-       --color < yes | no > option."""
-       if settings.get("NOCOLOR","").lower() in ("yes","true"):
-               nocolor()
-       elif (not sys.stdout.isatty()) and \
-               settings.get("NOCOLOR","").lower() != "no":
-               # revdep-rebuild exports NOCOLOR=false, so for now, don't allow
-               # NOCOLOR=false to override the isatty() check.  This can be fixed
-               # in revdep-rebuild by using the --nocolor option when appropriate
-               # instead of exporting NOCOLOR.
-               nocolor()
-
        tmpcmdline = []
        if "--ignore-default-opts" not in sys.argv:
                tmpcmdline.extend(settings["EMERGE_DEFAULT_OPTS"].split())