Subject: Re: bug#63625: 29.0.90; package-install inserts package directory into load-path twice.

From: Robert Pluim <[email-masked]>
Date: Mon, 22 May 2023 17:36:09 +0200

>>>>> On Mon, 22 May 2023 11:04:46 -0400, Stefan Monnier via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <[email-masked]> said:

    >> `file-name-directory' will return nil for names with no slashes in
    >> them, but I donʼt know if thatʼs possible here.

    Stefan> I think `load-file-name` is always absolute, so I think we should be
    Stefan> safe, but that's the question, yes.

This is where we quote Knuth on the difference between proof and
testing :-)

    >> I *think* we can use `when-let*' here, since subr.el is preloaded.

    Stefan> Please don't, it's too recently introduced IMO and such generated files
    Stefan> may be loaded in older Emacsen.

OK

    Stefan> (package--reload-previously-loaded pkg-desc))
    Stefan> (with-demoted-errors "Error loading autoloads: %s"
    Stefan> (load (package--autoloads-file-name pkg-desc) nil t))
    Stefan> -        (add-to-list 'load-path (directory-file-name pkg-dir)))
    Stefan> +        ;; FIXME: Since 2013 (commit 4fac34cee97a), the autoload files take
    Stefan> +        ;; care of changing the `load-path', so maybe it's time to
    Stefan> +        ;; remove this fallback code?
    Stefan> +        (unless (or (member (file-name-as-directory pkg-dir) load-path)
    Stefan> +                    (member (directory-file-name pkg-dir) load-path))
    Stefan> +          (add-to-list 'load-path pkg-dir)))

    Stefan> Maybe we can have that patch in emacs-29 and remove the code altogether
    Stefan> on `master`?

That seems reasonable. Eli?

Robert
--