all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Xiyue Deng <manphiz@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 73926-done@debbugs.gnu.org
Subject: bug#73926: 29.4; *-autoloads.el generation not reproducible
Date: Mon, 21 Oct 2024 14:31:06 -0700	[thread overview]
Message-ID: <87msixuorp.fsf@debian-hx90.lan> (raw)
In-Reply-To: <86r089hkn7.fsf@gnu.org>

Hi Eli,

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Xiyue Deng <manphiz@gmail.com>
>> Date: Mon, 21 Oct 2024 01:00:14 -0700
>> 
>> I was trying to debug a reproducibility test failure on muse-el in
>> Debian Salsa CI reprotest[1].  It looks like that the contents of the
>> generated autoload file depends on the input sequence of files and
>> directories, and it looks like the `loaddefs-generate' doesn't enforce
>> such a sequence to be consistent.
>> 
>> I have provided a patch (attached) to sort the input directories and
>> files in an attempt to fix this reproducibility issue.
>
> Did you time the modified code wrt the original one, especially when
> generating loaddefs for the entire Emacs tree?  If the performance hit
> is significant, we'd probably want to make this behavior optional,
> like the other measures in Emacs that are meant to produce more
> reproducible builds.
>
> Also, AFAIK on MS-Windows directory-files produces a sorted list by
> default (just in the reverse order), so in that case calling 'sort' is
> not needed in the first place.
>
> I also wonder whether this will produce the same order on different
> operating systems, what with the file-encoding being a factor.
>

It looks like my previous test was actually incorrect and turned out
this patch on Emacs didn't actually fix the specific issue for muse-el.
So I'd like to drop this for now until I have a real fix for muse-el
first.

>> --- a/lisp/emacs-lisp/loaddefs-gen.el
>> +++ b/lisp/emacs-lisp/loaddefs-gen.el
>> @@ -596,9 +596,13 @@ instead of just updating them with the new/changed autoloads."
>>                       (concat "\\`[^=.].*" (regexp-opt tmp t) "\\'")))
>>  	 (files (apply #'nconc
>>  		       (mapcar (lambda (d)
>> -				 (directory-files (expand-file-name d)
>> -                                                  t files-re))
>> -			       (if (consp dir) dir (list dir)))))
>> +				 (sort
>> +				  (directory-files (expand-file-name d)
>> +						   t files-re)
>> +				  'string<))
>
> Isn't string< the default when 'sort' is called to sort strings?
>

Yes, actually `directory-files' should have already sorted the results
using 'string-lessp as the documentation pointed out, so this sort is
not necessary.  The one with the dir may worth considering, but will
test more before resubmitting.

> Thanks.

-- 
Regards,
Xiyue Deng





  reply	other threads:[~2024-10-21 21:31 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-21  8:00 bug#73926: 29.4; *-autoloads.el generation not reproducible Xiyue Deng
2024-10-21  9:26 ` Eli Zaretskii
2024-10-21 21:31   ` Xiyue Deng [this message]
2024-10-22  5:06     ` Xiyue Deng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87msixuorp.fsf@debian-hx90.lan \
    --to=manphiz@gmail.com \
    --cc=73926-done@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.