Subject: Re: bug#39823: 26.3; update-directory-autoloads regression from Emacs 26 to Emacs 27

From: Eli Zaretskii <[email-masked]>
Date: Fri, 13 Mar 2020 10:30:46 +0200

> From: Noam Postavsky <[email-masked]>
> Date: Thu, 12 Mar 2020 20:43:09 -0400
> Cc: , [email-masked]
> 
> > Works on Emacs 26.3, but fails on Emacs 27.0.50, with the error message:
> >
> > Wrong type argument: stringp, nil
> 
> The difference is that --eval now evaluates with lexical-binding
> enabled, so the let-binding of generated-autoload-file is lexical unless
> autoload.el, with its (defvar generated-autoload-file nil ...), has been
> loaded.
> [...]
> See also https://lists.gnu.org/r/emacs-devel/2020-03/msg00173.html for
> (much) more discussion on this.

The "wrap with eval" trick suggested by Stefan in the latter
discussion does work here:

 emacs --quick --batch --eval "(eval '(progn
   (let ((backup-inhibited t)
         (generated-autoload-file \"/tmp/toto\"))
     (update-directory-autoloads \"/tmp\"))))"

  =|
  INFO     Scraping files for toto...75%
  INFO     Scraping files for toto...done