Subject: Re: bug#66022: 30.0.50; kmacro overwriting global keybindings

From: Gerd Möllmann <[email-masked]>
Date: Wed, 20 Sep 2023 16:22:24 +0200

On 23-09-20 16:11 , Eli Zaretskii wrote:
>> Date: Wed, 20 Sep 2023 11:57:28 +0200
>> Cc: Eli Zaretskii <[email-masked]>, [email-masked]
>> From: Gerd Möllmann <[email-masked]>
>>
>> Assume I git pull, and emacs-lisp/comp.el is modified in a way that
>> loaddefs gets regenerated and written to disk.  Then do a toplevel
>> gmake.  After that, I see the following:
>>
>> ~/emacs/master/ > ll lisp/loaddefs.el* src/emacs.pdmp
>> lisp/emacs-lisp/comp.*
>> nextstep/Emacs.app/Contents/Resources/lisp/loaddefs*
>> nextstep/Emacs.app/Contents/MacOS/libexec/Emacs.pdmp
>> -rw-r--r--  1 gerd  staff   1.4M Sep 20 11:31 lisp/loaddefs.el
>> -rw-r--r--  1 gerd  staff   1.4M Sep 20 11:32 lisp/loaddefs.elc
>> -rw-r--r--  2 gerd  staff    16M Sep 20 11:32 src/emacs.pdmp
>> -rw-r--r--  1 gerd  staff   188K Sep 20 11:31 lisp/emacs-lisp/comp.el
>> -rw-r--r--  1 gerd  staff   399K Sep 20 11:32 lisp/emacs-lisp/comp.elc
>> -rw-r--r--  1 gerd  staff   369K Sep 20 10:55
>> nextstep/Emacs.app/Contents/Resources/lisp/loaddefs.el.gz
>> -rw-r--r--  1 gerd  staff   1.4M Sep 20 10:56
>> nextstep/Emacs.app/Contents/Resources/lisp/loaddefs.elc
>> -rw-r--r--  1 gerd  staff    16M Sep 20 11:32
>> nextstep/Emacs.app/Contents/MacOS/libexec/Emacs.pdmp
>>
>> Note that the pdmp in Emacs.app is new, while the loaddefs under
>> nextstep are old.
>>
>> After gmake install:
>>
>> ~/emacs/master/ > ll lisp/loaddefs.el* src/emacs.pdmp
>> lisp/emacs-lisp/comp.*
>> nextstep/Emacs.app/Contents/Resources/lisp/loaddefs*
>> nextstep/Emacs.app/Contents/MacOS/libexec/Emacs.pdmp
>> -rw-r--r--  1 gerd  staff   1.4M Sep 20 11:31 lisp/loaddefs.el
>> -rw-r--r--  1 gerd  staff   1.4M Sep 20 11:32 lisp/loaddefs.elc
>> -rw-r--r--  2 gerd  staff    16M Sep 20 11:32 src/emacs.pdmp
>> -rw-r--r--  1 gerd  staff   188K Sep 20 11:31 lisp/emacs-lisp/comp.el
>> -rw-r--r--  1 gerd  staff   399K Sep 20 11:32 lisp/emacs-lisp/comp.elc
>> -rw-r--r--  1 gerd  staff   369K Sep 20 11:31
>> nextstep/Emacs.app/Contents/Resources/lisp/loaddefs.el.gz
>> -rw-r--r--  1 gerd  staff   1.4M Sep 20 11:32
>> nextstep/Emacs.app/Contents/Resources/lisp/loaddefs.elc
>> -rw-r--r--  1 gerd  staff    16M Sep 20 11:32
>> nextstep/Emacs.app/Contents/MacOS/libexec/Emacs.pdmp
>>
>> Means to me that if I just gmake, expecting that could not possibly
>> change Emacs.app, I'm quite mistaken.  Instead, I now have an
>> inconsistent Emacs.app.
>>
>> Does that make sense?
>>
>> Has someone maybe an idea why the pdmp gets installed so early?
> 
> You are saying that building Emacs in the source tree somehow updates
> the .pdmp file in the _installation_ tree?  That's got to be
> macOS-specific, because that should never happen.  The installation
> tree is modified only by "make install".

Yup it is.  The installation is done in src/nextstep/Emacs.app/. 
Emacs.app is a macOS bundle that can then be copied/moved to where the 
user wants, for example to /Applications.

> 
> Any idea which place in the Makefile's or in loadup.el does that?

I think nextstep/Makefile.in contains

# FIXME: Don't install the dump file into the app bundle when
# self-contained install is disabled.
${ns_applibexecdir}/Emacs.pdmp: ${ns_appdir} ${ns_check_file} 
../src/emacs${EXEEXT}.pdmp
	${MKDIR_P} ${ns_applibexecdir}
	cp -f ../src/emacs${EXEEXT}.pdmp $@

and the "all" target has that the pdmp as a dependency.

I have no idea though what the comment means, or if the cp if necessary 
for something.