summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2014-06-30 14:26:34 -0400
committerGlenn Morris <rgm@gnu.org>2014-06-30 14:26:34 -0400
commit0224bf74b28fea8cc64e80390b0210e3909dd81b (patch)
treed8a4e409562bfbc95b5173a8261599639c39981b
parentc6ecf7f23d99a7c51a9372fefb261ddca89a1db2 (diff)
downloademacs-0224bf74b28fea8cc64e80390b0210e3909dd81b.tar.gz
Get rid of the AUTOGEN_VCS variable in lisp/Makefile
* lisp/emacs-lisp/autoload.el (autoload-ensure-writable): New variable. (autoload-ensure-default-file): Maybe make existing output writable. * lisp/Makefile.in (AUTOGEN_VCS): Remove. (autoloads): Use autoload-ensure-writable rather than AUTOGEN_VCS.
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/Makefile.in14
-rw-r--r--lisp/emacs-lisp/autoload.el21
3 files changed, 27 insertions, 15 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index cbf8329d583..877560e5f62 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
+2014-06-30 Glenn Morris <rgm@gnu.org>
+
+ * emacs-lisp/autoload.el (autoload-ensure-writable): New variable.
+ (autoload-ensure-default-file): Maybe make existing output writable.
+ * Makefile.in (AUTOGEN_VCS): Remove.
+ (autoloads): Use autoload-ensure-writable rather than AUTOGEN_VCS.
+
2014-06-30 Fabián Ezequiel Gallina <fgallina@gnu.org>
* emacs-lisp/subr-x.el (string-reverse): Use `reverse'.
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index 45a964b0d70..eba63666ddb 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -70,17 +70,6 @@ AUTOGENEL = loaddefs.el \
cedet/srecode/loaddefs.el \
org/org-loaddefs.el
-# Versioned files that are the value of someone's `generated-autoload-file'.
-AUTOGEN_VCS = \
- ps-print.el \
- obsolete/tpu-edt.el \
- mail/rmail.el \
- dired.el \
- ibuffer.el \
- htmlfontify.el \
- emacs-lisp/eieio.el \
- textmodes/reftex.el
-
# Value of max-lisp-eval-depth when compiling initially.
# During bootstrapping the byte-compiler is run interpreted when compiling
# itself, and uses more stack than usual.
@@ -182,7 +171,6 @@ finder-data:
--eval '(setq generated-finder-keywords-file (unmsys--file-name "$(srcdir)/finder-inf.el"))' \
-f finder-compile-keywords-make-dist $$wins
-# The chmod +w is to handle env var CVSREAD=1.
# Use expand-file-name rather than $abs_scrdir so that Emacs does not
# get confused when it compares file-names for equality.
#
@@ -190,10 +178,10 @@ finder-data:
# If you want to allow autoloads in such files, remove that,
# and make this depend on leim.
autoloads: $(LOADDEFS)
- cd $(lisp) && chmod +w $(AUTOGEN_VCS)
$(setwins_almost); \
echo Directories: $$wins; \
$(emacs) -l autoload \
+ --eval '(setq autoload-ensure-writable t)' \
--eval '(setq autoload-builtin-package-versions t)' \
--eval '(setq generated-autoload-file (expand-file-name (unmsys--file-name "$(srcdir)/loaddefs.el")))' \
-f batch-update-autoloads $$wins
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index 361e8fa7c68..38956df66de 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -351,9 +351,26 @@ not be relied upon."
";;; " basename
" ends here\n")))
+(defvar autoload-ensure-writable nil
+ "Non-nil means `autoload-ensure-default-file' makes existing file writable.")
+;; Just in case someone tries to get you to overwrite a file that you
+;; don't want to.
+;;;###autoload
+(put 'autoload-ensure-writable 'risky-local-variable t)
+
(defun autoload-ensure-default-file (file)
- "Make sure that the autoload file FILE exists and if not create it."
- (unless (file-exists-p file)
+ "Make sure that the autoload file FILE exists, creating it if needed.
+If the file already exists and `autoload-ensure-writable' is non-nil,
+make it writable."
+ (if (file-exists-p file)
+ ;; Probably pointless, but replaces the old AUTOGEN_VCS in lisp/Makefile,
+ ;; which was designed to handle CVSREAD=1 and equivalent.
+ (and autoload-ensure-writable
+ (let ((modes (file-modes file)))
+ (if (zerop (logand modes #o0200))
+ ;; Ignore any errors here, and let subsequent attempts
+ ;; to write the file raise any real error.
+ (ignore-errors (set-file-modes file (logior modes #o0200))))))
(write-region (autoload-rubric file) nil file))
file)