bug#58102: [PATCH] Do not use -Q when calculating Emacs site-lisp directory

2022-09-26 Thread Richard Hopkins

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

2022-09-26 Thread Karl Berry
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

2022-09-26 Thread Karl Berry
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

2022-09-26 Thread Zack Weinberg
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