Subject: bug#14501: dependency generation FAIL in t/subobj11a.sh

From: Peter Rosin <[email-masked]>
Date: Thu, 30 May 2013 09:28:53 +0200

On 2013-05-29 11:23, Stefano Lattarini wrote:
> On 05/29/2013 09:48 AM, Peter Rosin wrote:
>> On 2013-05-29 09:41, Peter Rosin wrote:
>>> Hi!
>>>
>>> On Automake master (baf8a1c22acce0908), t/subobj11a.sh fails
>>> on MSYS/MSVC (depmode=msvc7msys), like this:
>>>
>>> + make quux
>>> src/.deps/foo.Po:1: *** target pattern contains no `%'.  Stop.
>>>
>>>
>>> It appears that the generated foo.Po is broken. Adding a
>>> 	cat "$depdir"/foo.Po
>>> just before the $MAKE quux invocation reveals that the originally
>>> generated foo.Po has this single line content:
>>>
>>> src/foo.obj : \
>>>
>>> Notice the trailing backslash.
>>>
> And I assume this, by itself, doesn't cause any problem to make,
> correct?

Not that I have seen, no.  But it feels fishy all the same.

>>> When the testcase then adds a
>>> line of its own, the trailing backslash makes it blow up.
>>
>> I forgot to mention that adding an empty line before the other
>> added line, e.g. with
>>
>> echo >> "$depdir"/foo.Po
>>
>> works around the problem and makes the test pass.
>>
> I think we should go this way, yes.  After all, albeit the trailing
> '\' in the .Po file looks strange, it's not causing any problem in
> practice, and it's only our hacky editing of said .Po that is
> triggering the failure.  So let's fix this editing and live happy.
> 
> Any patch that does so (and adds brief a comment explaining why we
> need the extra 'echo') can be considered pre-approved.

So, I think the below is a better fix.  Ok for micro?

Cheers,
Peter

>From 2131bd330a167d37274ee9b179d3885e090d0839 Mon Sep 17 00:00:00 2001
From: Peter Rosin <[email-masked]>
Date: Thu, 30 May 2013 09:26:45 +0200
Subject: [PATCH] depcomp: make sure the depfile ends nicely for depmode=msvc7

When compiling a file without any dependencies (no #includes), the
msvc7 depmode (and consequently msvc7msys) generates a depfile
Makefile fragment with the last line ending with a backslash. This
is less robust than needed.

Fixes automake bug#14501.

* lib/depcomp (msvc7): Finish off the depfile Makefile fragment with
an empty line.
(scriptversion): Update.

Signed-off-by: Peter Rosin <[email-masked]>
---
 lib/depcomp |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/lib/depcomp b/lib/depcomp
index 06b0882..4ebd5b3 100755
--- a/lib/depcomp
+++ b/lib/depcomp
@@ -1,7 +1,7 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2012-10-18.11; # UTC
+scriptversion=2013-05-30.07; # UTC
 
 # Copyright (C) 1999-2013 Free Software Foundation, Inc.
 
@@ -552,6 +552,7 @@ $ {
   G
   p
 }' >> "$depfile"
+  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
   rm -f "$tmpdepfile"
   ;;
 
-- 
1.7.9