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

From: Stefano Lattarini <[email-masked]>
Date: Thu, 30 May 2013 10:44:29 +0200

On 05/30/2013 09:28 AM, Peter Rosin wrote:
> 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
>
Or even "depcmp: avoid trailing backslash in depfile for depmode=msvc7",
maybe?

> 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"
>    ;;
>  
ACK, with either your original subject line or with the one I suggested
(as you prefer).

Thanks,
  Stefano