cli icon indicating copy to clipboard operation
cli copied to clipboard

Built-in packages are not updated when listed as dependencies

Open joshbax189 opened this issue 4 weeks ago • 3 comments

This originated from https://github.com/Silex/docker.el/pull/244

Emacs 28 included transient as a built in package (version 0.3.7), the package Docker.el requires a later version than the built in package.

When including transient as a project dependency:

(package "docker"
         "2.3.1"
         "Interface to Docker")
;; other packages
(depends-on "transient" "0.10.1")

And then running eask install-deps

Get this output

Installing 5 package dependencies...

  - [1/5] Installing aio (1.0)... done v
  - [2/5] Installing dash (2.20.0)... done v
  - [3/5] Installing s (1.13.0)... done v
  - [4/5] Installing tablist (1.1)... done v
  - [5/5] Skipping transient (0.10.1)... already installed X

(Total of 4 dependencies installed, 1 skipped)

However, transient has not been upgraded to 0.10.1 as described.

joshbax189 avatar Oct 31 '25 23:10 joshbax189

This is due to inconsistent behavior in package.el.

  • When transient is installed directly, package.el checks the name only.
  • When transient is installed as a dependency (e.g. by running (package install 'docker)), the newer version is installed.

You can work around this by installing the project as a package, rather than by using eask install in that specific case. See https://github.com/Silex/docker.el/pull/244 for an example in CI.

joshbax189 avatar Oct 31 '25 23:10 joshbax189

Yes, this is one of the most significant issues, but I don't think Eask should address it; instead, it should be fixed upstream in package.el. 🤔

jcs090218 avatar Nov 01 '25 06:11 jcs090218

(Oops I originally wrote eask install when I meant eask install-deps, but the behavior is the same in both cases)

it should be fixed upstream in package.el

Yeah I agree about the underlying issue, Eask should probably stay as a package.el wrapper.

joshbax189 avatar Nov 04 '25 23:11 joshbax189