On Mon, Jul 25, 2022, 12:54 PM Stefan Monnier 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. Lynn