bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#53885: Autoload package-installed-p


From: Corwin Brust
Subject: bug#53885: Autoload package-installed-p
Date: Wed, 9 Feb 2022 09:39:46 -0600

Hi Augusto!

On Wed, Feb 9, 2022, 08:39 Augusto Stoffel <arstoffel@gmail.com> wrote:

By the way, there are two issues with this code snippet.  First, you
should call '(package-refresh-contents)' to make sure you have the
package list from MELPA.

I believe this was changed with the implementation of "early-init".  We don't need to expressly call `package-refresh-contents' since Emacs 27, see:
https://github.com/emacs-mirror/emacs/blob/master/etc/NEWS.27#L227



'use-package' would be subject to removal by 'package-autoremove'.  To
fix this, something like

    (add-hook 'after-init-hook
              (lambda () (package--update-selected-packages '(use-package) nil)))

is needed.

I wasn't aware of this idiosyncrasy. I will look at package.el further  FTR, in my own configuration I expressly set-up package-selected-packages.

In any case, this bug report stems from a Reddit user's perception of breakage with the Emacs 28 pre-release binaries recently added to alpha.  I simply created a minimal reproducer from that person's use/expectations.

Do you agree the (corrected) reproducer given should be sufficient to demonstrate the change provided by adding the autoload, if the patch is applied?

As things stand presently, I'm having trouble thinking of use-cases for package-installed-p that would not start with (require 'package).


I think a more user-friendly 'package-ensure-installed' function is in
order here.  I believe the use-package package provides some
functionality for this, but there is no good built-in equivalent (which
is needed even by use-package users).

I love this idea.  Would you be interested to open a new bug report for this feature request, perhaps offering a patch if you are so inclined?  

FWIW, I agree that ,if/when something more robust is added expressly to support the batch installation of packages, the need for this autoload (and perhaps all user-facing use-cases for package-installed-p) may be greatly reduced.  

That said, it's not clear to me whether general consensus will be to support a "default automation" function (or functions) for this, or that what we have is "enough" for each of us to do things as we wish.  It might make sense to open a discussion on the development list to discuss this potential improvement.

Finally, in case it may help, here is a formula I have often used to 'bootstrap' a batch install of packages:

(setq package-selected-packages '(foo bar baz))
(mapc (lambda(pkg) (when (not (require pkg nil t) (package-install pkg)) package-selected-packages)

For myself, I'm not using `package-autoremove'.  I typically remove (actually rename, usually) my ELPA folder and then relaunch Emacs.  My configuration (just like the user on behalf of whom I reported this "bug"), will then install the features I'm (still) using. I'm glad you are watching out for people who do use the auto-remove package feature.

Regards,
Corwin

reply via email to

[Prev in Thread] Current Thread [Next in Thread]