On Mon, Jul 25, 2022, 8:28 PM Lynn Winebarger <owinebar@gmail.com> wrote:
On Mon, Jul 25, 2022, 12:54 PM Stefan Monnier <monnier@iro.umontreal.ca> wrote:
> Otherwise, I was able to resolve the various issues (including some
> extensive surgery on vc/ediff-X files to stamp out the circular loading).
> I am going to have to do a real bootstrap to avoid the "incoherent eln"
> error, though, and somehow force native compilation for all the libraries
> loaded in the dump (that are not on the compiler's "forbidden" list,
> anyway).

BTW, I don't really understand why you're bumping into circularity issue
with things like ediff.  I do know it has circularity issues, but they
only affect compilation, AFAIK.

The C code for the require form hits the panic button if it has to load something when dump-mode is non-nil.  Something similar happens when an autoload is invoked during dump-mode, but I haven't looked for the exact piece of code that does it so I don't know if it's C or lisp.

So, I'm wondering: do you include "the world" in both dumps (the
first, done to build `src/bootstrap-emacs.pdmp`, and the second to
build the final `src/emacs.pdmp`) or do you include it only
in the second dump?

I initially was trying to just run the second one, but I got the "incoherent ELN" error.  So I set up a new build directory, did a fresh configure followed by "make bootstrap".  I had to further refine the site-load.el to explicitly load everything required at compile time, wrap every instance of any expression requiring a generated file with "unless dump-mode" (since in dump-mode the site-load or loadup file must load all the required files to work anyway).  That fails when site-load starts loading bits of cc-mode for the second dump since none of the files in site-load are even byte-compiled with the bootstrap emacs.  So I generated a list of .elc targets from site-load (same method used for lisp.mk), then put together a hacked Makefile in BUILD/lisp that ran the bootstrap-emacs executable with the suffix rule from the standard Makefile.  That also failed with the incoherent ELN message.  Then I noticed the rule that uses the "byte-compile-refresh-preloaded" function, so I'm trying that in the Makefile.  However, I'm still waiting for the preloaded files to finish native compiling.  

I'd be happy to follow the 3 step path to dumping, but I thought the whole "no redumping support" prevented that approach.

Even native compiling using the bootstrap emacs with byte-compile-refresh-preloaded is failing.  I might try redoing the bootstrap, then run the native compiler on the site-load files sequentially. That will take several hours at least, though.

Lynn