Subject: Re: bug#47558: 28.0.50; dlopen 'image not found' gccemacs native-lisp macos

From: Andrea Corallo <[email-masked]>
Date: Tue, 06 Apr 2021 19:26:16 +0000

Alan Third <[email-masked]> writes:

> On Tue, Apr 06, 2021 at 02:51:46PM +0000, Andrea Corallo wrote:
>> Alan Third <[email-masked]> writes:
>> 
>> > On Tue, Apr 06, 2021 at 07:56:46AM +0000, Andrea Corallo wrote:
>> >> Alan Third <[email-masked]> writes:
>> >> > emacs:
>> >> > dlopen(/Users/alan/src/emacs/native/nextstep/Emacs.app/Contents/MacOS/../native-lisp/28.0.50-24e3df15/window-0d1b8b93-513ac8ca.eln,
>> >> > 1): image not found
>> >> 
>> >> Hi Alan,
>> >> 
>> >> Okay the value of ELN_DESTDIR is used during dump to inform Emacs where
>> >> the eln will be located (src/Makefile.in:570) so redumping is necessary.
>> >> Have you tried redumping or rebuilding from scratch?
>> >
>> > Yes, I've tried 'make bootstrap' to no avail.
>> 
>> could you share the output of like "make bootstrap V=1"? (go parallel if
>> you like)
>
> Attached.

Okay the log looks good AFAICT.

We are suggesting the eln to go in:
/Users/alan/src/emacs/native/nextstep/Emacs.app/Contents/MacOS/bin/

and the eln in:
/Users/alan/src/emacs/native/nextstep/Emacs.app/Contents/Resources/

For each compilation unit being dumped we modify the filename in a pair
in the form of (rel-filename-from-install-bin
. rel-filename-from-local-bin) in loadup.el:467 so we'll be able to
locate those compilation units when resurecting.

So either we compute wrongly the 'rel-filename-from-install-bin' there
or something goes wrong in pdumper.c:5277 (where we use it to to
identify if Emacs was installed or not).

On this subject I just realized that there we used concat in place of
`expand-file-name' and fixed that with 6568198213.

If this does not help I suggest we apply the attached and re-bootstrap
to see if the 'rel-filename-from-install-bin' we are constructing is
correct.

Thanks!

  Andrea

diff --git a/lisp/loadup.el b/lisp/loadup.el
index 650288f9f8..3331445ff8 100644
--- a/lisp/loadup.el
+++ b/lisp/loadup.el
@@ -475,15 +475,17 @@
                                             eln-dest-dir)))
                    (native-comp-unit-set-file
                     cu
-	            (cons
-                     ;; Relative filename from the installed binary.
-                     (file-relative-name (expand-file-name
-                                          (file-name-nondirectory
-                                           file)
-                                          eln-dest-dir-eff)
-                                         bin-dest-dir)
-                     ;; Relative filename from the built uninstalled binary.
-                     (file-relative-name file invocation-directory)))))
+	            (let ((tmp (cons
+                                ;; Relative filename from the installed binary.
+                                (file-relative-name (expand-file-name
+                                                     (file-name-nondirectory
+                                                      file)
+                                                     eln-dest-dir-eff)
+                                                    bin-dest-dir)
+                                ;; Relative filename from the built uninstalled binary.
+                                (file-relative-name file invocation-directory))))
+                      (print tmp)
+                      tmp))))
 	       h))))
 
 (when (hash-table-p purify-flag)