Subject: Re: bug#2151: 23.0.90; Building the 23.0.90 pretest recompiles Lisp files

From: Eli Zaretskii <[email-masked]>
Date: Sat, 28 Feb 2009 12:41:15 +0200

> From: Stefan Monnier <[email-masked]>
> Cc: [email-masked]
> Date: Fri, 27 Feb 2009 23:48:51 -0500
> 
> I am not interested in adding hacks specifically to speed up building
> from the tarball.

Thanks a lot for your kind words about my repeated attempts to find an
agreeable solution of this problem.

> I just installed the patch that prevents recompiling
> all the .elc files just because the src/bootstrap-emacs isn't present.

Well, it doesn't seem to work.  Here's what I did to test it (on a
GNU/Linux machine):

  . unpack emacs-23.0.91 pretest tarball
  . replace the top-level Makefile.in with the one from today's CVS
  . verify by `diff' that Makefile.in indeed has your changes
  . ./configure --without-x && make

Excerpts from the resulting build session are below (the omitted parts
are marked with "[...]"); they still show that many Lisp files are
recompiled, after building bootstrap-emacs.

Did I perhaps need to copy more files from CVS?

Also note this error message:

  /bin/sh: line 6: cd: src: No such file or directory

It probably means that something else is wrong with your changes.

-----------------------------------------------------------
Script started on Sat Feb 28 05:03:12 2009
manpath: warning: $MANPATH set, ignoring /etc/manpath.config
eliz@fencepost:~/emacs.cvs/pretest/emacs-23.0.91$./configure --without-x
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu

[...]

Configured for `x86_64-unknown-linux-gnu'.

  Where should the build process find the source code?    /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91
  What operating system and machine description files should Emacs use?
        `s/gnu-linux.h' and `m/amdx86-64.h'
  What compiler should emacs be built with?               gcc -g -O2 -Wno-pointer-sign 
  Should Emacs use the GNU version of malloc?             yes
      (Using Doug Lea's new malloc from the GNU C Library.)
  Should Emacs use a relocating allocator for buffers?    yes
  Should Emacs use mmap(2) for buffer allocation?         no
  What window system should Emacs use?                    none
  What toolkit should Emacs use?                          none
  Where do we find X Windows header files?                NONE
  Where do we find X Windows libraries?                   NONE
  Does Emacs use -lXaw3d?                                 no
  Does Emacs use -lXpm?                                   no
  Does Emacs use -ljpeg?                                  no
  Does Emacs use -ltiff?                                  no
  Does Emacs use a gif library?                           no 
  Does Emacs use -lpng?                                   no
  Does Emacs use -lrsvg-2?                                no
  Does Emacs use -lgpm?                                   yes
  Does Emacs use -ldbus?                                  no
  Does Emacs use -lfreetype?                              no
  Does Emacs use -lm17n-flt?                              no
  Does Emacs use -lotf?                                   no
  Does Emacs use -lxft?                                   no
  Does Emacs use toolkit scroll bars?                     no

configure: creating ./config.status
config.status: creating Makefile
config.status: creating lib-src/Makefile.c
config.status: creating oldXMenu/Makefile
config.status: creating doc/emacs/Makefile
config.status: creating doc/misc/Makefile
config.status: creating doc/lispintro/Makefile
config.status: creating doc/lispref/Makefile
config.status: creating src/Makefile.c
config.status: creating lwlib/Makefile
config.status: creating lisp/Makefile
config.status: creating leim/Makefile
config.status: creating src/config.h
config.status: executing default commands
creating src/epaths.h
creating lib-src/Makefile
creating src/Makefile
eliz@fencepost:~/emacs.cvs/pretest/emacs-23.0.91$ make
cd lib-src; make all                            \
	  CC='gcc' CFLAGS='-g -O2 -Wno-pointer-sign ' CPPFLAGS='-D_BSD_SOURCE  ' \
	  LDFLAGS='-Wl,-znocombreloc' MAKE='make'
make[1]: Entering directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lib-src'

[...]

gcc -D_BSD_SOURCE -DHAVE_CONFIG_H -I. -I../src -I/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lib-src -I/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lib-src/../src -Wl,-znocombreloc -D_BSD_SOURCE   -g -O2 -Wno-pointer-sign  -DVERSION="\"23.0.91\"" /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lib-src/ebrowse.c   -o ebrowse
make[1]: Leaving directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lib-src'
boot=bootstrap-emacs;                         \
	if [ ! -x "src/$boot" ]; then                                     \
	    cd src; make all                                    \
	      CC='gcc' CFLAGS='-g -O2 -Wno-pointer-sign ' CPPFLAGS='-D_BSD_SOURCE  '         \
	      LDFLAGS='-Wl,-znocombreloc' MAKE='make' BOOTSTRAPEMACS="$boot"; \
	fi;                                                                \
	cd src; make all                            \
	  CC='gcc' CFLAGS='-g -O2 -Wno-pointer-sign ' CPPFLAGS='-D_BSD_SOURCE  ' \
	  LDFLAGS='-Wl,-znocombreloc' MAKE='make' BOOTSTRAPEMACS=""
make[1]: Entering directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/src'
gcc -c -D_BSD_SOURCE   -Demacs -DHAVE_CONFIG_H  -I. -I/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/src -D_BSD_SOURCE    -g -O2 -Wno-pointer-sign  pre-crt0.c
touch stamp-oldxmenu
gcc -c -D_BSD_SOURCE   -Demacs -DHAVE_CONFIG_H  -I. -I/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/src -D_BSD_SOURCE    -g -O2 -Wno-pointer-sign  dispnew.c

[...]

gcc -nostdlib `./prefix-args -Xlinker  -z nocombreloc` -Wl,-znocombreloc -o temacs pre-crt0.o /usr/lib64/crt1.o /usr/lib64/crti.o dispnew.o frame.o scroll.o xdisp.o menu.o  window.o charset.o coding.o category.o ccl.o character.o chartab.o cm.o term.o terminal.o xfaces.o    emacs.o keyboard.o macros.o keymap.o sysdep.o buffer.o filelock.o insdel.o marker.o minibuf.o fileio.o dired.o filemode.o cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o alloc.o data.o doc.o editfns.o callint.o eval.o floatfns.o fns.o font.o print.o lread.o syntax.o unexelf.o bytecode.o process.o callproc.o region-cache.o sound.o atimer.o doprnt.o strftime.o intervals.o textprop.o composite.o md5.o     terminfo.o lastfile.o   vm-limit.o         -lgpm -lncurses   -lm -lgcc -lc -lgcc /usr/lib64/crtn.o 
cd ../lisp; make -w update-subdirs
make[2]: Entering directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
wd=/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp; subdirs=`(cd $wd; find . -type d -print)`; for file in $subdirs; do case $file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* ) ;; *) wins="$wins $wd/$file" ;; esac; done; \
	for file in $wins; do \
	   /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/../update-subdirs $file; \
	done;
