all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Wolfgang Jenkner <wjenkner@inode.at>
To: Paul Eggert <eggert@cs.ucla.edu>
Cc: "Herbert J. Skuhra" <hskuhra@eumx.net>, emacs-devel@gnu.org
Subject: Re: Trunk: Build error on FreeBSD
Date: Mon, 17 Sep 2012 15:04:39 +0200	[thread overview]
Message-ID: <85vcfc94to.fsf@iznogoud.viz> (raw)
In-Reply-To: 85ehm3e9df.fsf@iznogoud.viz

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




  reply	other threads:[~2012-09-17 13:04 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-15  8:44 Trunk: Build error on FreeBSD Herbert J. Skuhra
2012-09-15  9:33 ` Paul Eggert
2012-09-15 12:48   ` Wolfgang Jenkner
2012-09-17 13:04     ` Wolfgang Jenkner [this message]
2012-09-17 21:52       ` Paul Eggert
2012-09-17 22:12         ` Andreas Schwab
2012-09-17 22:37           ` Paul Eggert
2012-09-17 22:42             ` Andreas Schwab
2012-09-17 23:11               ` Paul Eggert
2012-09-18 14:04               ` Wolfgang Jenkner
2012-09-22  7:40                 ` Paul Eggert
2012-09-22 10:25                   ` Wolfgang Jenkner
2012-09-22 11:04                     ` Paul Eggert
2012-09-22 11:17                       ` Wolfgang Jenkner
2012-09-22 14:32                         ` Wolfgang Jenkner
2012-09-22 19:00                           ` Paul Eggert
2012-09-23 11:42                             ` Wolfgang Jenkner
2012-09-23 16:02                               ` Paul Eggert
2012-09-23 20:09                                 ` Wolfgang Jenkner
2012-09-17 22:42         ` Herbert J. Skuhra
2012-09-17 23:23           ` Herbert J. Skuhra
2012-09-18  2:51         ` Stefan Monnier
2012-09-15 20:57   ` Herbert J. Skuhra
2012-09-16  3:42     ` Paul Eggert
2012-09-16 14:39       ` Herbert J. Skuhra
2012-09-16 16:40         ` Paul Eggert
2012-09-17 11:44           ` Herbert J. Skuhra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=85vcfc94to.fsf@iznogoud.viz \
    --to=wjenkner@inode.at \
    --cc=eggert@cs.ucla.edu \
    --cc=emacs-devel@gnu.org \
    --cc=hskuhra@eumx.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.