On Tue, 1 Nov 2016 09:29:09 +0000
Sergei Trofimovich <sly...@gentoo.org> wrote:

> > 4. What are the common tasks that you find unnecessarily complex /
> > lengthy with the current version specifications?
> Problem 1:
> Sometimes upstream decides that one of their dependencies
> is broken on a version range (package compiles but does
> horrible things due to accidental semantic change in a dependency)
> Common example is aeson. Upstream dependency looks like:
>     || ( ( >=aeson-0.5 <aeson-0.10 )
>           ( >=aeson-0.11 <aeson-1.2 ) )

So version ranges with exclusions. How many versions usually need to be
excluded? Is this usually limited to a few versions? Are the versions
very specific or would you need to restrict them e.g. 0.10*?

> Problem 2:
> Haskell ABI it a SUM of:
> - ABIs of its dependency libraries
> - own exports
> Library version is a part of that library ABI.
> Thus library ABI is guaranteed to change every library release.
> It means that once end user merges a library version bump
> user needs to rebuild all library's transitive reverse dependencies.
> Sometimes library is deep in the dependency chain (5-10 levels deep).
> There is no way to express that style of dependency in portage:
>     https://bugs.gentoo.org/show_bug.cgi?id=449094
> and app-admin/haskell-updater is still a needed thing to restore
> world sanity after a library upgrade.

Just to be clear, I was asking purely about versions and not
slots/subslots and other magic like that. However, while at it I should
point out that the spec doesn't really cover pure-DEPEND :=, so there
is no guarantee that Haskell := operators will work at all.

Best regards,
Michał Górny

Attachment: pgp75IiURfNCW.pgp
Description: OpenPGP digital signature

Reply via email to