Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 317547 - dev-haskell/time-1.2 should be masked
Summary: dev-haskell/time-1.2 should be masked
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-04-27 23:13 UTC by Maciej Piechotka
Modified: 2010-04-30 13:40 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-04-27 23:13:40 UTC
dev-haskell/time is core package and is installed with ghc. While it is possible to keep 2 version of library in system:

1. It is waste of space
2. It confuses cabal (during installing in $HOME it wants to reinstall packages to make it linked with correct version of package)
3. In general it may cause problems if underlaying data has changed due to cross-module inlining. (Probably not a case of time)

Additionally the only package, at least in haskell-platform, depending on external time is dev-haskell/cabal-install. It compiles fine with ghc time.
Comment 1 Ivan 2010-04-30 02:49:35 UTC
(In reply to comment #0)
> dev-haskell/time is core package and is installed with ghc. While it is
> possible to keep 2 version of library in system:

Only since 6.12.1.  Also, have a look at the ebuild (http://code.haskell.org/gentoo/gentoo-haskell/dev-haskell/time/time-1.1.4.ebuild):

    CABAL_CORE_LIB_GHC_PV="6.12.1 6.12.2"

This means that it doesn't get recompiled and installed on those versions of GHC (the LICENSE file still gets installed I think, but that's it).

We do also offer time-1.2.0.1 (which should be updated to 1.2.0.2) in the overlay, but that's because some packages require it.

> 1. It is waste of space

No it isn't, as only two files (LICENSE and a file containing just [] in /usr/lib/ghc-6.12.x/gentoo/time-1.1.4.conf) are actually installed.

> 2. It confuses cabal (during installing in $HOME it wants to reinstall packages
> to make it linked with correct version of package)


Huh?  You mean cabal-install rather than cabal?  This "confusion" is due to there being two major releases of time currently being used: 1.1.4 and 1.2.0.1 (since some packages have migrated whereas others haven't).

> 3. In general it may cause problems if underlaying data has changed due to
> cross-module inlining. (Probably not a case of time)

Not sure what you're talking about here, but you can't have a Haskell package transitively depend on two different versions of the same Haskell library (the Diamond Dependency Problem).
 
> Additionally the only package, at least in haskell-platform, depending on
> external time is dev-haskell/cabal-install. It compiles fine with ghc time.

There are more packages than just found in the Platform, see http://bifunctor.homelinux.net/~roel/cgi-bin/hackage-scripts/revdeps/time-1.2.0.2#direct for packages that use the time library.

Methinks this should be marked "WONTFIX".

Comment 2 Ivan 2010-04-30 02:53:13 UTC
One other thing: Haskell packages installed either by hand or manually using cabal-install in your home directory are not supported by us; if there's a problem with them then don't blame our packages.

But I fail to see why you would anyway; is there some package you desperately need that we don't have in the overlay?
Comment 3 Maciej Piechotka 2010-04-30 10:22:11 UTC
(In reply to comment #2)
> One other thing: Haskell packages installed either by hand or manually using
> cabal-install in your home directory are not supported by us; if there's a
> problem with them then don't blame our packages.
> 

I will if the problem is the system set which is linked against 2 different time packages I will blame. Because it was system packages that were installed against time-1.1.4 and 1.2.0.1 at the same time

(In reply to comment #1)
> (In reply to comment #0)
> > dev-haskell/time is core package and is installed with ghc. While it is
> > possible to keep 2 version of library in system:
> 
> Only since 6.12.1.  Also, have a look at the ebuild
> (http://code.haskell.org/gentoo/gentoo-haskell/dev-haskell/time/time-1.1.4.ebuild):
> 
>     CABAL_CORE_LIB_GHC_PV="6.12.1 6.12.2"
> 
> This means that it doesn't get recompiled and installed on those versions of
> GHC (the LICENSE file still gets installed I think, but that's it).
> 

Yes. But it is installed twice - as 1.1.4 and 1.2.0.1

> We do also offer time-1.2.0.1 (which should be updated to 1.2.0.2) in the
> overlay, but that's because some packages require it.
> 

Well. The problem is that:
1. None package is in overlay actually requires anything new:
% % find /usr/portage/local/haskell | xargs grep dev-haskell/time
/usr/portage/local/haskell/games-puzzle/raincat/raincat-1.1.1.ebuild:		dev-haskell/time"
/usr/portage/local/haskell/x11-misc/yeganesh/yeganesh-2.1.ebuild:        >=dev-haskell/time-1.1
Binary file /usr/portage/local/haskell/_darcs/index matches
/usr/portage/local/haskell/dev-util/darcs-graph/darcs-graph-1.0.ebuild:		dev-haskell/time"
/usr/portage/local/haskell/app-editors/yi/yi-0.6.1.ebuild:		=dev-haskell/time-1.1*
/usr/portage/local/haskell/app-editors/leksah-server/leksah-server-0.8.0.2.ebuild:		>=dev-haskell/time-1.1"
/usr/portage/local/haskell/app-editors/leksah/leksah-0.8.0.1.ebuild:		>=dev-haskell/time-0.1
/usr/portage/local/haskell/app-editors/leksah/leksah-9999.ebuild:		>=dev-haskell/time-0.1
/usr/portage/local/haskell/www-misc/feed-cli/feed-cli-2008.5.3.ebuild:		dev-haskell/time
/usr/portage/local/haskell/projects/ghc-packages/ghc-extra-6.8.2:dev-haskell/time-1.1.2.0
/usr/portage/local/haskell/projects/ghc-packages/ghc-extra-6.8.3:dev-haskell/time-1.1.2.1
/usr/portage/local/haskell/projects/ghc-packages/haskell-platform-2009.0.0:dev-haskell/time-1.1.2.4
/usr/portage/local/haskell/projects/ghc-packages/ghc-extra-6.10.1:dev-haskell/time-1.1.2.2
/usr/portage/local/haskell/projects/ghc-packages/ghc-core-6.12.1:dev-haskell/time-1.1.4
/usr/portage/local/haskell/projects/ghc-packages/haskell-platform-2009.2.0.1:dev-haskell/time-1.1.2.4
/usr/portage/local/haskell/projects/ghc-packages/haskell-platform-2009.2.0.2:dev-haskell/time-1.1.2.4
/usr/portage/local/haskell/projects/GHC-6.5-failures.rst:dev-haskell/time-1.0
/usr/portage/local/haskell/projects/GHC-6.6-launch.html:<li>dev-haskell/time</li>
/usr/portage/local/haskell/projects/GHC-6.5-failures.html:<h2><a id="dev-haskell-time-1-0" name="dev-haskell-time-1-0">dev-haskell/time-1.0</a></h2>
/usr/portage/local/haskell/projects/GHC-6.6-launch.rst:* dev-haskell/time
/usr/portage/local/haskell/dev-haskell/hdbc/hdbc-2.1.1.ebuild:		>=dev-haskell/time-1.1.2.4
/usr/portage/local/haskell/dev-haskell/pcap/pcap-0.4.4.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/hslogger/hslogger-1.0.7.ebuild:		dev-haskell/time"
/usr/portage/local/haskell/dev-haskell/filestore/filestore-0.3.4.ebuild:	dev-haskell/time
/usr/portage/local/haskell/dev-haskell/hstringtemplate/hstringtemplate-0.6.2.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/happstack-util/happstack-util-0.3.2.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/datetime/datetime-0.1.ebuild:		>=dev-haskell/time-1.1.2.2"
/usr/portage/local/haskell/dev-haskell/actor/actor-0.1.1.ebuild:		dev-haskell/time"
/usr/portage/local/haskell/dev-haskell/chart/chart-0.13.ebuild:		dev-haskell/time"
/usr/portage/local/haskell/dev-haskell/ztail/ztail-1.0.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/control-timeout/control-timeout-0.1.1.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/control-timeout/control-timeout-0.1.2.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/hdbc-sqlite/hdbc-sqlite-2.1.0.0.ebuild:	dev-haskell/time
/usr/portage/local/haskell/dev-haskell/happstack-server/happstack-server-0.3.3.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/buster/buster-2.51.ebuild:		dev-haskell/time"
/usr/portage/local/haskell/dev-haskell/haskell-platform/haskell-platform-2009.2.0.2.ebuild:		>=dev-haskell/time-1.1.2.4
/usr/portage/local/haskell/dev-haskell/hoogle/hoogle-4.0.7.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/hdbc-postgresql/hdbc-postgresql-2.1.0.0.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/criterion/criterion-0.5.0.0.ebuild:	dev-haskell/time
/usr/portage/local/haskell/dev-haskell/dimensional/dimensional-0.8.ebuild:	dev-haskell/time"
/usr/portage/local/haskell/dev-haskell/gnuplot/gnuplot-0.3.4.ebuild:		>=dev-haskell/time-1.1
/usr/portage/local/haskell/dev-haskell/hdbc-odbc/hdbc-odbc-2.1.0.0.ebuild:	dev-haskell/time
/usr/portage/local/haskell/dev-haskell/statistics/statistics-0.5.1.0.ebuild:	dev-haskell/time
/usr/portage/local/haskell/dev-haskell/wxcore/wxcore-0.11.1.2.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/mwc-random/mwc-random-0.5.0.0.ebuild:	dev-haskell/time
/usr/portage/local/haskell/dev-haskell/convertible/convertible-1.0.9.ebuild:	<=dev-haskell/time-1.1.4"
/usr/portage/local/haskell/dev-haskell/convertible/convertible-1.0.6.ebuild:	~dev-haskell/time-1.1.2.4"
/usr/portage/local/haskell/dev-haskell/graphalyze/graphalyze-0.9.0.0.ebuild:	dev-haskell/time"
mpiechotka@localhost ~ % find /usr/portage/local/haskell | grep ebuild | xargs grep dev-haskell/time
/usr/portage/local/haskell/games-puzzle/raincat/raincat-1.1.1.ebuild:		dev-haskell/time"
/usr/portage/local/haskell/x11-misc/yeganesh/yeganesh-2.1.ebuild:        >=dev-haskell/time-1.1
/usr/portage/local/haskell/dev-util/darcs-graph/darcs-graph-1.0.ebuild:		dev-haskell/time"
/usr/portage/local/haskell/app-editors/yi/yi-0.6.1.ebuild:		=dev-haskell/time-1.1*
/usr/portage/local/haskell/app-editors/leksah-server/leksah-server-0.8.0.2.ebuild:		>=dev-haskell/time-1.1"
/usr/portage/local/haskell/app-editors/leksah/leksah-0.8.0.1.ebuild:		>=dev-haskell/time-0.1
/usr/portage/local/haskell/app-editors/leksah/leksah-9999.ebuild:		>=dev-haskell/time-0.1
/usr/portage/local/haskell/www-misc/feed-cli/feed-cli-2008.5.3.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/hdbc/hdbc-2.1.1.ebuild:		>=dev-haskell/time-1.1.2.4
/usr/portage/local/haskell/dev-haskell/pcap/pcap-0.4.4.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/hslogger/hslogger-1.0.7.ebuild:		dev-haskell/time"
/usr/portage/local/haskell/dev-haskell/filestore/filestore-0.3.4.ebuild:	dev-haskell/time
/usr/portage/local/haskell/dev-haskell/hstringtemplate/hstringtemplate-0.6.2.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/happstack-util/happstack-util-0.3.2.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/datetime/datetime-0.1.ebuild:		>=dev-haskell/time-1.1.2.2"
/usr/portage/local/haskell/dev-haskell/actor/actor-0.1.1.ebuild:		dev-haskell/time"
/usr/portage/local/haskell/dev-haskell/chart/chart-0.13.ebuild:		dev-haskell/time"
/usr/portage/local/haskell/dev-haskell/ztail/ztail-1.0.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/control-timeout/control-timeout-0.1.1.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/control-timeout/control-timeout-0.1.2.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/hdbc-sqlite/hdbc-sqlite-2.1.0.0.ebuild:	dev-haskell/time
/usr/portage/local/haskell/dev-haskell/happstack-server/happstack-server-0.3.3.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/buster/buster-2.51.ebuild:		dev-haskell/time"
/usr/portage/local/haskell/dev-haskell/haskell-platform/haskell-platform-2009.2.0.2.ebuild:		>=dev-haskell/time-1.1.2.4
/usr/portage/local/haskell/dev-haskell/hoogle/hoogle-4.0.7.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/hdbc-postgresql/hdbc-postgresql-2.1.0.0.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/criterion/criterion-0.5.0.0.ebuild:	dev-haskell/time
/usr/portage/local/haskell/dev-haskell/dimensional/dimensional-0.8.ebuild:	dev-haskell/time"
/usr/portage/local/haskell/dev-haskell/gnuplot/gnuplot-0.3.4.ebuild:		>=dev-haskell/time-1.1
/usr/portage/local/haskell/dev-haskell/hdbc-odbc/hdbc-odbc-2.1.0.0.ebuild:	dev-haskell/time
/usr/portage/local/haskell/dev-haskell/statistics/statistics-0.5.1.0.ebuild:	dev-haskell/time
/usr/portage/local/haskell/dev-haskell/wxcore/wxcore-0.11.1.2.ebuild:		dev-haskell/time
/usr/portage/local/haskell/dev-haskell/mwc-random/mwc-random-0.5.0.0.ebuild:	dev-haskell/time
/usr/portage/local/haskell/dev-haskell/convertible/convertible-1.0.9.ebuild:	<=dev-haskell/time-1.1.4"
/usr/portage/local/haskell/dev-haskell/convertible/convertible-1.0.6.ebuild:	~dev-haskell/time-1.1.2.4"
/usr/portage/local/haskell/dev-haskell/graphalyze/graphalyze-0.9.0.0.ebuild:	dev-haskell/time"

2. It gets updated automatically even when not needed and causes problem (at least in cabal-install mind)

> > 1. It is waste of space
> 
> No it isn't, as only two files (LICENSE and a file containing just [] in
> /usr/lib/ghc-6.12.x/gentoo/time-1.1.4.conf) are actually installed.
> 

But I get updated to 1.2.0.1 which do install other library files.

> > 2. It confuses cabal (during installing in $HOME it wants to reinstall packages
> > to make it linked with correct version of package)
> 
> 
> Huh?  You mean cabal-install rather than cabal?

Yes.

> This "confusion" is due to
> there being two major releases of time currently being used: 1.1.4 and 1.2.0.1
> (since some packages have migrated whereas others haven't).
> 

Hmm. The only package I required that depended (in ebuild terms) on time was dev-haskell/cabal-install which didn't cared which version it is using. cabal and cabal-install chooses the newest version so I got packages that were linked against different version of time and hence there were installed.

And with ghc is installed older version - apparently sufficient for all version in overlay.

> > Additionally the only package, at least in haskell-platform, depending on
> > external time is dev-haskell/cabal-install. It compiles fine with ghc time.
> 
> There are more packages than just found in the Platform, see
> http://bifunctor.homelinux.net/~roel/cgi-bin/hackage-scripts/revdeps/time-1.2.0.2#direct
> for packages that use the time library.
> 

Please note that it lists all libraries that can be installed with 1.2.0.2 even if it is sufficient to use 1.1.4.
For example see random (on top of list) that requires just time.

> Methinks this should be marked "WONTFIX".
> 

I guess that dev-haskell/time-1.2* should not be installed by default with ghc-6.12/haskell-platform[1] as it causes dimond shape dependencies. It is impossible that random (and few others) will be linked against anything else then core time. So in this case it is hard to avoid dimond shape dependencies against different version of haskell.

[1] As it does as dev-haskell/cabal-install requires dev-haskell/time. So paludis/emerge checks which is the newest version (1.2.0.1) and installs it. It will not even consider 1.1.4 as it is older.
Comment 4 Ivan 2010-04-30 11:28:43 UTC
Sorry, I forgot that since time does come with GHC then it means that haskell-updater won't rebuild any packages that depend upon 1.1.4 because it _is_ still installed.  As such, it will require manual recompilation to avoid duplicate dependencies (we can't really automate this as there are some libraries such as parsec in which it is valid to have different versions installed).

Whilst no libraries explicitly require time 1.2 so far, it is possible they will in the future.  As such, we won't remove time 1.2 but we might mask it.

And time-1.2 _won't_ be installed by default with the platform, as it explicitly specifies 1.1.4.
Comment 5 Maciej Piechotka 2010-04-30 12:15:30 UTC
(In reply to comment #4)
> Sorry, I forgot that since time does come with GHC then it means that
> haskell-updater won't rebuild any packages that depend upon 1.1.4 because it
> _is_ still installed.  As such, it will require manual recompilation to avoid
> duplicate dependencies (we can't really automate this as there are some
> libraries such as parsec in which it is valid to have different versions
> installed).
> 

I'm not quite sure if when ghc will be rebuild it will be linked against the external time instead of just build core.

> Whilst no libraries explicitly require time 1.2 so far, it is possible they
> will in the future.  As such, we won't remove time 1.2 but we might mask it.
> 

Sounds good. I guess it will when ghc will remove time/update to time 1.2 as most devs won't update time.

> And time-1.2 _won't_ be installed by default with the platform, as it
> explicitly specifies 1.1.4.
> 

Ups. sorry - I used 2010 (from overlay). So while it won't know it would be in future.
Comment 6 Ivan 2010-04-30 13:16:59 UTC
(In reply to comment #5)
> I'm not quite sure if when ghc will be rebuild it will be linked against the
> external time instead of just build core.

Nope, it will use its own internal libraries.

Anyway, I've now masked it in the overlay.
Comment 7 Lennart Kolmodin (RETIRED) gentoo-dev 2010-04-30 13:40:44 UTC
In portage the highest version is 1.1.4.
In the overlay version 1.2.0.1 has been masked by Ivan, thanks!

Closing as fixed.

Thanks for the report!