Rebase to colorgcc-1.4.5 per BZ#1402003.

This commit is contained in:
Martin Cermak 2017-12-06 12:56:56 +01:00
commit fd9a8622df
8 changed files with 36 additions and 448 deletions

37
README
View file

@ -1,37 +0,0 @@
The colorgcc is a perl script written by Jamie Moyers to colorize the
terminal output of C++, CC, CCACHE, G++, GCC so error messages can be
found within longer compiler outputs.
Homepage:
http://schlueters.de/colorgcc.html
Usage:
Call the compiler name with the 'color-' prefix, eg:
color-gcc
color-g++
color-cc
color-c++
That's it. Alternatively you may want to create following handy aliases:
alias gcc='color-gcc'
alias g++='color-g++'
alias cc='color-cc'
alias c++='color-c++'
The default settings can be overridden with ~/.colorgccrc. See the
comments in the packaged sample config file for more information.
Note:
colorgcc will only emit color codes if:
(1) Its STDOUT is a tty and
(2) the value of $TERM is not listed in the "nocolor" option.
If colorgcc colorizes the output, the compiler's STDERR will be combined
with STDOUT. Otherwise, colorgcc just passes the output from the
compiler through without modification.

View file

@ -1,17 +0,0 @@
diff --git a/colorgcc.1.3.2.txt b/colorgcc.1.3.2.txt
index 258ab97..f7c4a1e 100644
--- a/colorgcc.1.3.2.txt
+++ b/colorgcc.1.3.2.txt
@@ -95,6 +95,12 @@ sub initDefaults
$compilerPaths{"color-c++"} = "c++";
$compilerPaths{"color-ccache"} = "ccache";
+ $compilerPaths{"colorgcc"} = "gcc";
+ $compilerPaths{"colorg++"} = "g++";
+ $compilerPaths{"colorcc"} = "cc";
+ $compilerPaths{"colorc++"} = "c++";
+ $compilerPaths{"colorccache"} = "ccache";
+
$nocolor{"dumb"} = "true";
$colors{"srcColor"} = color("cyan");

View file

