bug#58102: [PATCH] Do not use -Q when calculating Emacs site-lisp directory
This change ensures consistency and compatibility for both GNU Emacs and XEmacs because: * XEmacs doesn't support -Q and ignores it; and * the different releases of GNU Emacs handle it differently, or not at all. With GNU Emacs, '-Q' was added in 22.1, and specifying it on earlier versions causes an immediate abort. Also, the meaning of '-Q' changes in 24.1 where it also implies/uses a new '--no-site-lisp' option. This new option means it won't add the site-lisp directories to `load-path', but they need to be there because `am_cv_lispdir' is looking for them. Tested on GNU Emacs 21.4, 24.3, 27.2, 28.2, and XEmacs 21.5. From this testing I think the existing usage of '--no-site-file' is good to stay as it's the one mentioned in the current GNU Emacs manual and recognized back to at least 19.34. Also, whilst the XEmacs manual and '--help' mention "-no-site-file" it also supports "--no-site-file".From 38e5c77356f56ac1c1bd50c9ced5bb7607c3ebbf Mon Sep 17 00:00:00 2001 From: Richard Hopkins <> Date: Mon, 26 Sep 2022 21:25:06 +0100 Subject: [PATCH] Do not use -Q when calculating Emacs site-lisp directory * m4/lispdir.m4 (am_cv_lispdir): Remove '-Q' argument. * doc/automake.texi (Hard-Coded Install Paths): Remove '-Q' argument. This change ensures consistency and compatibility for both GNU Emacs and XEmacs because: * XEmacs doesn't support -Q and ignores it; and * the different releases of GNU Emacs handle it differently, or not at all. With GNU Emacs, '-Q' was added in 22.1, and specifying it on earlier versions causes an immediate abort. Also, the meaning of '-Q' changes in 24.1 where it also implies/uses a new '--no-site-lisp' option. This new option means it won't add the site-lisp directories to `load-path', but they need to be there because `am_cv_lispdir' is looking for them. --- doc/automake.texi | 2 +- m4/lispdir.m4 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/automake.texi b/doc/automake.texi index 21c49645e..444740bb6 100644 --- a/doc/automake.texi +++ b/doc/automake.texi @@ -13350,7 +13350,7 @@ instance, here is how @code{AM_PATH_LISPDIR} (@pxref{Emacs Lisp}) computes @samp{$(lispdir)}: @example -$EMACS -batch -Q --no-site-file -eval '(while load-path +$EMACS -batch --no-site-file -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' >conftest.out lispdir=`sed -n diff --git a/m4/lispdir.m4 b/m4/lispdir.m4 index 6f9b89d2c..cec4b3554 100644 --- a/m4/lispdir.m4 +++ b/m4/lispdir.m4 @@ -34,7 +34,7 @@ AC_DEFUN([AM_PATH_LISPDIR], # which is non-obvious for non-emacs users. # Redirecting /dev/null should help a bit; pity we can't detect "broken" # emacsen earlier and avoid running this altogether. - AC_RUN_LOG([$EMACS -batch -Q --no-site-file -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' conftest.out]) + AC_RUN_LOG([$EMACS -batch --no-site-file -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' conftest.out]) am_cv_lispdir=`sed -n \ -e 's,/$,,' \ -e '/.*\/lib\/x*emacs\/site-lisp$/{s,.*/lib/\(x*emacs/site-lisp\)$,${libdir}/\1,;p;q;}' \ -- 2.37.3
bug#58025: [PATCH] Ensure `byte-compile-dest-file-function' is used
Hi Richard - I installed the -l bytecomp patch you sent (copied below). It seems safe, and good in any case. Thanks. If there are changes to make in the -Q / -q area, let's address those separately. (I'll close this bug, I guess, but fine to keep discussing wherever.) I don't think Automake uses -Q now? Since the release of 1.16.5, there has been one change already, to pass --no-site-file (as you can see below; I'll attach the current lisp.am for possible convenience). From your research, I guess that should be changed to -no-site-file (one hyphen)? Where is it that the double-hyphen --no... fails? In general, it is definitely necessary to support Emacs 21 (I use it :). I'm not sure if we absolutely have to support 18 or 19, but when possible, it is certainly desirable. --thanks, karl. * lib/am/lisp.am (.el.elc): Require the bytecomp library so byte-compile-dest-file-function can be used when available. diff --git a/lib/am/lisp.am b/lib/am/lisp.am index 6395ef389..500e2c530 100644 --- a/lib/am/lisp.am +++ b/lib/am/lisp.am @@ -41,6 +41,7 @@ endif %?INSTALL% $(EMACS) --batch --no-site-file \ $(AM_ELCFLAGS) $(ELCFLAGS) \ $$am__subdir_includes -L $(builddir) -L $(srcdir) \ + -l bytecomp \ --eval '$(am__emacs_byte_compile_setup)' \ -f batch-byte-compile '$<'; \ else :; fi lisp.am Description: Binary data
bug#58026: [PATCH] Emacs .elc byte compilation now respects silent rules
Emacs byte compilation now respects silent build rules (e.g. make V=0). i.e. use AM_V_GEN to show this instead GEN bar.elc Thanks. I applied the patch.
bug#58025: [PATCH] Ensure `byte-compile-dest-file-function' is used
On Sat, Sep 24, 2022, at 5:45 AM, Richard Hopkins wrote: > On 2022-09-23 16:15, Zack Weinberg wrote: >> Thank you for the patch. Are you able to test it with a version of >> GNU Emacs older than 23.2? I see that you tested it with XEmacs 21, >> but as I recall there were quite substantial differences between >> XEmacs 21 and GNU Emacs of similar vintage. > > I've now managed to test this on Emacs 21.4.1 (Slackware 12.0) and > the byte compilation works - loading bytecomp is fine, and > `byte-compile-dest-file' is defined as expected. The other patch > to respect silent rules also works on 21.4.1. > > If we do need to support that far back I will investigate the "-Q" > / "--no-site-file" handling to improve compatibility across the > board. I'm not an official maintainer for Automake, but I think we probably don't have to worry about Emacs any older than v21. Would anyone else like to express an opinion? > "-Q" will error before GNU Emacs 22, and is ignored on XEmacs. > > "-no-site-file" (single hypen) should be used instead of > "--no-site-file" as it works on all of them. > > "-Q" also shouldn't be specified on later GNU Emacs as it affects > the result of `am_cv_lispdir' calculation due to excluding > site lisp directories from `load-path' which it's trying to find. > This is because "-Q" also adds "--no-site-lisp" in later GNU Emacs. > > So, the plan will be to not use "-Q" and to use "-q -no-site-file" > instead. This sounds like it would be a worthwhile change regardless of where we decide to draw the line on supporting old versions of Emacs. zw