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

From: Alan Third <[email-masked]>
Date: Tue, 6 Apr 2021 22:33:35 +0100

On Tue, Apr 06, 2021 at 09:22:57PM +0000, Andrea Corallo wrote:
> Alan Third <[email-masked]> writes:
> 
> > On Tue, Apr 06, 2021 at 07:26:16PM +0000, Andrea Corallo wrote:
> >> 
> >> 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/
> >
> > OK, I think I see what's going on. The binary is installed in
> > Emacs.app/Contents/MacOS, but the bindir is
> > Emacs.app/Contents/MacOS/bin, so we're going one level too far up when
> > generating the eln path.
> >
> > "../../Resources/native-lisp/28.0.50-0f05d3d3/preloaded/misc-lang-7cb33d20-db3eb4ae.eln"
> >
> >> 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.
> >
> > I've attached the new bootstrap log in case I'm wrong and you can see
> > something else.
> 
> I think your analysis is correct.
> 
> ATM we form BIN_DESTDIR as '$(DESTDIR)${bindir}/' (Makefile.in:419),
> maybe we should use 'ns_appbindir' to form it?

Yup, that seems to have solved it. I'm doing this:

modified   Makefile.in
@@ -420,8 +420,13 @@ lib lib-src lisp nt:
 dirstate = .git/logs/HEAD
 VCSWITNESS = $(if $(wildcard $(srcdir)/$(dirstate)),$$(srcdir)/../$(dirstate))
 src: Makefile
+ifeq (${ns_self_contained},no)
 	$(MAKE) -C $@ VCSWITNESS='$(VCSWITNESS)' BIN_DESTDIR='$(DESTDIR)${bindir}/' \
 		 ELN_DESTDIR='$(ELN_DESTDIR)' all
+else
+	$(MAKE) -C $@ VCSWITNESS='$(VCSWITNESS)' BIN_DESTDIR='${ns_appbindir}/' \
+		 ELN_DESTDIR='$(ELN_DESTDIR)' all
+endif
 
 blessmail: Makefile src
 	$(MAKE) -C lib-src maybe-blessmail

which works, but I don't know much about makefiles so there may be a
neater way to do it.

-- 
Alan Third