Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
Martin Cermak
fa3e6611ed Updated sources after the rebase to colorgcc-1.4.5. 2017-12-08 15:41:24 +01:00
Martin Cermak
84b37ab683 Rebase to colorgcc-1.4.5. 2017-12-08 15:37:37 +01:00
9 changed files with 80 additions and 410 deletions

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,14 @@
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
Patch1: readme-fedora.patch
BuildRequires: perl-generators
Requires: perl-interpreter
@ -20,17 +17,14 @@ 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++
@ -42,6 +36,11 @@ ln -s %{_bindir}/color-gcc $RPM_BUILD_ROOT/%{_bindir}/colorcc
ln -s %{_bindir}/color-gcc $RPM_BUILD_ROOT/%{_bindir}/colorc++
ln -s %{_bindir}/color-gcc $RPM_BUILD_ROOT/%{_bindir}/colorccache
install -dm 755 $RPM_BUILD_ROOT%{_libdir}/colorgcc
for n in cc gcc g++ c++ ; do
ln -s %{_bindir}/color-gcc $RPM_BUILD_ROOT%{_libdir}/colorgcc/$n
done
%files
%defattr(-,root,root,-)
%{_bindir}/color-gcc
@ -55,9 +54,18 @@ ln -s %{_bindir}/color-gcc $RPM_BUILD_ROOT/%{_bindir}/colorccache
%{_bindir}/colorcc
%{_bindir}/colorc++
%{_bindir}/colorccache
%dir %{_libdir}/colorgcc
%{_libdir}/colorgcc/*
%doc README colorgccrc.sample
%changelog
* Fri Dec 8 2017 Martin Cermak <mcermak@redhat.com> 1.4.5-1
- Rebase to 1.4.5 per bz1402003
- Provide convenience symlinks per bz1402003#c10
- Update README
* 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 +88,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 +122,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

31
readme-fedora.patch Normal file
View file

@ -0,0 +1,31 @@
diff --git a/README b/README
index 2f38386..b5b978f 100644
--- a/README
+++ b/README
@@ -48,6 +48,26 @@ 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.
+Fedora note:
+
+Here is how to use colorgcc along with ccache on a Fedora system under
+a non-root user. Install both colorgcc and ccache. The ccache
+modifies user $PATH via it's /etc/profile.d/ccache* scripts.
+Now do the following:
+
+ $ export PATH="/usr/lib/colorgcc:$PATH"
+ $ export CCACHE_PATH="/usr/bin"
+
+Now add entries like the following to your ~/.colorgccrc file:
+
+ g++: /usr/lib64/ccache/g++
+ gcc: /usr/lib64/ccache/gcc
+ c++: /usr/lib64/ccache/g++
+ cc: /usr/lib64/ccache/cc
+
+You should be all set.
+
+
Author: Jamie Moyers <jmoyers@geeks.com>
Started: April 20, 1999
Licence: GNU Public License

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.)

View file

@ -0,0 +1 @@
SHA512 (1.4.5.tar.gz) = 4125ada9b65b6387c2c259e2347236b3b18f7cdbf06ae0bb0212474a11354be6d463fbc4d239c2eb666c8246fc20277e06c8272fdee6dd4f60caa66164bcc1cf