@ -1,44 +0,0 @@
diff --git a/colorgcc.1.3.2.txt b/colorgcc.1.3.2.txt
index 3cc7899..258ab97 100644
--- a/colorgcc.1.3.2.txt
+++ b/colorgcc.1.3.2.txt
@@ -14,17 +14,13 @@
#
# Usage:
#
-# In a directory that occurs in your PATH _before_ the directory
-# where the compiler lives, create a softlink to colorgcc for
-# each compiler you want to colorize:
+# Call the compiler name with the 'color-' prefix, eg:
+# color-gcc
+# color-g++
+# color-cc
+# color-c++
#
-# g++ -> colorgcc
-# gcc -> colorgcc
-# cc -> colorgcc
-# etc.
-#
-# That's it. When "g++" is invoked, colorgcc is run instead.
-# colorgcc looks at the program name to figure out which compiler to run.
+# That's it.
#
# The default settings can be overridden with ~/.colorgccrc.
# See the comments in the sample .colorgccrc for more information.
@@ -93,10 +89,11 @@ use IPC::Open3;
sub initDefaults
{
- $compilerPaths{"gcc"} = "/usr/bin/gcc";
- $compilerPaths{"g++"} = "/usr/bin/g++";
- $compilerPaths{"cc"} = "/usr/bin/cc";
- $compilerPaths{"c++"} = "/usr/bin/c++";
+ $compilerPaths{"color-gcc"} = "gcc";
+ $compilerPaths{"color-g++"} = "g++";
+ $compilerPaths{"color-cc"} = "cc";
+ $compilerPaths{"color-c++"} = "c++";
+ $compilerPaths{"color-ccache"} = "ccache";
$nocolor{"dumb"} = "true";

23
colorgcc-invocation.patch Normal file
View file

@ -0,0 +1,23 @@
diff --git a/colorgcc.pl b/colorgcc.pl
index 92bb58c..ceb31de 100755
--- a/colorgcc.pl
+++ b/colorgcc.pl
@@ -149,6 +149,18 @@ my($unfinishedQuote, $previousColor);
sub initDefaults
{
+ $compilerPaths{"color-gcc"} = "gcc";
+ $compilerPaths{"color-g++"} = "g++";
+ $compilerPaths{"color-cc"} = "cc";
+ $compilerPaths{"color-c++"} = "c++";
+ $compilerPaths{"color-ccache"} = "ccache";
+
+ $compilerPaths{"colorgcc"} = "gcc";
+ $compilerPaths{"colorg++"} = "g++";
+ $compilerPaths{"colorcc"} = "cc";
+ $compilerPaths{"colorc++"} = "c++";
+ $compilerPaths{"colorccache"} = "ccache";
+
$options{"chainedPath"} = "0";
$nocolor{"dumb"} = "true";

View file

@ -1,254 +0,0 @@
#! /usr/bin/perl -w
#
# colorgcc
#
# Version: 1.3.2
#
# $Id: colorgcc,v 1.10 1999/04/29 17:15:52 jamoyers Exp $
#
# A wrapper to colorize the output from compilers whose messages
# match the "gcc" format.
#
# Requires the ANSIColor module from CPAN.
#
# Usage:
#
# In a directory that occurs in your PATH _before_ the directory
# where the compiler lives, create a softlink to colorgcc for
# each compiler you want to colorize:
#
# g++ -> colorgcc
# gcc -> colorgcc
# cc -> colorgcc
# etc.
#
# That's it. When "g++" is invoked, colorgcc is run instead.
# colorgcc looks at the program name to figure out which compiler to run.
#
# The default settings can be overridden with ~/.colorgccrc.
# See the comments in the sample .colorgccrc for more information.
#
# Note:
#
# colorgcc will only emit color codes if:
#
# (1) Its STDOUT is a tty and
# (2) the value of $TERM is not listed in the "nocolor" option.
#
# If colorgcc colorizes the output, the compiler's STDERR will be
# combined with STDOUT. Otherwise, colorgcc just passes the output from
# the compiler through without modification.
#
# Author: Jamie Moyers <jmoyers@geeks.com>
# Started: April 20, 1999
# Licence: GNU Public License
#
# Credits:
#
# I got the idea for this from a script called "color_cvs":
# color_cvs .03 Adrian Likins <adrian@gimp.org> <adrian@redhat.com>
#
# <seh4@ix.netcom.com> (Scott Harrington)
# Much improved handling of compiler command line arguments.
# exec compiler when not colorizing to preserve STDOUT, STDERR.
# Fixed my STDIN kludge.
#
# <ecarotti@athena.polito.it> (Elias S. G. Carotti)
# Corrected handling of text like -DPACKAGE=\"Package\"
# Spotted return code bug.
#
# <erwin@erwin.andreasen.org> (Erwin S. Andreasen)
# <schurchi@ucsd.edu> (Steve Churchill)
# Return code bug fixes.
#
# <rik@kde.org> (Rik Hemsley)
# Found STDIN bug.
#
# Changes:
#
# 1.3.2 Better handling of command line arguments to compiler.
#
# If we aren't colorizing output, we just exec the compiler which
# preserves the original STDOUT and STDERR.
#
# Removed STDIN kludge. STDIN being passed correctly now.
#
# 1.3.1 Added kludge to copy STDIN to the compiler's STDIN.
#
# 1.3.0 Now correctly returns (I hope) the return code of the compiler
# process as its own.
#
# 1.2.1 Applied patch to handle text similar to -DPACKAGE=\"Package\".
#
# 1.2.0 Added tty check. If STDOUT is not a tty, don't do color.
#
# 1.1.0 Added the "nocolor" option to turn off the color if the terminal type
# ($TERM) is listed.
#
# 1.0.0 Initial Version
use Term::ANSIColor;
use IPC::Open3;
sub initDefaults
{
$compilerPaths{"gcc"} = "/usr/bin/gcc";
$compilerPaths{"g++"} = "/usr/bin/g++";
$compilerPaths{"cc"} = "/usr/bin/cc";
$compilerPaths{"c++"} = "/usr/bin/c++";
$nocolor{"dumb"} = "true";
$colors{"srcColor"} = color("cyan");
$colors{"introColor"} = color("blue");
$colors{"warningFileNameColor"} = color("yellow");
$colors{"warningNumberColor"} = color("yellow");
$colors{"warningMessageColor"} = color("yellow");
$colors{"errorFileNameColor"} = color("bold red");
$colors{"errorNumberColor"} = color("bold red");
$colors{"errorMessageColor"} = color("bold red");
}
sub loadPreferences
{
# Usage: loadPreferences("filename");
my($filename) = @_;
open(PREFS, "<$filename") || return;
while(<PREFS>)
{
next if (m/^\#.*/); # It's a comment.
next if (!m/(.*):\s*(.*)/); # It's not of the form "foo: bar".
$option = $1;
$value = $2;
if ($option =~ m/cc|c\+\+|gcc|g\+\+/)
{
$compilerPaths{$option} = $value;
}
elsif ($option eq "nocolor")
{
# The nocolor option lists terminal types, separated by
# spaces, not to do color on.
foreach $termtype (split(/\s+/, $value))
{
$nocolor{$termtype} = "true";
}
}
else
{
$colors{$option} = color($value);
}
}
close(PREFS);
}
sub srcscan
{
# Usage: srcscan($text, $normalColor)
# $text -- the text to colorize
# $normalColor -- The escape sequence to use for non-source text.
# Looks for text between ` and ', and colors it srcColor.
my($line, $normalColor) = @_;
my($srcon) = color("reset") . $colors{"srcColor"};
my($srcoff) = color("reset") . $normalColor;
$line = $normalColor . $line;
# This substitute replaces `foo' with `AfooB' where A is the escape
# sequence that turns on the the desired source color, and B is the
# escape sequence that returns to $normalColor.
$line =~ s/\`(.*?)\'/\`$srcon$1$srcoff\'/g;
print($line, color("reset"));
}
#
# Main program
#
# Set up default values for colors and compilers.
initDefaults();
# Read the configuration file, if there is one.
$configFile = $ENV{"HOME"} . "/.colorgccrc";
if (-f $configFile)
{
loadPreferences($configFile);
}
# 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";
# 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, '', $compiler, @ARGV);
# Colorize the output from the compiler.
while(<GCCOUT>)
{
if (m/^(.*?):([0-9]+):(.*)$/) # filename:lineno:message
{
$field1 = $1 || "";
$field2 = $2 || "";
$field3 = $3 || "";
if ($field3 =~ m/\s+warning:.*/)
{
# Warning
print($colors{"warningFileNameColor"}, "$field1:", color("reset"));
print($colors{"warningNumberColor"}, "$field2:", color("reset"));
srcscan($field3, $colors{"warningMessageColor"});
}
else
{
# Error
print($colors{"errorFileNameColor"}, "$field1:", color("reset"));
print($colors{"errorNumberColor"}, "$field2:", color("reset"));
srcscan($field3, $colors{"errorMessageColor"});
}
print("\n");
}
elsif (m/^(.*?):(.+):$/) # filename:message:
{
# No line number, treat as an "introductory" line of text.
srcscan($_, $colors{"introColor"});
}
else # Anything else.
{
# Doesn't seem to be a warning or an error. Print normally.
print(color("reset"), $_);
}
}
# Get the return code of the compiler and exit with that.
waitpid($compiler_pid, 0);
exit ($? >> 8);

View file

@ -1,17 +1,13 @@
Summary: Script to colorize the compiler output
Name: colorgcc
Version: 1.3.2
Release: 17%{?dist}
Version: 1.4.5
Release: 1%{?dist}
License: GPL+
Group: Development/Tools
Url: http://schlueters.de/colorgcc.html
Source0: http://schlueters.de/colorgcc.%{version}.txt
Source1: http://schlueters.de/colorgccrc.txt
Source2: README
Source0: https://github.com/colorgcc/colorgcc/archive/%{version}.tar.gz
BuildArch: noarch
Patch0: colorgcc-1.3.2-invocation.patch
Patch1: sampleconfig.patch
Patch2: colorgcc-1.3.2-bz1078180.patch
Patch0: colorgcc-invocation.patch
BuildRequires: perl-generators
Requires: perl-interpreter
@ -20,17 +16,13 @@ Perl script written by Jamie Moyers to colorize the terminal output of C++, CC,
CCACHE, G++, GCC so error messages can be found within longer compiler outputs.
%prep
%setup -q -c -T
cp -p %{SOURCE0} .
cp -p %{SOURCE1} ./colorgccrc.sample
cp -p %{SOURCE2} .
%setup
mv ./colorgccrc.txt ./colorgccrc.sample
%patch0 -p1
%patch1 -p1
%patch2 -p1
%install
mkdir -p $RPM_BUILD_ROOT/%{_bindir}
install -p -m 755 $(basename %{SOURCE0}) $RPM_BUILD_ROOT/%{_bindir}/color-gcc
install -p -m 755 colorgcc.pl $RPM_BUILD_ROOT/%{_bindir}/color-gcc
ln -s %{_bindir}/color-gcc $RPM_BUILD_ROOT/%{_bindir}/color-g++
ln -s %{_bindir}/color-gcc $RPM_BUILD_ROOT/%{_bindir}/color-cc
ln -s %{_bindir}/color-gcc $RPM_BUILD_ROOT/%{_bindir}/color-c++
@ -58,6 +50,9 @@ ln -s %{_bindir}/color-gcc $RPM_BUILD_ROOT/%{_bindir}/colorccache
%doc README colorgccrc.sample
%changelog
* Wed Dec 6 2017 Martin Cermak <mcermak@redhat.com> 1.4.5-1
- Rebase to 1.4.5 per bz1402003.
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.2-17
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
@ -80,10 +75,10 @@ ln -s %{_bindir}/color-gcc $RPM_BUILD_ROOT/%{_bindir}/colorccache
* Fri Apr 11 2014 Martin Cermak <mcermak@redhat.com> 1.3.2-11
- Allow using "color" prefix as well as "color-" prefix (bz1078180)
* Thu Jan 03 2014 Martin Cermak <mcermak@redhat.com> 1.3.2-10
* Fri Jan 03 2014 Martin Cermak <mcermak@redhat.com> 1.3.2-10
- Updated README
* Thu Jan 03 2014 Martin Cermak <mcermak@redhat.com> 1.3.2-9
* Fri Jan 03 2014 Martin Cermak <mcermak@redhat.com> 1.3.2-9
- Renamed and updated config sample
* Thu Jan 02 2014 Martin Cermak <mcermak@redhat.com> 1.3.2-8
@ -114,6 +109,6 @@ ln -s %{_bindir}/color-gcc $RPM_BUILD_ROOT/%{_bindir}/colorccache
- Absolute paths pointing to compiler binaries removed
- Resolves bz700833
* Thu Apr 29 2011 Martin Cermak <mcermak@redhat.com> 1.3.2-1
* Fri Apr 29 2011 Martin Cermak <mcermak@redhat.com> 1.3.2-1
- Packaged for Fedora

View file

@ -1,54 +0,0 @@
#
# colorgcc configuration file
#
# $Id: colorgccrc,v 1.1.1.1 1999/04/25 15:24:03 jamoyers Exp $
#
# This file should be named $HOME/.colorgccrc
#
#
# The following groups of attributes may be combined for a given color:
#
# clear black on_black
# reset red on_red
# bold green on_green
# underline yellow on_yellow
# underscore blue on_blue
# blink magenta on_magenta
# reverse cyan on_cyan
# concealed white on_white
#
# For example, srcColor: bold cyan on_yellow
#
# Define the paths to the actual location of the various compilers.
# (Currently, colorgcc only understands these: g++ gcc c++ 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.)
nocolor: dumb
# Text between ` and ' is usually source code.
srcColor: bold cyan
# Text other than a warning or error.
introColor: reset
# Warnings and errors both have similar formats:
# filename:999:Message
# Each field may be assigned a different color.
# Warnings
warningFileNameColor: reset
warningNumberColor: white
warningMessageColor: yellow
# Errors
errorFileNameColor: reset
errorNumberColor: white
errorMessageColor: bold red

View file

@ -1,24 +0,0 @@
diff --git a/colorgccrc.sample b/colorgccrc.sample
index 5ec5949..8e87f98 100644
--- a/colorgccrc.sample
+++ b/colorgccrc.sample
@@ -20,12 +20,14 @@
# For example, srcColor: bold cyan on_yellow
#
-# Define the paths to the actual location of the various compilers.
+# Define the paths to the actual location of the various compilers. By default
+# colorgcc calls basenames (e.g. 'gcc') so that $PATH setting is important.
# (Currently, colorgcc only understands these: g++ gcc c++ cc)
-g++: /usr/bin/g++
-gcc: /usr/bin/gcc
-c++: /usr/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.)