emacs-eldev / eldev

Elisp development tool
https://emacs-eldev.github.io/eldev/
GNU General Public License v3.0
227 stars 17 forks source link

Install specific version of package / upgrade built-in package / deal with org-mode #18

Closed Trevoke closed 4 years ago

Trevoke commented 4 years ago

Hi folks,

I'm working on a package that requires a more recent version of org-mode than ships with most versions of emacs (the build passes with 27.1). So I need to ask eldev to install a more recent version of org-mode. How do I do this with eldev?

doublep commented 4 years ago

Your project needs to declare the dependency on the correct version, either in its main .el file or in PROJECT-NAME-pkg.el. Then you need form (eldev-use-package-archive 'gnu) in file Eldev. Installation should happen automatically, you don't need any special steps for it (but can run eldev prepare if you want to force it).

It seems that earlier versions of Emacs (up to 25) cannot tell versions of their built-in packages, so org will be always installed on those, because Eldev will think the built-in version is too old.

Trevoke commented 4 years ago

eldev prepare fixed it, thanks! It might be worth calling this out explicitly in the readme?

doublep commented 4 years ago

It is mentioned there, search for it. However, it is optional: everything that needs dependencies (e.g. eldev test) installs them first, if you haven't executed eldev prepare explicitly before. If you find a situation where this is not true, then it is a bug.

Trevoke commented 4 years ago

In that case I should argue that I came across a bug, I think?

--

Aldric. Sent from a mobile device.

On Fri, Aug 21, 2020, 05:53 Paul Pogonyshev notifications@github.com wrote:

Closed #18 https://github.com/doublep/eldev/issues/18.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/doublep/eldev/issues/18#event-3678881459, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAQSSKYYIJZLZ2FYC3GARTSBY7ZLANCNFSM4QGGE3KA .

doublep commented 4 years ago

What are the steps to reproduce it? When exactly do you have a problem with missing dependency?

doublep commented 4 years ago

Actually, I have reproduced the problem, but I don't see how eldev prepare helped in your case.

~/git/org-gtd.el$ eldev clean all
Deleted 1 directory
~/git/org-gtd.el$ EMACS=emacs-26.3 eldev prepare
Importing package-keyring.gpg...
Importing package-keyring.gpg...done
Importing package-keyring.gpg...
Importing package-keyring.gpg...done
[1/5] Installing package ‘org-edna’ (1.1.1) from ‘gnu’...
[2/5] Installing package ‘s’ (1.12.0) from ‘melpa-stable’...
[3/5] Installing package ‘dash’ (2.12.0) from ‘gnu’...
[4/5] Installing package ‘f’ (0.20.0) from ‘melpa-stable’...
[5/5] Installing package ‘org-agenda-property’ (1.3.1) from ‘melpa-stable’...
~/git/org-gtd.el$ EMACS=emacs-26.3 eldev eval "(org-version)"
[1/1] Installing package ‘buttercup’ (1.23) from ‘melpa-stable’...
"9.1.9"

Expected is at least 9.3.1 according to the declared dependencies.

doublep commented 4 years ago

As a workaround, make sure that dependency on Org is declared before the dependency on org-edna. I.e.:

 ;; Author: Aldric Giacomoni <trevoke@gmail.com>
 ;; Version: 1.0.2
 ;; Homepage: https://github.com/Trevoke/org-gtd.el
-;; Package-Requires: ((emacs "26.1") (org-edna "1.0.2") (f "0.20.0") (org "9.3.1") (org-agenda-property "1.3.1"))
+;; Package-Requires: ((emacs "26.1") (org "9.3.1") (org-edna "1.0.2") (f "0.20.0") (org-agenda-property "1.3.1"))

 ;; This file is not part of GNU Emacs.
doublep commented 4 years ago

Fix released as part of 0.7.