diff options
| author | Andrea Corallo <akrl@sdf.org> | 2020-08-16 14:33:25 +0200 |
|---|---|---|
| committer | Andrea Corallo <akrl@sdf.org> | 2020-08-16 17:04:52 +0200 |
| commit | d6d575831ef5ee45b0625a60ea1469de36f9a7fa (patch) | |
| tree | 8f66e2c7da4e51d3e76b6f2fc25a8554d2249509 | |
| parent | b296fb025c36af2ca13b04252fafb63faedcd9d1 (diff) | |
| download | emacs-d6d575831ef5ee45b0625a60ea1469de36f9a7fa.tar.gz | |
Allow for native compiling .el.gz files
This is needed for installed instances compiled with NATIVE_FAST_BOOT
* src/comp.c (maybe_defer_native_compilation): Search for .el.gz
too as a source if the .el is not found.
(Fcomp_el_to_eln_filename): Remove the .gz in case to
generate the hash.
* lisp/emacs-lisp/comp.el (comp-valid-source-re): New defconst.
(comp-run-async-workers, native-compile-async): Make use of
`comp-valid-source-re'.
| -rw-r--r-- | lisp/emacs-lisp/comp.el | 9 | ||||
| -rw-r--r-- | src/comp.c | 8 |
2 files changed, 13 insertions, 4 deletions
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index b5ab4ebdccb..85b5562f280 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -137,6 +137,9 @@ before compilation. Usable to modify the compiler environment." (defvar comp-dry-run nil "When non nil run everything but the C back-end.") +(defconst comp-valid-source-re (rx ".el" (? ".gz") eos) + "Regexp to match filename of valid input source files.") + (defconst comp-log-buffer-name "*Native-compile-Log*" "Name of the native-compiler log buffer.") @@ -2564,7 +2567,7 @@ display a message." (cl-loop for (source-file . load) = (pop comp-files-queue) while source-file - do (cl-assert (string-match-p (rx ".el" eos) source-file) nil + do (cl-assert (string-match-p comp-valid-source-re source-file) nil "`comp-files-queue' should be \".el\" files: %s" source-file) when (or comp-always-compile @@ -2724,8 +2727,8 @@ LOAD can be nil t or 'late." (dolist (path paths) (cond ((file-directory-p path) (dolist (file (if recursively - (directory-files-recursively path (rx ".el" eos)) - (directory-files path t (rx ".el" eos)))) + (directory-files-recursively path comp-valid-source-re) + (directory-files path t comp-valid-source-re))) (push file files))) ((file-exists-p path) (push path files)) (t (signal 'native-compiler-error diff --git a/src/comp.c b/src/comp.c index d42bb4f8eb5..f4111e2a291 100644 --- a/src/comp.c +++ b/src/comp.c @@ -3867,6 +3867,8 @@ If BASE-DIR is nil use the first entry in `comp-eln-load-path'. */) (Lisp_Object file_name, Lisp_Object base_dir) { CHECK_STRING (file_name); + if (suffix_p (file_name, ".gz")) + file_name = Fsubstring (file_name, Qnil, make_fixnum (-3)); file_name = Fexpand_file_name (file_name, Qnil); Lisp_Object hashed = Fsubstring (comp_hash_string (file_name), Qnil, make_fixnum (ELN_FILENAME_HASH_LEN)); @@ -4494,7 +4496,11 @@ maybe_defer_native_compilation (Lisp_Object function_name, concat2 (CALL1I (file-name-sans-extension, Vload_true_file_name), build_pure_c_string (".el")); if (NILP (Ffile_exists_p (src))) - return; + { + src = concat2 (src, build_pure_c_string (".gz")); + if (NILP (Ffile_exists_p (src))) + return; + } /* This is to have deferred compilaiton able to compile comp dependecies breaking circularity. */ |
