From: Eli Zaretskii Date: Fri, 25 Dec 2015 11:23:17 +0000 (+0200) Subject: Fix bootstrap broken by changes related to OS X file-name encoding X-Git-Tag: emacs-25.0.90~400 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=94a3606243d3923ac457aeff33f3ce82b65ef6cd;p=emacs.git Fix bootstrap broken by changes related to OS X file-name encoding * lisp/international/ucs-normalize.el (eval-when-compile): Make sure char-code-property-alist includes elements that allow access to 'decomposition' and 'canonical-combining-class' Unicode properties, as compiling ucs-normalize.el requires that. * lisp/loadup.el (featurep 'ns): Load ucs-normalize and ns-win only of charprop.el was already loaded. * src/Makefile.in ($(lispsource)/international/ucs-normalize.elc): New order-only dependency. --- diff --git a/lisp/international/ucs-normalize.el b/lisp/international/ucs-normalize.el index 6f2fb2856da..de3c54534bd 100644 --- a/lisp/international/ucs-normalize.el +++ b/lisp/international/ucs-normalize.el @@ -176,6 +176,13 @@ (setq decomposition-pair-to-composition nil) (defvar non-starter-decompositions nil) (setq non-starter-decompositions nil) + ;; This file needs to access these 2 Unicode properties, but when we + ;; compile it during bootstrap, charprop.el was not built yet, and + ;; therefore is not yet loaded into bootstrap-emacs, so + ;; char-code-property-alist is nil, and get-char-code-property + ;; always returns nil, something the code here doesn't like. + (define-char-code-property 'decomposition "uni-decomposition.el") + (define-char-code-property 'canonical-combining-class "uni-combining.el") (let ((char 0) ccc decomposition) (mapc (lambda (start-end) diff --git a/lisp/loadup.el b/lisp/loadup.el index dda433e4eaf..a58d04223ea 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -276,8 +276,12 @@ (if (featurep 'ns) (progn (load "term/common-win") - (load "international/ucs-normalize") - (load "term/ns-win"))) + ;; Don't load ucs-normalize.el unless uni-*.el files were + ;; already produced, because it needs uni-*.el files that might + ;; not be built early enough during bootstrap. + (when (load-history-filename-element "charprop\\.el") + (load "international/ucs-normalize") + (load "term/ns-win")))) (if (fboundp 'x-create-frame) ;; Do it after loading term/foo-win.el since the value of the ;; mouse-wheel-*-event vars depends on those files being loaded or not. diff --git a/src/Makefile.in b/src/Makefile.in index 4fee1bea883..8357655af3b 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -486,6 +486,11 @@ $(srcdir)/macuvs.h $(lispsource)/international/charprop.el: \ bootstrap-emacs$(EXEEXT) FORCE $(MAKE) -C ../admin/unidata all EMACS="../$(bootstrap_exe)" +## We require charprop.el to exist before ucs-normalize.el is +## byte-compiled, because ucs-normalize.el needs to load 2 uni-*.el files. +$(lispsource)/international/ucs-normalize.elc: | \ + $(lispsource)/international/charprop.el + lispintdir = ${lispsource}/international ${lispintdir}/cp51932.el ${lispintdir}/eucjp-ms.el: FORCE ${MAKE} -C ../admin/charsets $(notdir $@)