Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 318631 - [Haskell] parsec3 use flag
Summary: [Haskell] parsec3 use flag
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Gentoo's Haskell Language team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-05-05 15:50 UTC by Maciej Piechotka
Modified: 2012-03-16 23:01 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Maciej Piechotka 2010-05-05 15:50:11 UTC
Currently some packages depends on parsec without any qualifier. However some packages still uses parsec 2 and some packages uses new features of parsec 3.

Currently it narrower package depends on more generic package it will result in warning and possible troubles as internals of parsecs are different.

Possible solutions:
 - Get rid of slotting parsecs and patch all packages in repository (can be quite easy as it probably involves changing one line in .cabal). Possibly allowing parsec 3 to be in platform instead of 2.
 - Mark the packages as parsec3. As in EAPI 3 the packages may specifiy need for specifing USE flags it may work as:
    DEPEND=">=dev-haskell/network-x.y.z[parsec3]"


Reproducible: Always
Comment 1 Ivan 2010-05-11 02:09:37 UTC
(In reply to comment #0)
> Currently some packages depends on parsec without any qualifier. However some
> packages still uses parsec 2 and some packages uses new features of parsec 3.
> 
> Currently it narrower package depends on more generic package it will result in
> warning and possible troubles as internals of parsecs are different.

Actually, Parsec-3 should be API compatible with Parsec-2.

> Possible solutions:
>  - Get rid of slotting parsecs and patch all packages in repository (can be
> quite easy as it probably involves changing one line in .cabal). Possibly
> allowing parsec 3 to be in platform instead of 2.

1) We are wary of doing such patching/editing as we prefer to keep things upstream (e.g. Pandoc: John MacFarlane doesn't want to use Parsec-3 yet as its efficiency has only recently been improved; furthermore, he uses Debian and Parsec-3 is still not available there so he can't/refuses to test it).

2) We can't change the platform; it is a set collection of packages designated as a base standard.

>  - Mark the packages as parsec3. As in EAPI 3 the packages may specifiy need
> for specifing USE flags it may work as:
>     DEPEND=">=dev-haskell/network-x.y.z[parsec3]"

That doesn't make sense4.  Furthermore, that's in EAPI-2, not 3 and we don't yet have support for any EAPI greater than 0 in hackport.  Furthermore, if we were going to do this we'd first be dealing with the profile USE flag problem, not this.

If you don't want parsec-3, then mask it (it's a separate slot for a reason).
Comment 2 Maciej Piechotka 2010-05-11 03:15:26 UTC
(In reply to comment #1)
> (In reply to comment #0)
> > Currently some packages depends on parsec without any qualifier. However some
> > packages still uses parsec 2 and some packages uses new features of parsec 3.
> > 
> > Currently it narrower package depends on more generic package it will result in
> > warning and possible troubles as internals of parsecs are different.
> 
> Actually, Parsec-3 should be API compatible with Parsec-2.
> 

It implements the API of the parsec 2.

> >  - Mark the packages as parsec3. As in EAPI 3 the packages may specifiy need
> > for specifing USE flags it may work as:
> >     DEPEND=">=dev-haskell/network-x.y.z[parsec3]"
> 
> That doesn't make sense.

Given that there could be a problems with diamond dependencies (A is linked with parsec 2.1, B is linked with 3. If C uses A and B it may cases problems). At least it does not passes checks (ghc-pkg -c) and it 'confuses' cabal-install. Such USE flag would help to avoid such problems.

> Furthermore, that's in EAPI-2, not 3

My 'spelling' mistake.

> (...)
> If you don't want parsec-3, then mask it (it's a separate slot for a reason).
> 

Actually what I want is parsec-3 and ability to install via cabal-install (please don't say that I should not mix portage/overlay and cabal-install - I understend that in overlay there may not be 0-day packages dumps but sometimes in development enviroment they have to be, overlay does not have many packages I need and even if they do exist I'd still prefere to install some of them in $HOME as they rather belongs to dev enviroment then system).
Comment 3 Sergei Trofimovich (RETIRED) gentoo-dev 2010-07-13 13:11:31 UTC
> Actually what I want is parsec-3 and ability to install via cabal-install
> (please don't say that I should not mix portage/overlay and cabal-install - I
> understend that in overlay there may not be 0-day packages dumps but sometimes
> in development enviroment they have to be, overlay does not have many packages
> I need and even if they do exist I'd still prefere to install some of them in
> $HOME as they rather belongs to dev enviroment then system).

You can mask =parsec=-2* and fix everything what breaks. cabal-install forces parsec-2 via 'preferred-versions' mechanism (the file in ~/.cabal/packages/hackage.haskell.org/00-index.tar).

I've pushed[1] the USE=noprefs flag to overlay's cabal-install to disabble this strange "feature", which likes to hide breakages and makes cabal-install virtually unusable in gentoo (especially on ghc-6.12+, thanks to abi code in package versions).

[1]: http://code.haskell.org/gentoo/gentoo-haskell/dev-haskell/cabal-install/cabal-install-0.8.2.ebuild
Comment 4 Sergei Trofimovich (RETIRED) gentoo-dev 2012-03-16 23:01:00 UTC
Unslotted parsec (now in main tree).