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 <http://dev.gentoo.org/~mgorny/>
pgp75IiURfNCW.pgp
Description: OpenPGP digital signature