GNU bug report logs - #17354
distclean fails when source is relatively otherplace

Previous Next

Package: automake;

Reported by: Jan Engelhardt <jengelh <at> inai.de>

Date: Sat, 26 Apr 2014 23:50:03 UTC

Severity: normal

Tags: wontfix

Done: Stefano Lattarini <stefano.lattarini <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Stefano Lattarini <stefano.lattarini <at> gmail.com>
To: Jan Engelhardt <jengelh <at> inai.de>, 17354 <at> debbugs.gnu.org
Cc: GNU bug tracker automated control server <control <at> debbugs.gnu.org>
Subject: bug#17354: distclean fails when source is relatively otherplace
Date: Fri, 19 Dec 2014 13:26:10 +0100
tags 17354 wontfix
close 17354
stop

On 04/27/2014 01:48 AM, Jan Engelhardt wrote:
>
> With automake-1.13.4 & automake-1.14, when there is a _SOURCES =
> ../blah.c, make does not properly run because .deps is gone too early.
>
>
> File set:
>
> # Makefile.am
> SUBDIRS = b
> noinst_PROGRAMS = foo
>
> # configure.ac
> AC_INIT([a],[0])
> AM_INIT_AUTOMAKE([foreign subdir-objects])
> AC_PROG_CC
> AC_CONFIG_FILES([Makefile b/Makefile])
> AC_OUTPUT
>
> # foo.c
> int main(void){return 0;}
>
> # b/Makefile.am
> noinst_PROGRAMS = bar
> bar_SOURCES = ../foo.c
>
>
> Observed:
>
> 01:43 wrgstfl:/dev/shm/testcase > make distclean
> Making distclean in b
> make[1]: Entering directory `/dev/shm/testcase/b'
> test -z "bar" || rm -f bar
> rm -f *.o
> rm -f ../*.o
> rm -f *.tab.c
> test -z "" || rm -f
> test . = "." || test -z "" || rm -f
> rm -f ../.deps/.dirstamp
> rm -f ../.dirstamp
> rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
> rm -rf ../.deps
> rm -f Makefile
> make[1]: Leaving directory `/dev/shm/testcase/b'
> make[1]: Entering directory `/dev/shm/testcase'
> Makefile:348: .deps/foo.Po: No such file or directory
> make[1]: *** No rule to make target `.deps/foo.Po'.  Stop.
> make[1]: Leaving directory `/dev/shm/testcase'
> make: *** [distclean-recursive] Error 1
>
>
> Expected:
>
> Don't fail.
>
>
> Additional information:
>
> The problem is also observable without using "..";
> foo_SOURCES = b/foo.c, bar_SOURCES = foo.c
> also yields the same issue that one .deps is gone before the Makefile of
> another directory is executed.
>
I would suggest using non-recursive builds, that solves many issues
this kind by giving make a better and complete view of the project
and its interdependencies.

I *might* end up fixing this bug if I manage to rework the dependency
tracking code to use the '-include' directive (which will require
dropping support for all make implementations not supporting such
directive, but I think that would be a good trade-off), but I'm not
making any promise.  You should keep in mind that non-recursive
builds are discouraged (except the very rare cases where the stuff
in a subdirectory is truly and completely independent from *all*
stuff in any other subdirectory), and we'll no longer actively work
on adding features or fixing bugs involving them.

Regards,
  Stefano




This bug report was last modified 10 years and 160 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.