Subject: Re: bug#77083: 31.0.50; submit-emacs-patch doesn't work in compressed lisp files

From: Elijah Gabe Pérez <[email-masked]>
Date: Tue, 18 Mar 2025 12:50:56 -0600

Eli Zaretskii <[email-masked]> writes:

>> From: Elijah Gabe Pérez <[email-masked]>
>> Date: Mon, 17 Mar 2025 14:37:04 -0600

>> When Emacs was compiled with compress-install, using submit-emacs-patch gives an error because it
>> search for maintainer address in file.el instead file.el.gz. 

> Thanks, but this lacks details, IMO.  AFAIU, submit-emacs-patch gleans
> source file names from the patch file you are about to submit, and it
> expands each file name in the patch against source-directory, before
> looking them up for their maintainers.  In the source tree (if you
> still have it around) the files are not compressed.  OTOH, if your
> patch names files by their absolute file name (in which case
> source-directory is not used), and the files are compressed in the
> installation tree, then how did you produce the patch from compressed
> files in the first place in a way that names the files without the .gz
> extensions?

My emacs-git directory (where i use to contribute) doesn't have the lisp
files compressed, it seems that submit-emacs-patch search in
source-directory (which i have it pointing to /usr/share/emacs/31.0.50/)
for lisp.el, however my installed emacs was built with compress-install
which i have lisp.el.gz instead.

> IOW, please show an example of a patch that could be used to reproduce
> this issue and the recipe to reproduce,

Sure, here is:

Steps to reproduce:
1. emacs -Q
2. eval: (setq source-directory "/usr/share/emacs/31.0.50/")
3. M-x submit-emacs-patch RET /path/to/test.patch RET RET

and should display mail/message buffer with this

#+begin_example
  To: [email-masked]
  Subject: 
  From:
  X-Debbugs-Cc: --text follows this line--
#+end_example

and give an error:

#+begin_example
  Opening input file: The file or directory does not exist, /usr/share/emacs/31.0.50/lisp/simple.el
#+end_example

> and please tell whether you do or don't have the Emacs source tree
> pointed to by source-directory.

I have source-directory pointing to /usr/share/emacs/31.0.50/, changing
it to my emacs-git directory path fix this.

However I haven't found any documentation about this variable and
changing its value, so I see it very dangerous do it.

> Or maybe I'm missing something obvious, in which case please point out
> what I missed.

You didn't miss anything, I think I've explained enough.

diff --git a/lisp/simple.el b/lisp/simple.el
index 579b9ee9118..5e15958033e 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -54,6 +54,7 @@ amalgamating-undo-limit
 the maximum number of changes considered is when amalgamating.  A
 value of 1 means that nothing is amalgamated.")
 
+
 (defgroup killing nil
   "Killing and yanking commands."
   :group 'editing)

-- 
                                          - E.G via GNU Emacs and Org.