Subject: bug#36369: Master doesn't use its pdump

From: Noam Postavsky <[email-masked]>
Date: Sat, 29 Jun 2019 23:38:06 -0400

Richard Stallman <[email-masked]> writes:

>   > > Then I deleted 'alloc.o' and then 'make -k'.
>   > > It loaded up and dumped, writing 'boostrap-emacs.pdmp'.
>   > > Then it loaded up and dumped again, writing 'emacs.pdmp'.
>   > > 
>   > > That was not necessary.  Once should have been enough.
>
>   > It's enough when all the Lisp files are already byte-compiled.  When
>   > some of them aren't, the two dumps are not identical, as the first one
>   > loads the uncompiled Lisp files, the second one loads the compiled
>   > ones.
>
> Maybe make dependencies can discriminate that.

The redundant dumping can be annoying indeed; as far as I recall, we
would need to restructure the Makefiles to be non-recursive to handle
the dependencies properly though.  That would be a good thing, but it's
quite a bit of work.

>   > If you don't want to compile Lisp files automatically, I think saying
>   > "make -k emacs.pdmp" should be your new paradigm.
>
> I did not see an emacs.pdmp target.  Is there one?
> If so, where is it?

It's defined with a variable.

src/Makefile.in:370:

    ifeq ($(DUMPING),pdumper)
    bootstrap_pdmp := bootstrap-emacs.pdmp # Keep in sync with loadup.el
    pdmp := emacs.pdmp
    else

src/Makefile.in:583:

    ifeq ($(DUMPING),pdumper)
    $(pdmp): emacs$(EXEEXT)
        LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup --temacs=pdump
        cp -f $@ $(bootstrap_pdmp)
    endif

The unexec dumper runs as part of the emacs target, I'm not really sure
why the pdumper variant is different in that regard.