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

From: Andrea Corallo <[email-masked]>
Date: Wed, 07 Apr 2021 07:53:50 +0000

Alan Third <[email-masked]> writes:

> 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:

Cool!

> 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.

I think we could prepare BIN_DESTDIR near ELN_DESTDIR so we don't have
to duplicate the sub-make invocation in this target.  I pushed
ce15b23846 that does that.

Please feel free to install a patch with all the other necessary changes
to have it working on MacOS.

Thanks!

  Andrea