-
-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature]: Automatically upgrade built-in package when dependent requires newer version #272
Comments
Please use the output of
You can install a newer version of seq by adding a declaration for it. e.g. (elpaca seq) You'll also want to see #270, as seq is a pre-loaded, core package.
Magit can be installed. It's just that the Emacs version you're using did not satisfy the latest version of magit's minimum requirement for seq. So you'll either need to update seq as above, or install a version of magit compatible with the built-in version of seq for your Emacs. e.g. (elpaca (magit :tag "v3.3.0"))
I'm not sure what you mean.
That's currently how it works. See the documentation for the :inherit recipe keyword as well as the manual section on recipe inheritance.
I'm not convinced that should be the default behavior. |
I didn't have this issue with Automatically installing an older version of magit is less problematic than updating the built-in seq. |
package.el recently added the
Again, that can be specified in the declaration. e.g.
If that works better for you, then I suggest doing that via the means I've shown in this thread for now. Elpaca ships with nearly 6K recipes, but they're not going to be perfect for every situation. In those cases, users should alter the recipe to meet their needs. |
For the record, this is how I installed magit following the advice I found in the issues (defun +elpaca-unload-seq (e)
(and (featurep 'seq) (unload-feature 'seq t))
(elpaca--continue-build e))
(defun +elpaca-seq-build-steps ()
(append (butlast (if (file-exists-p (expand-file-name "seq" elpaca-builds-directory))
elpaca--pre-built-steps elpaca-build-steps))
(list '+elpaca-unload-seq 'elpaca--activate-package)))
(use-package seq
:ensure `(seq :build ,(+elpaca-seq-build-steps)))
(use-package transient :ensure t)
(use-package magit :ensure t) but then I decided to be reasonable and I started over with simply (use-package magit :ensure (:tag "v3.3.0")) |
I agree with OP, I was about to open the exact same issue. My initfiles have this, which corrects the problem, but I worry about users who do not:
because more and more packages now depend on Transient features that come after the 0.4.3 version that came with Emacs 29. This one just for example melpa/melpa#9131. It breaks the flow where you are supposed to be able to install a package and pull in all the dependencies that package needs. If a pacakge literally lists I understand this info is not in the MELPA recipe, so not sure how I would fix that other than inspecting all source files... Anyway, the problem will have to fall into someone's lap, the question is just whose. As a packager, if there are package managers out there that won't install the Transient I declare as minimum, I have no choice but to either stick with Transient 0.4 features or drop support for Emacs 29, requiring Emacs 30 minimum in my package.
In theory, this might be. But in practice, using Straight "just works" whereas using Elpaca does not. Part of the issue is that Emacs ecosystem does not really have versioning infrastructure -- the name "MELPA Stable" is misleading, for example. So perhaps it is jumping the gun to worry overmuch about retaining the "stable" version of something. As long as the ecosystem is like this, you get the best stability by staying on everyone's master branch anyway. |
It does react. It will signal an error if the dependency cannot be satisfied. From there the user can decide whether they'd like to update transient or downgrade/skip the package which requires a newer version.
Straight ignores the problem altogether, which leads to confusing bugs down the road for users and package maintainers. |
Oh, I must've forgotten that. Sorry, that's good then. |
Confirmation
Elpaca Version
Elpaca 4e68fdf
Operating System
Gentoo Linux
Description
I know this issue was closed previously, but it is still not fixed.
I tried elpaca today, and discovered that I could not install magit because elpaca doesn't install a newer version of seq from elpa, melpa, or any other repository because it is already installed as a built-in package.
The fact that magit cannot be installed by default is an issue.
It seems to me that elpaca should not care which repository a package comes from by default.
If a newer version of seq is required and is only available from elpa or melpa, it should be installed.
Restricting the source of a package to a specific repository should be something users explicitly choose to do.
What about preferring built-in packages by default, but installing third party packages if required?
The text was updated successfully, but these errors were encountered: