Subject: bug#63260: 29.0.90; Regression installing/activating packages without autoloads

From: Eli Zaretskii <[email-masked]>
Date: Sat, 06 May 2023 12:01:07 +0300

> Cc: [email-masked], Philip Kaludercic <[email-masked]>
> From: Robert Pluim <[email-masked]>
> Date: Fri, 05 May 2023 08:36:51 +0200
> 
> >>>>> On Thu, 04 May 2023 18:28:47 +0200, Basil Contovounesios <[email-masked]> said:
> 
>     Basil> This does not address the file-missing error during package activation,
>     Basil> but it allows a subsequent package-quickstart-refresh to complete
>     Basil> (albeit with a warning in a *Compile-Log*):
> 
> The file-missing error is expected, no? Thatʼs why the autoloads
> loading is wrapped in `with-demoted-errors'. Although if the message bothers
> you, I guess we could check `file-exists-p' for it.
> 
>     Basil>   Compiling file /tmp/tmp.6cdF8paE0K/.emacs.d/package-quickstart.el
>     Basil>                  at Thu May  4 18:24:07 2023
>     Basil>   Entering directory ‘/tmp/tmp.6cdF8paE0K/.emacs.d/’
>     Basil>   package-quickstart.el:4:2: Warning: Empty let body
> 
>     Basil> due to the following generated contents of package-quickstart-file:
> 
>     Basil>   (let ((load-true-file-name nil)(load-file-name nil))
>     Basil>   )
> 
> Iʼd claim ENOCOFFEE for the last patch, but it was not the morning :-)
> 
> diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
> index 0919ce34448..4b488281b78 100644
> --- a/lisp/emacs-lisp/package.el
> +++ b/lisp/emacs-lisp/package.el
> @@ -4491,11 +4491,11 @@ package-quickstart-refresh
>        (insert ";;; Quickstart file to activate all packages at startup  -*- lexical-binding:t -*-\n")
>        (insert ";; ¡¡ This file is autogenerated by `package-quickstart-refresh', DO NOT EDIT !!\n\n")
>        (dolist (pkg package--quickstart-pkgs)
> -        (let* ((file
> -                ;; Prefer uncompiled files (and don't accept .so files).
> -                (let ((load-suffixes '(".el" ".elc")))
> -                  (locate-library (package--autoloads-file-name pkg))))
> -               (pfile (prin1-to-string file)))
> +        (when-let* ((file
> +                     ;; Prefer uncompiled files (and don't accept .so files).
> +                     (let ((load-suffixes '(".el" ".elc")))
> +                       (locate-library (package--autoloads-file-name pkg))))
> +                    (pfile (prin1-to-string file)))
>            (insert "(let ((load-true-file-name " pfile ")\
>  \(load-file-name " pfile "))\n")
>            (insert-file-contents file)
> 

Philip, Basil: is the above okay with you?  I'd like this issue
resolved before making the next pretest of Emacs 29.1.

Thanks.