make[2]: Leaving directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
`/bin/pwd`/temacs --batch --load loadup bootstrap
Loading loadup.el (source)...
Using load-path (/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/emacs-lisp /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/language /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/international /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/textmodes)
Loading emacs-lisp/byte-run...
Loading emacs-lisp/backquote...
Loading subr...
Loading version.el (source)...

[...]

Finding pointers to doc strings...
Finding pointers to doc strings...done
Dumping under the name emacs
101634 pure bytes used
mv -f emacs bootstrap-emacs
cd ../lisp; make -w compile-first EMACS=../src/bootstrap-emacs
make[2]: Entering directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
make[2]: Nothing to be done for `compile-first'.
make[2]: Leaving directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
cd ../lisp; make -w autoloads EMACS=../src/bootstrap-emacs
make[2]: Entering directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
chmod +w /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/ps-print.el /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/emulation/tpu-edt.el \
	  /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/emacs-lisp/cl-loaddefs.el
wd=/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp; subdirs=`(cd $wd; find . -type d -print)`; for file in $subdirs; do case $file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* | */obsolete | */term ) ;; *) wins="$wins $wd/$file" ;; esac; done; \
	echo Directories: $wins; \
	EMACSLOADPATH=/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp LC_ALL=C ../src/bootstrap-emacs -batch --no-site-file --multibyte -l autoload --eval '(setq generated-autoload-file "/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/loaddefs.el")' -f batch-update-autoloads $wins
Directories: /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/. /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./url /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./textmodes /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./progmodes /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./play /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./org /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./nxml /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./net /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./mh-e /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./mail /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./language /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./international /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./eshell /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./emulation /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./emacs-lisp /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/./calendar /home/e/eliz/emacs.cvs/pretest/emacs-23.0
Saving file /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/loaddefs.el...
Wrote /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/loaddefs.el
make[2]: Leaving directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
make[2]: Entering directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
Compiling /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/src/../lisp/abbrev.el
Wrote /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/abbrev.elc
make[2]: Leaving directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
make[2]: Entering directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
Compiling /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/src/../lisp/buff-menu.el
Wrote /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/buff-menu.elc
make[2]: Leaving directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'

[...]

make[2]: Entering directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
Compiling ../lisp/term/ns-win.el
Wrote /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/term/ns-win.elc
make[2]: Leaving directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
rm -f ../etc/DOC
../lib-src/make-docfile -d /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/src dosfns.o msdos.o xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o fontset.o nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o w32.o w32console.o w32fns.o w32heap.o w32inevt.o w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o  dispnew.o frame.o scroll.o xdisp.o menu.o  window.o charset.o coding.o category.o ccl.o character.o chartab.o cm.o term.o terminal.o xfaces.o    emacs.o keyboard.o macros.o keymap.o sysdep.o buffer.o filelock.o insdel.o marker.o minibuf.o fileio.o dired.o filemode.o cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o alloc.o data.o doc.o editfns.o callint.o eval.o floatfns.o fns.o font.o print.o lread.o syntax.o unexelf.o bytecode.o process.o callproc.o region-cache.o sound.o atimer.o doprnt.o strftime.o intervals.o textprop.o composite.o md5.o     > ../etc/DOC
../lib-src/make-docfile -a ../etc/DOC -d /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/src ../lisp/mouse.elc ../lisp/select.elc ../lisp/scroll-bar.elc ../lisp/ls-lisp.elc ../lisp/dos-fns.elc ../lisp/w32-fns.elc ../lisp/dos-w32.elc ../lisp/disp-table.elc ../lisp/dos-vars.elc ../lisp/tooltip.elc ../lisp/image.elc ../lisp/fringe.elc ../lisp/dnd.elc ../lisp/mwheel.elc ../lisp/tool-bar.elc ../lisp/x-dnd.elc ../lisp/international/ccl.elc ../lisp/international/fontset.elc ../lisp/mouse.elc ../lisp/term/x-win.elc ../lisp/term/pc-win.elc ../lisp/term/ns-win.elc ../lisp/loaddefs.el ../lisp/abbrev.elc ../lisp/buff-menu.elc ../lisp/button.elc ../lisp/emacs-lisp/byte-run.elc ../lisp/composite.elc ../lisp/cus-face.elc ../lisp/cus-start.elc ../lisp/custom.elc ../lisp/emacs-lisp/backquote.elc ../lisp/emacs-lisp/lisp-mode.elc ../lisp/emacs-lisp/lisp.elc ../lisp/facemenu.elc ../lisp/faces.elc ../lisp/files.elc ../lisp/emacs-lisp/float-sup.elc ../lisp/format.elc ../lisp/frame.elc ../lisp/help.elc ../lis
LC_ALL=C `/bin/pwd`/temacs -batch -l loadup dump
Loading loadup.el (source)...
Using load-path (/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp)
Loading emacs-lisp/byte-run...
Loading emacs-lisp/backquote...
Loading subr...
Loading version.el (source)...
Loading widget...
[...]
Finding pointers to doc strings...
Finding pointers to doc strings...done
Dumping under the name emacs
1877507 pure bytes used
Adding name emacs-23.0.91.1
ln -f emacs bootstrap-emacs
./emacs -q -batch -f list-load-path-shadows
make[1]: Leaving directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/src'
/bin/sh: line 6: cd: src: No such file or directory
make[1]: Entering directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/src'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/src'
cd lisp; make all                            \
	  CC='gcc' CFLAGS='-g -O2 -Wno-pointer-sign ' CPPFLAGS='-D_BSD_SOURCE  ' \
	  LDFLAGS='-Wl,-znocombreloc' MAKE='make'
make[1]: Entering directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
Compiling /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/mh-e/mh-e.el
Wrote /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/mh-e/mh-e.elc
Compiling /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/mh-e/mh-alias.el
nmh 1.1 installed as MH variant
Wrote /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/mh-e/mh-alias.elc
Compiling /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/mh-e/mh-scan.el
nmh 1.1 installed as MH variant

[...]

Compiling /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/progmodes/cc-subword.el
Wrote /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp/progmodes/cc-subword.elc
make -w compile-last EMACS=../src/emacs
make[2]: Entering directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
make[2]: Leaving directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
make[1]: Leaving directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/lisp'
(export PARALLEL; PARALLEL=0; cd leim; make all  \
	  CC='gcc' CFLAGS='-g -O2 -Wno-pointer-sign ' CPPFLAGS='-D_BSD_SOURCE  ' \
	  LDFLAGS='-Wl,-znocombreloc' MAKE='make')
make[1]: Entering directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/leim'
EMACSLOADPATH=/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/leim/../lisp LC_ALL=C ../src/emacs -batch --no-init-file --no-site-file --multibyte -l /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/leim/../lisp/international/titdic-cnv \
	  -f batch-titdic-convert -dir quail /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/leim/CXTERM-DIC; \
	  echo "changed" > changed.tit
Converting all tit files in the directory /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/leim/CXTERM-DIC

[...]

Saving file /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/leim/leim-list.el...
Wrote /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/leim/leim-list.el
Updating /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/leim/leim-list.el ... done
sed -n '/^[^;]/ p' < /home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/leim/leim-ext.el >> leim-list.el
make[1]: Leaving directory `/srv/data/home/e/eliz/emacs.cvs/pretest/emacs-23.0.91/leim'
eliz@fencepost:~/emacs.cvs/pretest/emacs-23.0.91$ exit

Script done on Sat Feb 28 05:07:47 2009