diff options
Diffstat (limited to 'dev-util/colorgcc/files/colorgcc-1.3.2-gentoo-one.patch')
-rw-r--r-- | dev-util/colorgcc/files/colorgcc-1.3.2-gentoo-one.patch | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/dev-util/colorgcc/files/colorgcc-1.3.2-gentoo-one.patch b/dev-util/colorgcc/files/colorgcc-1.3.2-gentoo-one.patch new file mode 100644 index 000000000000..68a177ba75c7 --- /dev/null +++ b/dev-util/colorgcc/files/colorgcc-1.3.2-gentoo-one.patch @@ -0,0 +1,242 @@ +--- colorgcc.orig 1999-04-29 10:16:08.000000000 -0700 ++++ colorgcc 2003-04-11 16:38:52.000000000 -0700 +@@ -88,16 +88,16 @@ + # + # 1.0.0 Initial Version + ++use strict; ++ + use Term::ANSIColor; + use IPC::Open3; ++use Cwd 'abs_path'; ++ ++my(%nocolor, %colors, %compilerPaths); + + sub initDefaults + { +- $compilerPaths{"gcc"} = "/usr/local/bin/gcc"; +- $compilerPaths{"g++"} = "/usr/local/bin/g++"; +- $compilerPaths{"cc"} = "/usr/bin/cc"; +- $compilerPaths{"c++"} = "/usr/local/bin/c++"; +- + $nocolor{"dumb"} = "true"; + + $colors{"srcColor"} = color("cyan"); +@@ -125,26 +125,26 @@ + next if (m/^\#.*/); # It's a comment. + next if (!m/(.*):\s*(.*)/); # It's not of the form "foo: bar". + +- $option = $1; +- $value = $2; ++ my $option = $1; ++ my $value = $2; + +- if ($option =~ m/cc|c\+\+|gcc|g\+\+/) +- { +- $compilerPaths{$option} = $value; +- } +- elsif ($option eq "nocolor") ++ if ($option eq "nocolor") + { + # The nocolor option lists terminal types, separated by + # spaces, not to do color on. +- foreach $termtype (split(/\s+/, $value)) ++ foreach my $term (split(' ', $value)) + { +- $nocolor{$termtype} = "true"; ++ $nocolor{$term} = 1; + } + } +- else ++ elsif (defined $colors{$option}) + { + $colors{$option} = color($value); + } ++ else ++ { ++ $compilerPaths{$option} = $value; ++ } + } + close(PREFS); + } +@@ -180,41 +180,80 @@ + initDefaults(); + + # Read the configuration file, if there is one. +-$configFile = $ENV{"HOME"} . "/.colorgccrc"; ++my $configFile = $ENV{"HOME"} . "/.colorgccrc"; + if (-f $configFile) + { + loadPreferences($configFile); + } ++elsif (-f '/etc/colorgcc/colorgccrc') ++{ ++ loadPreferences('/etc/colorgcc/colorgccrc'); ++} + + # Figure out which compiler to invoke based on our program name. + $0 =~ m%.*/(.*)$%; +-$progName = $1 || $0; +- +-$compiler = $compilerPaths{$progName} || $compilerPaths{"gcc"}; +- +-# Get the terminal type. +-$terminal = $ENV{"TERM"} || "dumb"; ++my $progName = $1 || $0; ++my $compiler_pid; + +-# If it's in the list of terminal types not to color, or if +-# we're writing to something that's not a tty, don't do color. +-if (! -t STDOUT || $nocolor{$terminal}) ++# If called as "colorgcc", just filter STDIN to STDOUT. ++if ($progName eq 'colorgcc') + { +- exec $compiler, @ARGV +- or die("Couldn't exec"); ++ open(GCCOUT, "<&STDIN"); + } ++else ++{ ++ # See if the user asked for a specific compiler. ++ my $compiler; ++ if (!defined($compiler = $compilerPaths{$progName})) ++ { ++ # Find our wrapper dir on the PATH and tweak the PATH to remove ++ # everything up-to and including our wrapper dir. ++ if ($0 =~ m#(.*)/#) ++ { ++ # We were called with an explicit path, so trim that off the PATH. ++ my $find = $1; ++ $find = abs_path($1) unless $find =~ m#^/#; ++ $ENV{'PATH'} =~ s#.*(^|:)\Q$find\E(:|$)##; ++ } ++ else ++ { ++ my(@dirs) = split(/:/, $ENV{'PATH'}); ++ while (defined($_ = shift @dirs)) ++ { ++ if (-x "$_/$progName") ++ { ++ $ENV{'PATH'} = join(':', @dirs); ++ last; ++ } ++ } ++ } ++ $compiler = $progName; ++ } + +-# Keep the pid of the compiler process so we can get its return +-# code and use that as our return code. +-$compiler_pid = open3('<&STDIN', \*GCCOUT, \*GCCOUT, $compiler, @ARGV); ++ # Get the terminal type. ++ my $terminal = $ENV{"TERM"} || "dumb"; ++ ++ # If it's in the list of terminal types not to color, or if ++ # we're writing to something that's not a tty, don't do color. ++ if (! -t STDOUT || $nocolor{$terminal}) ++ { ++ exec $compiler, @ARGV ++ or die("Couldn't exec"); ++ } ++ ++ # Keep the pid of the compiler process so we can get its return ++ # code and use that as our return code. ++ $compiler_pid = open3('<&STDIN', \*GCCOUT, \*GCCOUT, $compiler, @ARGV); ++} + + # Colorize the output from the compiler. + while(<GCCOUT>) + { +- if (m/^(.*?):([0-9]+):(.*)$/) # filename:lineno:message ++ if (m#^(.+?\.[^:/ ]+):([0-9]+):(.*)$#) # filename:lineno:message + { +- $field1 = $1 || ""; +- $field2 = $2 || ""; +- $field3 = $3 || ""; ++ my $field1 = $1 || ""; ++ my $field2 = $2 || ""; ++ my $field3 = $3 || ""; + + if ($field3 =~ m/\s+warning:.*/) + { +@@ -232,6 +271,10 @@ + } + print("\n"); + } ++ elsif (m/^:.+`.*'$/) # filename:message: ++ { ++ srcscan($_, $colors{"warningMessageColor"}); ++ } + elsif (m/^(.*?):(.+):$/) # filename:message: + { + # No line number, treat as an "introductory" line of text. +@@ -244,11 +287,9 @@ + } + } + +-# Get the return code of the compiler and exit with that. +-waitpid($compiler_pid, 0); +-exit ($? >> 8); +- +- +- +- +- ++if ($compiler_pid) ++{ ++ # Get the return code of the compiler and exit with that. ++ waitpid($compiler_pid, 0); ++ exit ($? >> 8); ++} +--- colorgccrc.orig 1999-04-29 10:16:08.000000000 -0700 ++++ colorgccrc 2003-02-12 17:38:38.000000000 -0800 +@@ -20,12 +20,14 @@ + # For example, srcColor: bold cyan on_yellow + # + +-# Define the paths to the actual location of the various compilers. ++# Only define the paths to the actual location of the various compilers if ++# you need to do something weird. For normal installs, we'll figure out ++# who to call next automatically. + # (Currently, colorgcc only understands these: g++ gcc c++ cc) +-g++: /usr/local/bin/g++ +-gcc: /usr/local/bin/gcc +-c++: /usr/local/bin/c++ +-cc: /usr/bin/cc ++##g++: /usr/bin/g++ ++##gcc: /usr/bin/gcc ++##c++: /usr/bin/c++ ++##cc: /usr/bin/cc + + # Don't do color if our terminal type ($TERM) is one of these. + # (List all terminal types on one line, seperated by whitespace.) +@@ -43,12 +45,10 @@ + + # Warnings + warningFileNameColor: reset +-warningNumberColor: white ++warningNumberColor: blue + warningMessageColor: yellow + + # Errors + errorFileNameColor: reset +-errorNumberColor: white ++errorNumberColor: blue + errorMessageColor: bold red +- +- +--- INSTALL.orig 1999-04-29 10:16:08.000000000 -0700 ++++ INSTALL 2003-04-07 17:12:25.000000000 -0700 +@@ -27,9 +27,9 @@ + When "g++" is invoked, colorgcc is run instead. colorgcc looks at the + program name to figure out which compiler to use. + +-Copy the sample colorgccrc file to $HOME/.colorgccrc and make sure the +-absolute paths for the compilers are correct for your system. +-See the comments in the sample .colorgccrc for more information. ++Modify the file /etc/colorgcc/colorgccrc if you want to change the default ++values for everyone. For individual customizations, copy this file to ++$HOME/.colorgccrc and change that. + + + Note: |