Subject: bug#46790: 28.0.50; make install with native-comp branch

From: Thierry Volpiatto <[email-masked]>
Date: Sat, 24 Apr 2021 16:20:41 +0000

Eli Zaretskii <[email-masked]> writes:

>> From: Thierry Volpiatto <[email-masked]>
>> Cc: [email-masked], [email-masked], [email-masked]
>> Date: Sat, 24 Apr 2021 15:22:38 +0000
>> 
>> I rebuilded emacs starting at b064ddd3f60 and trying to copy a file
>> with dired-async, it fails with error in process buffer "*emacs*" with:
>> 
>> emacs:
>> /usr/local/sbin/emacs-28.0.50/../native-lisp/28.0.50-2f134e58/preloaded/window-0d1b8b93-581f9fcd.eln:
>> cannot open shared object file: No such file or directory
>
> That's too fast.  Let's make one step back.  Before you copy the file
> with dired-async, you start the interactive Emacs session, right?

Yes from PATH with emacs which is a symlink in /usr/local/bin pointing
to /usr/local/sbin/emacs-28.0.50/emacs-28.0.50.

And yes emacs starts fine like this. And if I start it from 
/usr/local/sbin/emacs-28.0.50/emacs-28.0.50 with ./emacs it fails to
start with always the same error:

emacs: /usr/local/sbin/emacs-28.0.50/../native-lisp/28.0.50-2f134e58/preloaded/window-0d1b8b93-581f9fcd.eln: cannot open shared object file: No such file or directory

I also don't understand why emacs start from /usr/local/bin/emacs (the
symlink) but not directly from the true directory
/usr/local/sbin/emacs-28.0.50/emacs-28.0.50 with ./emacs.

> Or do you start dired-async in batch mode directly from the shell
> prompt?

No.

>> Then I do the symlink (here from /usr/local/sbin/ directory):
>> 
>> sudo ln -s /usr/local/lib/emacs/28.0.50/native-lisp/ .
>> 
>> And now I can copy a file from dired-async with no error even without
>> restarting emacs.
>
> That's understandable with the code that was on the branch back then.
> But the code have changed a lot (to support Emacs invocation via
> symlinks), and it changed in a way that should have worked for you
> even without the symlink to native-lisp/.  So what happens with the
> branch HEAD if you start Emacs as "emacs -Q" when there's no symlink
> in /usr/local/sbin/ to native-lisp/? does it start or does it crash or
> does it display some error message and fails to start?

Yes it starts.
But then fails with dired-async with and without the native-lisp/ symlink.

>> If you want to reproduce you can bypass dired-async
>> and use something like this much simpler which avoid possible errors
>> from something else and need no configuration:
>> 
>>     (async-start
>>      (lambda ()
>>        (copy-file "~/.emacs.d/init.el" "~/tmp/")))
>> 
>> you should have now a buffer "*emacs*" with same contents as above.
>
> This is a sexp you evaluate in a running Emacs session, right?

Yes.

> So how did that running Emacs session start successfully if you say
> that you needed the symlink to native-lisp/ ?

As said above it starts fine from /usr/local/bin but fails from
/usr/local/sbin/emacs-28.0.50/emacs-28.0.50 and running ./emacs.

> I'm sorry to ask so many questions, but I'm still in the dark wrt what
> exactly do you do to reproduce the problem and what happens when you
> do that.

No problems.

-- 
Thierry