GNU bug report logs - #80133
31.0.50; [ELPA] reproducible builds; elpa--makeinfo temporary file names

Previous Next

Package: emacs;

Reported by: Daniel Mendler <mail <at> daniel-mendler.de>

Date: Mon, 5 Jan 2026 11:11:02 UTC

Severity: normal

Found in version 31.0.50

To reply to this bug, email your comments to 80133 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to monnier <at> iro.umontreal.ca, philipk <at> posteo.net, bug-gnu-emacs <at> gnu.org:
bug#80133; Package emacs. (Mon, 05 Jan 2026 11:11:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Daniel Mendler <mail <at> daniel-mendler.de>:
New bug report received and forwarded. Copy sent to monnier <at> iro.umontreal.ca, philipk <at> posteo.net, bug-gnu-emacs <at> gnu.org. (Mon, 05 Jan 2026 11:11:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Daniel Mendler <mail <at> daniel-mendler.de>
To: bug-gnu-emacs <at> gnu.org
Subject: 31.0.50; [ELPA] reproducible builds; elpa--makeinfo temporary file
 names
Date: Mon, 05 Jan 2026 12:09:49 +0100
The `elpaa--makeinfo' function which is part of the ELPA build process
in elpa-admin.el uses a temporary file name as output file for
"makeinfo" (tmpfile).

  (apply #'elpaa--call-sandboxed
         t "makeinfo" "--no-split" input-name "-o" tmpfile extraargs)

This results in *.info files which differ unnecessarily between
versions, since info files contain lines like this:

  This is tmpURv278.info, produced by makeinfo version 7.1.1 from
  foo.texi.

I suggest to use a stable name for the output file such the the
generated info files do not differ between versions, if there have not
been any changes (reproducible builds).




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#80133; Package emacs. (Mon, 05 Jan 2026 13:01:02 GMT) Full text and rfc822 format available.

Message #8 received at 80133 <at> debbugs.gnu.org (full text, mbox):

From: Philip Kaludercic <philipk <at> posteo.net>
To: Daniel Mendler <mail <at> daniel-mendler.de>
Cc: 80133 <at> debbugs.gnu.org, Stefan Monnier <monnier <at> iro.umontreal.ca>
Subject: Re: bug#80133: 31.0.50; [ELPA] reproducible builds; elpa--makeinfo
 temporary file names
Date: Mon, 05 Jan 2026 13:00:00 +0000
[Message part 1 (text/plain, inline)]
Daniel Mendler via "Bug reports for GNU Emacs, the Swiss army knife of
text editors" <bug-gnu-emacs <at> gnu.org> writes:

> The `elpaa--makeinfo' function which is part of the ELPA build process
> in elpa-admin.el uses a temporary file name as output file for
> "makeinfo" (tmpfile).
>
>   (apply #'elpaa--call-sandboxed
>          t "makeinfo" "--no-split" input-name "-o" tmpfile extraargs)
>
> This results in *.info files which differ unnecessarily between
> versions, since info files contain lines like this:
>
>   This is tmpURv278.info, produced by makeinfo version 7.1.1 from
>   foo.texi.
>
> I suggest to use a stable name for the output file such the the
> generated info files do not differ between versions, if there have not
> been any changes (reproducible builds).

The following should fix the issue, and doesn't appear to introduce any
regressions:

[Message part 2 (text/x-patch, inline)]
diff --git a/elpa-admin.el b/elpa-admin.el
index 240fa0df73..4b3c526614 100644
--- a/elpa-admin.el
+++ b/elpa-admin.el
@@ -2830,13 +2837,13 @@ directory; one of archive, archive-devel."
 (defun elpaa--makeinfo (input output &optional extraargs)
   (let* ((input-dir (file-name-directory input))
          (input-name (file-name-nondirectory input))
-         (output-ext (file-name-extension output))
 	 ;; The sandbox may not allow write access to the output,
          ;; so we first create the file inside the sandbox and then
          ;; move it to its intended destination.
 	 (tmpfile
-	  (concat (make-temp-name (expand-file-name "doc" input-dir))
-	          (if output-ext (concat "." output-ext)))))
+          (expand-file-name
+           (file-name-nondirectory output)
+           (make-temp-file input-name t))))
     (elpaa--temp-file tmpfile)
     (with-temp-buffer
       ;; We change directory to that of the input file, because

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#80133; Package emacs. (Mon, 05 Jan 2026 14:31:03 GMT) Full text and rfc822 format available.

Message #11 received at 80133 <at> debbugs.gnu.org (full text, mbox):

From: Daniel Mendler <mail <at> daniel-mendler.de>
To: Philip Kaludercic <philipk <at> posteo.net>
Cc: 80133 <at> debbugs.gnu.org, Stefan Monnier <monnier <at> iro.umontreal.ca>
Subject: Re: bug#80133: 31.0.50; [ELPA] reproducible builds; elpa--makeinfo
 temporary file names
Date: Mon, 05 Jan 2026 15:30:01 +0100
Philip Kaludercic <philipk <at> posteo.net> writes:

> Daniel Mendler via "Bug reports for GNU Emacs, the Swiss army knife of
> text editors" <bug-gnu-emacs <at> gnu.org> writes:
>
>> The `elpaa--makeinfo' function which is part of the ELPA build process
>> in elpa-admin.el uses a temporary file name as output file for
>> "makeinfo" (tmpfile).
>>
>>   (apply #'elpaa--call-sandboxed
>>          t "makeinfo" "--no-split" input-name "-o" tmpfile extraargs)
>>
>> This results in *.info files which differ unnecessarily between
>> versions, since info files contain lines like this:
>>
>>   This is tmpURv278.info, produced by makeinfo version 7.1.1 from
>>   foo.texi.
>>
>> I suggest to use a stable name for the output file such the the
>> generated info files do not differ between versions, if there have not
>> been any changes (reproducible builds).
>
> The following should fix the issue, and doesn't appear to introduce any
> regressions:

Thanks! Seems simple enough. Can you test this locally? If Stefan
agrees, just install it, and we will see soon enough if packages are
created successfully on ELPA-devel with stable info files.

> diff --git a/elpa-admin.el b/elpa-admin.el
> index 240fa0df73..4b3c526614 100644
> --- a/elpa-admin.el
> +++ b/elpa-admin.el
> @@ -2830,13 +2837,13 @@ directory; one of archive, archive-devel."
>  (defun elpaa--makeinfo (input output &optional extraargs)
>    (let* ((input-dir (file-name-directory input))
>           (input-name (file-name-nondirectory input))
> -         (output-ext (file-name-extension output))
>  	 ;; The sandbox may not allow write access to the output,
>           ;; so we first create the file inside the sandbox and then
>           ;; move it to its intended destination.
>  	 (tmpfile
> -	  (concat (make-temp-name (expand-file-name "doc" input-dir))
> -	          (if output-ext (concat "." output-ext)))))
> +          (expand-file-name
> +           (file-name-nondirectory output)
> +           (make-temp-file input-name t))))
>      (elpaa--temp-file tmpfile)
>      (with-temp-buffer
>        ;; We change directory to that of the input file, because




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#80133; Package emacs. (Mon, 05 Jan 2026 14:36:02 GMT) Full text and rfc822 format available.

Message #14 received at 80133 <at> debbugs.gnu.org (full text, mbox):

From: Philip Kaludercic <philipk <at> posteo.net>
To: Daniel Mendler <mail <at> daniel-mendler.de>
Cc: 80133 <at> debbugs.gnu.org, Stefan Monnier <monnier <at> iro.umontreal.ca>
Subject: Re: bug#80133: 31.0.50; [ELPA] reproducible builds; elpa--makeinfo
 temporary file names
Date: Mon, 05 Jan 2026 14:35:31 +0000
Daniel Mendler <mail <at> daniel-mendler.de> writes:

> Philip Kaludercic <philipk <at> posteo.net> writes:
>
>> Daniel Mendler via "Bug reports for GNU Emacs, the Swiss army knife of
>> text editors" <bug-gnu-emacs <at> gnu.org> writes:
>>
>>> The `elpaa--makeinfo' function which is part of the ELPA build process
>>> in elpa-admin.el uses a temporary file name as output file for
>>> "makeinfo" (tmpfile).
>>>
>>>   (apply #'elpaa--call-sandboxed
>>>          t "makeinfo" "--no-split" input-name "-o" tmpfile extraargs)
>>>
>>> This results in *.info files which differ unnecessarily between
>>> versions, since info files contain lines like this:
>>>
>>>   This is tmpURv278.info, produced by makeinfo version 7.1.1 from
>>>   foo.texi.
>>>
>>> I suggest to use a stable name for the output file such the the
>>> generated info files do not differ between versions, if there have not
>>> been any changes (reproducible builds).
>>
>> The following should fix the issue, and doesn't appear to introduce any
>> regressions:
>
> Thanks! Seems simple enough. Can you test this locally? 

Yes I can, the first line now looks like this:

  This is compat.info, produced by makeinfo version 7.1.1 from
  compat.texi.

>                                                         If Stefan
> agrees, just install it, and we will see soon enough if packages are
> created successfully on ELPA-devel with stable info files.
>
>> diff --git a/elpa-admin.el b/elpa-admin.el
>> index 240fa0df73..4b3c526614 100644
>> --- a/elpa-admin.el
>> +++ b/elpa-admin.el
>> @@ -2830,13 +2837,13 @@ directory; one of archive, archive-devel."
>>  (defun elpaa--makeinfo (input output &optional extraargs)
>>    (let* ((input-dir (file-name-directory input))
>>           (input-name (file-name-nondirectory input))
>> -         (output-ext (file-name-extension output))
>>  	 ;; The sandbox may not allow write access to the output,
>>           ;; so we first create the file inside the sandbox and then
>>           ;; move it to its intended destination.
>>  	 (tmpfile
>> -	  (concat (make-temp-name (expand-file-name "doc" input-dir))
>> -	          (if output-ext (concat "." output-ext)))))
>> +          (expand-file-name
>> +           (file-name-nondirectory output)
>> +           (make-temp-file input-name t))))
>>      (elpaa--temp-file tmpfile)
>>      (with-temp-buffer
>>        ;; We change directory to that of the input file, because




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#80133; Package emacs. (Mon, 05 Jan 2026 15:13:02 GMT) Full text and rfc822 format available.

Message #17 received at 80133 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Philip Kaludercic <philipk <at> posteo.net>
Cc: Daniel Mendler <mail <at> daniel-mendler.de>, 80133 <at> debbugs.gnu.org
Subject: Re: bug#80133: 31.0.50; [ELPA] reproducible builds; elpa--makeinfo
 temporary file names
Date: Mon, 05 Jan 2026 10:12:37 -0500
> diff --git a/elpa-admin.el b/elpa-admin.el
> index 240fa0df73..4b3c526614 100644
> --- a/elpa-admin.el
> +++ b/elpa-admin.el
> @@ -2830,13 +2837,13 @@ directory; one of archive, archive-devel."
>  (defun elpaa--makeinfo (input output &optional extraargs)
>    (let* ((input-dir (file-name-directory input))
>           (input-name (file-name-nondirectory input))
> -         (output-ext (file-name-extension output))
>  	 ;; The sandbox may not allow write access to the output,
>           ;; so we first create the file inside the sandbox and then
>           ;; move it to its intended destination.
>  	 (tmpfile
> -	  (concat (make-temp-name (expand-file-name "doc" input-dir))
> -	          (if output-ext (concat "." output-ext)))))
> +          (expand-file-name
> +           (file-name-nondirectory output)
> +           (make-temp-file input-name t))))
>      (elpaa--temp-file tmpfile)

I can't remember why I went through the trouble of doing the
`output-ext` dance, but I think we should preserve it.
Another problem with that new code is that the temp dir created by
`make-temp-file` is not removed because `elpaa--temp-file` only
registers the file for deletion but not its holding directory.
We can fix it by adding a call like

       (elpaa--temp-file (lambda () (delete-directory ...)))


- Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#80133; Package emacs. (Mon, 05 Jan 2026 17:18:01 GMT) Full text and rfc822 format available.

Message #20 received at 80133 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Philip Kaludercic <philipk <at> posteo.net>
Cc: Daniel Mendler <mail <at> daniel-mendler.de>, 80133 <at> debbugs.gnu.org
Subject: Re: bug#80133: 31.0.50; [ELPA] reproducible builds; elpa--makeinfo
 temporary file names
Date: Mon, 05 Jan 2026 12:17:09 -0500
>> diff --git a/elpa-admin.el b/elpa-admin.el
>> index 240fa0df73..4b3c526614 100644
>> --- a/elpa-admin.el
>> +++ b/elpa-admin.el
>> @@ -2830,13 +2837,13 @@ directory; one of archive, archive-devel."
>>  (defun elpaa--makeinfo (input output &optional extraargs)
>>    (let* ((input-dir (file-name-directory input))
>>           (input-name (file-name-nondirectory input))
>> -         (output-ext (file-name-extension output))
>>  	 ;; The sandbox may not allow write access to the output,
>>           ;; so we first create the file inside the sandbox and then
>>           ;; move it to its intended destination.
>>  	 (tmpfile
>> -	  (concat (make-temp-name (expand-file-name "doc" input-dir))
>> -	          (if output-ext (concat "." output-ext)))))
>> +          (expand-file-name
>> +           (file-name-nondirectory output)
>> +           (make-temp-file input-name t))))
>>      (elpaa--temp-file tmpfile)
>
> I can't remember why I went through the trouble of doing the
> `output-ext` dance, but I think we should preserve it.

Oh, sorry, I now see that this dance is indeed unneeded with your code.

> Another problem with that new code is that the temp dir created by
> `make-temp-file` is not removed because `elpaa--temp-file` only
> registers the file for deletion but not its holding directory.
> We can fix it by adding a call like
>
>        (elpaa--temp-file (lambda () (delete-directory ...)))

This still remains AFAICT,


        Stefan





This bug report was last modified 6 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.