Subject: bug#13199: Cleanly rebuild once != cleanly rebuild twice

From: Kelly Dean <[email-masked]>
Date: Sun, 16 Dec 2012 03:52:30 -0800 (PST)

With the Emacs 24.2 source code and GNU Make 3.81, "make clean; make" does not give the same result as "make clean; make; make clean; make". This failure is user unfriendly; it leads to confusion when you're trying to debug, if you only do "make clean; make" after editing the source code.

Steps to reproduce the bug/feature:

tar Jxf emacs-24.2.tar.xz
cd emacs-24.2
./configure  --with-jpeg=no --with-png=no --with-gif=no --with-tiff=no
mv lisp/help-macro.el lisp/help-macro.el.old
sed -e "s/\*Help\*/\*Foo\*/g" < lisp/help-macro.el.old > lisp/help-macro.el
make clean; make; make clean; make
src/emacs -Q
C-h C-h

You get "*Foo*", as expected. But now

C-g C-x C-c
sed -e "s/\*Help\*/\*Bar\*/g" < lisp/help-macro.el.old > lisp/help-macro.el
make clean; make
src/emacs -Q
C-h C-h

You still get "*Foo*", but you should get "*Bar*". Now again do

C-g C-x C-c
make clean; make
src/emacs -Q
C-h C-h

Now you get "*Bar*" as expected.