From 7558bddcc9cf5ee14441304c2cfc7cffb566daba Mon Sep 17 00:00:00 2001 From: Jim Meyering
Date: Wed, 22 Nov 2017 21:07:29 -0800 Subject: [PATCH] port elisp-compilation support to emacs-23.1 and newer In May of 2017, Emacs' support for using the long-deprecated byte-compile-dest-file function was removed, and that removal broke automake's elisp-compiling rule for any .el file not in the current directory. In emacs-23.1 (July 2009) byte-compile-dest-file-function became the recommended way to adjust the byte-compiler's destination. We expect the removed functionality to be restored for Emacs-26, albeit with dissuasive diagnostics warning about the imminent removal of this functionality. It may be removed in Emacs-27. * lib/am/lisp.am (.el.elc): Use byte-compile-dest-file-function, rather than byte-compile-dest-file. * t/lisp-readonly-srcdir.sh: New file, to test for the above. * t/list-of-tests.mk (handwritten_TESTS): Add it. * NEWS (Bugs fixed): Mention this problem. --- NEWS | 5 +++++ lib/am/lisp.am | 2 +- t/lisp-readonly-srcdir.sh | 46 ++++++++++++++++++++++++++++++++++++++++++++++ t/list-of-tests.mk | 1 + 4 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 t/lisp-readonly-srcdir.sh diff --git a/NEWS b/NEWS index 04a285565..dd057b7b1 100644 --- a/NEWS +++ b/NEWS @@ -121,6 +121,11 @@ New in ?.?.?: - The time printed by 'mdate-sh' is now using the UTC time zone to support the reproducible build effort. (automake bug#20314) + - The elisp byte-compilation rule now uses byte-compile-dest-file-function, + rather than byte-compile-dest-file, which was obsoleted in 2009. We expect + that Emacs-26 will continue to support the old function, but will complain + loudly, and that Emacs-27 will remove support for it altogether. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ New in 1.15.1: diff --git a/lib/am/lisp.am b/lib/am/lisp.am index 881bf3457..cacbc6feb 100644 --- a/lib/am/lisp.am +++ b/lib/am/lisp.am @@ -41,7 +41,7 @@ endif %?INSTALL% $(EMACS) --batch \ $(AM_ELCFLAGS) $(ELCFLAGS) \ $$am__subdir_includes -L $(builddir) -L $(srcdir) \ - --eval "(defun byte-compile-dest-file (f) \"address@hidden")" \ + --eval "(setq byte-compile-dest-file-function (lambda (_) \"address@hidden"))" \ --eval "(unless (byte-compile-file \"$<\") (kill-emacs 1))"; \ else :; fi diff --git a/t/lisp-readonly-srcdir.sh b/t/lisp-readonly-srcdir.sh new file mode 100644 index 000000000..38b866404 --- /dev/null +++ b/t/lisp-readonly-srcdir.sh @@ -0,0 +1,46 @@ +#! /bin/sh +# Copyright (C) 2017 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see