summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrea Corallo <akrl@sdf.org>2020-09-21 21:07:04 +0200
committerAndrea Corallo <akrl@sdf.org>2020-09-22 14:43:21 +0200
commit4a50f541447eddefcca3ebc6bedb110ac0041f90 (patch)
tree1484460a0deb75d332088b24fb69ccbdf415ef63 /src
parent89a2e79b7d9fa9dc640951bbb3cb0d78dbfbc310 (diff)
downloademacs-4a50f541447eddefcca3ebc6bedb110ac0041f90.tar.gz
emacs-4a50f541447eddefcca3ebc6bedb110ac0041f90.tar.bz2
emacs-4a50f541447eddefcca3ebc6bedb110ac0041f90.zip
* Fix MacOS Emacs.app installation (bug#43532)
* src/comp.c (Fcomp_el_to_eln_filename): Adapt the filename hashing algorithm to allow for producing a MacOS self-contained Emacs.app.
Diffstat (limited to 'src')
-rw-r--r--src/comp.c30
1 files changed, 21 insertions, 9 deletions
diff --git a/src/comp.c b/src/comp.c
index 15d85d30fcb..63a58be264c 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -4054,18 +4054,30 @@ If BASE-DIR is nil use the first entry in `comp-eln-load-path'. */)
if (NILP (loadsearch_re_list))
{
- Lisp_Object loadsearch_list =
- Fcons (build_string (PATH_DUMPLOADSEARCH),
- Fcons (build_string (PATH_LOADSEARCH), Qnil));
- FOR_EACH_TAIL (loadsearch_list)
- loadsearch_re_list =
- Fcons (Fregexp_quote (XCAR (loadsearch_list)), loadsearch_re_list);
+ Lisp_Object sys_re;
+#ifdef __APPLE__
+ /* On MacOS we relax the match on PATH_LOADSEARCH making
+ everything before ".app/" a wildcard. This to obtain a
+ self-contained Emacs.app (bug#43532). */
+ char *c;
+ if ((c = strstr (PATH_LOADSEARCH, ".app/")))
+ sys_re =
+ concat2 (build_string ("\\`[[:ascii:]]+"),
+ Fregexp_quote (build_string (c)));
+ else
+ sys_re = Fregexp_quote (build_string (PATH_LOADSEARCH));
+#else
+ sys_re = Fregexp_quote (build_string (PATH_LOADSEARCH));
+#endif
+ loadsearch_re_list =
+ list2 (sys_re, Fregexp_quote (build_string (PATH_DUMPLOADSEARCH)));
}
- Lisp_Object loadsearch_res = loadsearch_re_list;
- FOR_EACH_TAIL (loadsearch_res)
+
+ Lisp_Object lds_re_tail = loadsearch_re_list;
+ FOR_EACH_TAIL (lds_re_tail)
{
Lisp_Object match_idx =
- Fstring_match (XCAR (loadsearch_res), filename, Qnil);
+ Fstring_match (XCAR (lds_re_tail), filename, Qnil);
if (EQ (match_idx, make_fixnum (0)))
{
filename =