From: Andrea Corallo Date: Tue, 6 Oct 2020 15:44:13 +0000 (+0200) Subject: * Native compiling do not target a directory with no write permission X-Git-Tag: emacs-28.0.90~2727^2~388 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4a1bb4626053d5be5d3e869d6b7049dc3269d812;p=emacs.git * Native compiling do not target a directory with no write permission * src/comp.c (Fcomp_el_to_eln_filename): Check for write permission while choosing the output directory in `comp-eln-load-path'. --- diff --git a/src/comp.c b/src/comp.c index 076236ef80c..ba4089e5aeb 100644 --- a/src/comp.c +++ b/src/comp.c @@ -4080,8 +4080,22 @@ If BASE-DIR is nil use the first entry in `comp-eln-load-path'. */) separator); Lisp_Object hash = concat3 (path_hash, separator, content_hash); filename = concat3 (filename, hash, build_string (NATIVE_ELISP_SUFFIX)); + + /* If base_dir was not specified search inside Vcomp_eln_load_path + for the first directory where we have write access. */ if (NILP (base_dir)) - base_dir = XCAR (Vcomp_eln_load_path); + { + Lisp_Object eln_load_paths = Vcomp_eln_load_path; + FOR_EACH_TAIL (eln_load_paths) + if (!NILP (Ffile_writable_p (XCAR (eln_load_paths)))) + { + base_dir = XCAR (eln_load_paths); + break; + } + /* If we can't find it return Nil. */ + if (NILP (base_dir)) + return Qnil; + } if (!file_name_absolute_p (SSDATA (base_dir))) base_dir = Fexpand_file_name (base_dir, Vinvocation_directory);