[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Current CVS doesn't bootstrap

From: Luc Teirlinck
Subject: Re: Current CVS doesn't bootstrap
Date: Sun, 7 Nov 2004 11:43:41 -0600 (CST)

Eli Zaretskii wrote:

   > We either have to document in INSTALL.CVS that you have to do `make
   > maintainer-clean' before `make bootstrap' or we have to make sure
   > that `make bootstrap' removes the .elc files automatically, as it
   > used to do.

   I don't think this is the right solution.  First, either
   maintainer-clean or removing *.elc files causes the next bootstrap to
   run much longer, so we should avoid that as much as we could.
   Ideally, "make maintainer-clean" should be used only if "make
   bootstrap" fails (and that is something that we should add to
   INSTALL.CVS _right_now_).

Most of the time the problems caused by omitting `make maintainer-clean'
are not that bootstrapping fails, but that various bugs occur while
running the bootstrapped Emacs.  Usually, people have not the slightest
idea that these bugs are caused by failure to run `make maintainer-clean'.
I remember having seen many examples of fake bug reports caused by this.

I have a 1.7 dual Xeon.  That was a pretty fast machine when I bought
it three years ago, but today, just about any computer I see
advertised is faster and you can easily get something twice as fast.
On my machine, the entire:

make maintainer-clean
make bootstrap

takes less than 15 minutes.  Omitting the `make maintainer-clean'
probably saves about 7 of those 15 minutes and (to me) that is not
worth worrying about the potential bugs it introduces.  It are 7
minutes of my computer's time, not of my time.  I noticed on several
sites that many people are _trying_ to do the above procedure, but are
using `make-distclean', mistakenly believing that it will do what
`make maintainer-clean' does.

I realize that on older machines, and especially on operating systems
that can only run one process at a time, the situation may be very

I propose, for now, the following patch to INSTALL.CVS.  Andreas'
proposed change would eliminate one of the three problems listed in
that patch, but not the two others.  I do not know whether that list
is exhaustive.  (I would guess not).

If the last added paragraph would seem to long or technical, it could
be replaced by one line saying: "`make distclean' is not a valid
substitute for `make maintainer-clean'".

===File ~/INSTALL.CVS-diff==================================
*** INSTALL.CVS 02 Apr 2004 12:04:32 -0600      1.3
--- INSTALL.CVS 07 Nov 2004 10:44:55 -0600      
*** 11,19 ****
  The bootstrap process makes sure all necessary files are rebuilt
  before it builds the final Emacs binary.
  Normally, it is not necessary to use "make bootstrap" after every CVS
! update.  Unless there are problems, we suggest the following
! procedure:
    $ ./configure
    $ make
--- 11,23 ----
  The bootstrap process makes sure all necessary files are rebuilt
  before it builds the final Emacs binary.
+ The best way to proceed after a CVS update depends on how fast or busy
+ your computer is, whether your operating system can run more than one
+ job at a time and on how badly you want to avoid potential bugs.
  Normally, it is not necessary to use "make bootstrap" after every CVS
! update.  Thus, if you have a slow computer, or if you can only run one
! process at a time, we suggest the following procedure:
    $ ./configure
    $ make
*** 39,44 ****
--- 43,73 ----
  If either of above procedures fails, try "make bootstrap".
+ If this still fails, do:
+ make maintainer-clean
+ ./configure
+ make bootstrap
+ You may also want to do this if you report bugs that other people can
+ not reproduce.  In fact, if you have a reasonably fast computer that
+ can run more than one process at a time you may always want to do the
+ above straight away, as it is the only way to be totally sure that
+ your Emacs is completely up to date.  However, `make maintainer-clean'
+ can slow down `make bootstrap' considerably on slower computers.
+ `make maintainer-clean' removes all .elc files, so that the subsequent
+ `make bootstrap' will recompile them.  Note that just doing `make
+ distclean' does not do this.  Even without prior `make maintainer-clean',
+ `make bootstrap' will automatically recompile all files whose .elc
+ file is newer than their .el files.  But this does not prevent all
+ problems.  For instance, problems arise when a file requires an out of
+ date file that has not been recompiled yet, when changes to byte
+ compiling are made, when the file that should be loaded is actually
+ older than the wrong file and similar situations.  All C files are
+ automatically recompiled by all procedures listed above, so there is
+ no need to worry about them.
  Users of non-Posix systems (MS-Windows etc.) should run the
  platform-specific configuration scripts (nt/configure.bat, config.bat,
  etc.) before "make bootstrap" or "make"; the rest of the procedure is

reply via email to

[Prev in Thread] Current Thread [Next in Thread]