Fix NS self contained eln location (bug#49271)

* Makefile.in:
* configure.ac: Change eln file install location to
Contents/Frameworks.
* src/comp.c (hash_native_abi): Replace dots with underscores in the
eln install location as the macOS code-signing tool won't sign the
files if the parent directories have dots.
This commit is contained in:
Alan Third 2021-06-30 19:58:13 +01:00
parent 995ab9d0a9
commit 1b88404acc
3 changed files with 30 additions and 4 deletions

View file

@ -333,7 +333,7 @@ BIN_DESTDIR='$(DESTDIR)${bindir}/'
ELN_DESTDIR = $(DESTDIR)${libdir}/emacs/${version}/
else
BIN_DESTDIR='${ns_appbindir}/'
ELN_DESTDIR = ${ns_applibdir}/emacs/${version}/
ELN_DESTDIR = ${ns_applibdir}/
endif
all: ${SUBDIR} info

View file

@ -1895,7 +1895,7 @@ if test "${with_ns}" != no; then
ns_appdir=`pwd`/nextstep/Emacs.app
ns_appbindir=${ns_appdir}/Contents/MacOS
ns_applibexecdir=${ns_appdir}/Contents/MacOS/libexec
ns_applibdir=${ns_appdir}/Contents/MacOS/lib
ns_applibdir=${ns_appdir}/Contents/Frameworks
ns_appresdir=${ns_appdir}/Contents/Resources
ns_appsrc=Cocoa/Emacs.base
ns_fontfile=macfont.o
@ -1954,7 +1954,7 @@ fail;
ns_appdir=`pwd`/nextstep/Emacs.app
ns_appbindir=${ns_appdir}
ns_applibexecdir=${ns_appdir}/libexec
ns_applibdir=${ns_appdir}/lib
ns_applibdir=${ns_appdir}/Frameworks
ns_appresdir=${ns_appdir}/Resources
ns_appsrc=GNUstep/Emacs.base
ns_fontfile=nsfont.o

View file

@ -744,8 +744,34 @@ hash_native_abi (void)
Vsystem_configuration_options),
Fmapconcat (intern_c_string ("comp--subr-signature"),
Vcomp_subr_list, build_string (""))));
Lisp_Object version = Vemacs_version;
#ifdef NS_SELF_CONTAINED
/* MacOS self contained app bundles do not like having dots in the
directory names under the Contents/Frameworks directory, so
convert them to underscores. */
version = STRING_MULTIBYTE (Vemacs_version)
? make_uninit_multibyte_string (SCHARS (Vemacs_version),
SBYTES (Vemacs_version))
: make_uninit_string (SBYTES (Vemacs_version));
const unsigned char *from = SDATA (Vemacs_version);
unsigned char *to = SDATA (version);
while (from < SDATA (Vemacs_version) + SBYTES (Vemacs_version))
{
unsigned char c = *from++;
if (c == '.')
c = '_';
*to++ = c;
}
#endif
Vcomp_native_version_dir =
concat3 (Vemacs_version, build_string ("-"), Vcomp_abi_hash);
concat3 (version, build_string ("-"), Vcomp_abi_hash);
}
static void