[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mod
From: |
Peter Rosin |
Subject: |
Re: [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mode |
Date: |
Fri, 03 Feb 2012 10:07:01 +0100 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0) Gecko/20111222 Thunderbird/9.0.1 |
Stefano Lattarini skrev 2012-02-03 09:35:
> Hi Peter.
>
> On 02/03/2012 08:58 AM, Peter Rosin wrote:
>> Commit Release-1-7-2b-2-gf03ceab "Cope with DOS filenames in
>> dependencies." inadvertently converted tabs into spaces.
>>
>> * lib/depcomp (dashmstdout): Add a tab character to all sets
>> matching whitespace.
>> ---
>> lib/depcomp | 6 +++---
>> 1 files changed, 3 insertions(+), 3 deletions(-)
>>
>>
>> I know the Tru64 patch to depcomp is out there, and will wait with
>> pushing this one until that one has been processed, but I just wanted
>> to get this out...
>>
> Don't worry about that patch, your objection to how the depcomp.tap
> test is written makes a lot of sense (unfortunately for me), so I now
> think the right fix for bug #10434 will be to change the test case
> instead of the depcomp script.
>
>> Ok for msvc?
>>
> Almost... to avoid similar regressions in the future, I think we
> could introduce a new '$tab' variable and use that instead... and
> then, for extra safety, we might even add a sanity check like:
>
> case "$tab" in *\ *) fatal "\$tab is not a TAB";; esac
>
> early in the script, to ensure $tab is not messed up by editors or
> plain old carelessness.
>
> WDYT?
I'd rather do that in a follow-up, like below, so that the real change
in the above patch isn't hidden in the churn. Ok? No sanity checks
included, but that seems way overkill to me...
Cheers,
Peter
>From 3654caed044041bcfa0f4007c4deb2ed7b582557 Mon Sep 17 00:00:00 2001
From: Peter Rosin <address@hidden>
Date: Fri, 3 Feb 2012 09:56:04 +0100
Subject: [PATCH] depcomp: try to prevent whitespace regressions
Suggested by Stefano Lattarini.
* lib/depcomp: Add $tab and $nl variables and use them
throughout.
---
lib/depcomp | 40 ++++++++++++++++++++--------------------
1 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/lib/depcomp b/lib/depcomp
index f2681b9..9a42897 100755
--- a/lib/depcomp
+++ b/lib/depcomp
@@ -1,7 +1,7 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2012-02-03.07; # UTC
+scriptversion=2012-02-03.08; # UTC
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
# 2011, 2012 Free Software Foundation, Inc.
@@ -57,6 +57,12 @@ EOF
;;
esac
+# A tabulation character.
+tab=' '
+# A newline character.
+nl='
+'
+
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
@@ -162,8 +168,7 @@ gcc)
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
- tr ' ' '
-' < "$tmpdepfile" |
+ tr ' ' $nl < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well. hp depmode also adds that space, but also prefixes the VPATH
@@ -205,16 +210,13 @@ sgi)
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
+ tr ' ' $nl < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> "$depfile"
+ tr $nl ' ' >> "$depfile"
echo >> "$depfile"
# The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
+ tr ' ' $nl < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> "$depfile"
else
@@ -264,7 +266,7 @@ aix)
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ sed -e 's,^.*\.[a-z]*:['$tab' ]*,,' -e 's,$,:,' < "$tmpdepfile" >>
"$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
@@ -408,7 +410,7 @@ tru64)
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ sed -e 's,^.*\.[a-z]*:['$tab' ]*,,' -e 's,$,:,' < "$tmpdepfile" >>
"$depfile"
else
echo "#dummy" > "$depfile"
fi
@@ -443,11 +445,11 @@ msvc7)
p
}' | $cygpath_u | sort -u | sed -n '
s/ /\\ /g
-s/\(.*\)/ \1 \\/p
+s/\(.*\)/'$tab'\1 \\/p
s/.\(.*\) \\/\1:/
H
$ {
- s/.*/ /
+ s/.*/'$tab'/
G
p
}' >> "$depfile"
@@ -502,11 +504,10 @@ dashmstdout)
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
"$@" $dashmflag |
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ sed 's:^['$tab' ]*[^:'$tab' ][^:][^:]*\:['$tab' ]*:'"$object"'\: :' >
"$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
+ tr ' ' $nl < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
@@ -562,8 +563,7 @@ makedepend)
# makedepend may prepend the VPATH from the source file name to the object.
# No need to regex-escape $object, excess matching of '.' is harmless.
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
+ sed '1,2d' "$tmpdepfile" | tr ' ' $nl | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
@@ -652,8 +652,8 @@ msvisualcpp)
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u >
"$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
- sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >>
"$depfile"
- echo " " >> "$depfile"
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'$tab'\1 \\:p' >>
"$depfile"
+ echo "$tab" >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
--
1.7.5.1
- [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mode, Peter Rosin, 2012/02/03
- Re: [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mode, Stefano Lattarini, 2012/02/03
- Re: [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mode,
Peter Rosin <=
- Re: [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mode, Stefano Lattarini, 2012/02/03
- Re: [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mode, Peter Rosin, 2012/02/03
- Re: [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mode, Stefano Lattarini, 2012/02/03
- Re: [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mode, Peter Rosin, 2012/02/03
- Re: [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mode, Stefano Lattarini, 2012/02/03
- Re: [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mode, Jim Meyering, 2012/02/03
- Re: [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mode, Peter Rosin, 2012/02/03
- Re: [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mode, Eric Blake, 2012/02/03
- Re: [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mode, Jim Meyering, 2012/02/03
- Re: [PATCH] depcomp: recognize tabs as whitespace in the dashmstdout mode, Peter Rosin, 2012/02/04