Subject: Re: bug#16826: Packages with same dependencies (name and version) fails to install
From: Dmitry Gutov <[email-masked]>
To: Johan Andersson <[email-masked]>
Cc: [email-masked]
Date: Fri, 21 Mar 2014 08:12:54 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Version: 24.4

Johan Andersson <[email-masked]> writes:

> Let's say I have three packages: foo, bar and baz.
>
> Package foo depends on bar-0.0.1 and baz-0.0.1.
> Package bar depends on baz-0.0.1.
>
> It's important that foo and bar depends on the same baz version.
>
> If I install package foo, I will get the following error:
>
>   "Need package `baz-0.0.1', but only 0.0.1 is available"

Thanks for the report, should be fixed in 116817, branch emacs-24.

Seems to have been a regression from revision 113174. Provided I didn't
break anything else, the fix was pretty simple.

> I have looked at the code of package.el and the code that throws the error
> makes no sense to me. It works like this:
>
> We want to install a list of packages and a list of requirements. If we try
> to install a requirement that is part of the list of packages, we set a
> variable called already. If already is true, we check if the requirement
> version is smaller than the already package version. If it is, we move that
> package to the beginning of the packages list. If it is not smaller, the
> error above is thrown. What? Why? I have no idea...

Now it checks if the requirement version is smaller or equal. The
package is moved to make the order of installation better (see the bug
referenced in the comment), and if the requirement version is higher
than the one scheduled to be installed, we're out of luck (but I've
tweaked the error message a bit).