[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Trunk: Build error on FreeBSD
From: |
Wolfgang Jenkner |
Subject: |
Re: Trunk: Build error on FreeBSD |
Date: |
Mon, 17 Sep 2012 15:04:39 +0200 |
User-agent: |
Gnus/5.130006 (Ma Gnus v0.6) Emacs/24.2.50 (berkeley-unix) |
On Sat, Sep 15 2012, Wolfgang Jenkner wrote:
> On Sat, Sep 15 2012, Paul Eggert wrote:
>
>> On Fedora 17, 'gmake bootstrap' does delete src/epaths.h
>> as part of the 'bootstrap-clean' action, but it goes on
>> to recreate it as part of './config.status --recheck'
>
> For autoconf 2.69 (info "(autoconf)config.status Invocation") states
>
> `--recheck'
> Ask `config.status' to update itself and exit (no instantiation).
>
> and (info "(autoconf)Configuration Actions") says that
> AC_CONFIG_COMMANDS is an "instantiating macro".
A patch is at the end, after this rather amusing story:
So, src/epaths.h is created by something else.
Let's begin with the beginning: bootstrap does the following
bootstrap: bootstrap-clean FRC
cd $(srcdir) && { ./autogen.sh || test $$? -eq 101; }
$(MAKE_CONFIG_STATUS)
$(MAKE) $(MFLAGS) info all
When autogen.sh finishes, src/epaths.h has been nuked but config.status
is still there and executable.
The definition of MAKE_CONFIG_STATUS shows that the next step is
./config.status --recheck;
which doesn't recreate src/epaths.h, see above (the --recheck flag was
added in rev. 109962).
At this point, however, the last step has created a new config.status,
which is now newer than Makefile. Makefile contains a rule to update
itself, which has indeed config.status as prerequisite:
MAKEFILE_NAME = Makefile
$(MAKEFILE_NAME): config.status $(srcdir)/src/config.in \
$(srcdir)/Makefile.in $(SUBDIR_MAKEFILES_IN)
./config.status
Now for GNU make, this is exactly, what happens next, i.e.,
config.status runs and finally recreates src/epaths.h.
I think this rule is triggered before anything else because of
(info "(make)Remaking Makefiles"):
To this end, after reading in all makefiles, `make' will
consider each as a goal target and attempt to update it.
For other versions of make the rule is triggered for the lib target.
Wolfgang
Ah, the patch:
=== modified file 'Makefile.in'
--- Makefile.in 2012-09-16 18:49:00 +0000
+++ Makefile.in 2012-09-17 12:51:18 +0000
@@ -358,7 +358,7 @@
MAKEFILE_NAME = Makefile
$(MAKEFILE_NAME): config.status $(srcdir)/src/config.in \
$(srcdir)/Makefile.in $(SUBDIR_MAKEFILES_IN)
- ./config.status
+ MAKE='${MAKE}' ./config.status
# Don't erase these files if make is interrupted while refreshing them.
.PRECIOUS: Makefile config.status
- Trunk: Build error on FreeBSD, Herbert J. Skuhra, 2012/09/15
- Re: Trunk: Build error on FreeBSD, Paul Eggert, 2012/09/15
- Re: Trunk: Build error on FreeBSD, Wolfgang Jenkner, 2012/09/15
- Re: Trunk: Build error on FreeBSD,
Wolfgang Jenkner <=
- Re: Trunk: Build error on FreeBSD, Paul Eggert, 2012/09/17
- Re: Trunk: Build error on FreeBSD, Andreas Schwab, 2012/09/17
- Re: Trunk: Build error on FreeBSD, Paul Eggert, 2012/09/17
- Re: Trunk: Build error on FreeBSD, Andreas Schwab, 2012/09/17
- Re: Trunk: Build error on FreeBSD, Paul Eggert, 2012/09/17
- Re: Trunk: Build error on FreeBSD, Wolfgang Jenkner, 2012/09/18
- Re: Trunk: Build error on FreeBSD, Paul Eggert, 2012/09/22
- Re: Trunk: Build error on FreeBSD, Wolfgang Jenkner, 2012/09/22
- Re: Trunk: Build error on FreeBSD, Paul Eggert, 2012/09/22
- Re: Trunk: Build error on FreeBSD, Wolfgang Jenkner, 2012/09/22