Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 259867 - dev-lang/ghc hard depends on readline-5
Summary: dev-lang/ghc hard depends on readline-5
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All All
: High normal (vote)
Assignee: Gentoo's Haskell Language team
URL:
Whiteboard:
Keywords:
: 259958 (view as bug list)
Depends on:
Blocks:
 
Reported: 2009-02-22 01:37 UTC by SpanKY
Modified: 2011-02-25 21:55 UTC (History)
11 users (show)

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 SpanKY gentoo-dev 2009-02-22 01:37:53 UTC
maybe this is a valid depend, but i doubt it ...

the hard depend on readline-5 prevents installation of readline-6
Comment 1 octoploid 2009-02-22 09:12:16 UTC
ghc-6.8.2 works fine with readline-6 here (amd64).
So please replace readline-5 with readline in the ebuild.

Thanks.
Comment 2 octoploid 2009-02-22 10:04:45 UTC
Maybe something like this:

--- ghc-6.8.2.ebuild	2008-10-04 12:35:49.000000000 +0200
+++ ghc-6.8.2-r1.ebuild	2009-02-22 11:03:15.755939127 +0100
@@ -57,7 +57,7 @@
 	>=sys-devel/binutils-2.17
 	>=dev-lang/perl-5.6.1
 	>=dev-libs/gmp-4.1
-	=sys-libs/readline-5*"
+	>=sys-libs/readline-5"
 
 DEPEND="${RDEPEND}
 	ghcbootstrap? (	doc? (	~app-text/docbook-xml-dtd-4.2
Comment 3 Lennart Kolmodin (RETIRED) gentoo-dev 2009-02-23 17:18:11 UTC
*** Bug 259958 has been marked as a duplicate of this bug. ***
Comment 4 Lennart Kolmodin (RETIRED) gentoo-dev 2009-02-23 20:23:28 UTC
Trouble is that our binaries used to bootstrap ghc are linked against readline-5.

 $ readelf -d usr/lib64/ghc-6.8.2/ghc-6.8.2 

Dynamic section at offset 0xef3dc0 contains 29 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libreadline.so.5]
[snap]

octoploid, building ghc only works as long as you keep your old readline-5 .sos around, like emerge does if you upgrade it while still having packages depending on it.

Simply changing the dependency would cause cause the ebuild to fail unless having both libreadline-5 and -6, and we obviously don't want that.

What are our options?
1) Having a statically liked binary for bootstrapping. This requires rebuilding of all the binaries though... not tempted to do this for stable ebuilds.

2) Let the stable ghc depend on the stable readline. GHC 6.10.1 is available from the overlay, and will be added we get bug #237882 solved. It's unfortunate though that the latest ghc doesn't work with the latest readline.

What else?

Are readline-5 and readline-6 ABI compatible?
Comment 5 SpanKY gentoo-dev 2009-02-23 21:56:44 UTC
if they were ABI compatible, they'd have the same SONAME

by bootstrapping, do you mean the ghc-bin packages ?  statically linking those against readline for now would seem like an OK workaround
Comment 6 Martin von Gagern 2009-02-23 23:14:09 UTC
(In reply to comment #4)
> What else?

3) ship precompiled readline 5 library along with bootstrap binaries.

You could include them using LD_LIBRARY_PATH from somewhere withing $WORKDIR. When you are dealing with precompiled binaries in any case, one precompiled lib won't hurt, will it? And getting those from the tinderboxes should be easy.
Comment 7 Lennart Kolmodin (RETIRED) gentoo-dev 2009-02-24 17:17:56 UTC
(In reply to comment #5)
> by bootstrapping, do you mean the ghc-bin packages ?  statically linking those
> against readline for now would seem like an OK workaround

Mmmm.. not the dev-lang/ghc-bin packages, no.

The binaries for the bootstrapping have been included into the regular dev-lang/ghc ebuild, there is no longer two separate ebuilds for this.

The old dev-lang/ghc-bin packages should be removed from the portage tree, they've been hard masked for a long time.

Statically linking to readline would indeed solve the issue. We support 8 arches though, so there is quite some work. Also, I've not yet figured out how to modify the build system in order to get a static executable.


(In reply to comment #6)
> (In reply to comment #4)
> > What else?
> 
> 3) ship precompiled readline 5 library along with bootstrap binaries.
> 
> You could include them using LD_LIBRARY_PATH from somewhere withing $WORKDIR.
> When you are dealing with precompiled binaries in any case, one precompiled lib
> won't hurt, will it? And getting those from the tinderboxes should be easy.

This sounds even more interesting. We could try to do a proper static build for the next ghc 6.10.1 version, but use this shorter path for our existing binaries.
I guess we would also have to remove the flag USE="binary" as it'd install a ghc that depended on readline-5. Bootstrapping with the precompiled readline would be ok, but it might not be such a good idea to install the precompiled lib :)
Comment 8 Lennart Kolmodin (RETIRED) gentoo-dev 2009-02-25 18:01:19 UTC
I've uploaded an ebuild to the overlay (based on the overlay ebuild which is slightly different) that does option (3) for x86.

http://code.haskell.org/gentoo/gentoo-haskell/dev-lang/ghc/ghc-6.8.2-r1.ebuild

Everybody agrees this is a good way to solve it? Seems like a nice and easy way to go to me.

Wed Feb 25 18:48:22 CET 2009  Lennart Kolmodin <kolmodin@gentoo.org>
  * Add a new ghc-6.8.2-r1 that works even if host system uses readline-6
  See gentoo bug #259867.
  This ebuild bundles a precompiled sys-libs/readline-5.2_p13 and uses that to
  make the bundled ghc binary work if the host machine has upgraded to
  readline-6. It sets the LD_LIBRARY_PATH flag into ${WORKDIR}/lib.

  To build precompiled readlines, run
    emerge -b '<sys-libs/readline-6'
  and name the resulting file like I've for the x86 in the ebuild.
  Edit the ebuild SRC_URI, KEYWORDS, and potentially the code that sets the
  LD_LIBRARY_PATH to handle /lib{,32,64}.
Comment 9 Juergen Rose 2009-02-26 13:57:05 UTC
I put the ebuild of comment #8 to /usr/local/portage/dev-lang/ghc . Did a 'ebuild ghc-6.8.2-r1.ebuild digest'. I have
PORTDIR_OVERLAY="/usr/local/portage" in /etc/make.conf and normally no problems with overlays. But 'emerge ghc' wants to emerge ghc-6.8.2 and not ghc-6.8.2-r1:
root@condor:/usr/local/portage/dev-lang/ghc(19)# emerge -pvD  ghc

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     UD] sys-libs/readline-5.2_p13 [6.0] 0 kB [0]
[ebuild  N    ] dev-lang/ghc-6.8.2  USE="bash-completion doc -binary -ghcbootstrap" 0 kB [1]

Total: 2 packages (1 downgrade, 1 new), Size of downloads: 0 kB
Portage tree and overlays:
 [0] /usr/portage
 [1] /usr/local/portage
Any idea?
Comment 10 Lennart Kolmodin (RETIRED) gentoo-dev 2009-02-26 19:49:01 UTC
When I made the new ebuild I changed the keywording from x86 to ~x86.

Have you got
dev-lang/ghc
in your /etc/portage/package.keywords file?
Comment 11 Juergen Rose 2009-02-28 13:02:41 UTC
Thanks. After adding 

dev-lang/ghc ~* *

to /etc/portage/package.keywords it works.
Comment 12 Martin von Gagern 2009-03-06 11:43:40 UTC
I did the whole cycle on ~x86: emerged ghc to get updated ebuild without fixed dependency, updated world, rebuilt to get rid of preserved readline 5, and emerged ghc again. So with the ebuild from overlay, compiling under both readline 5 and 6 seems to work well enough, and the migration path held no surprising obstacles for me either. Ready for main portage tree?
Comment 13 Lennart Kolmodin (RETIRED) gentoo-dev 2009-03-23 20:56:47 UTC
It seems it doesn't work with readline-5, emerge and FEATURES="collision-protect".

For some reason it seems to install the bundled readline-5?
Seems paludis does not have this trouble.
Comment 14 Sergei Trofimovich (RETIRED) gentoo-dev 2009-03-23 22:16:03 UTC
(In reply to comment #13)
> It seems it doesn't work with readline-5, emerge and
> FEATURES="collision-protect".
> 
> For some reason it seems to install the bundled readline-5?
> Seems paludis does not have this trouble.
> 

dev-lang/ghc-6.8.2-r1 works correctly if USE="-binary" (that's why paludis
might not detect that collision)

USE=binary will cause:
* readline-5 binary dependency:
    leads to troubles when upgrade to readline-6
    (fixable by reemerging ghc with USE="-binary")
* ghc will fail to emerge with FEATURES="collision-protect":
    ghc-bin will collide at installation with readline package: it's caused,
    because we just unpack 2 tarballs(ghc-bin+readline-5+bin) into 1 directory
    and declare it as resulting to-be-merged tree.
Comment 15 Lennart Kolmodin (RETIRED) gentoo-dev 2009-03-23 22:43:29 UTC
(In reply to comment #14)
> USE=binary will cause:
> * readline-5 binary dependency:
>     leads to troubles when upgrade to readline-6
>     (fixable by reemerging ghc with USE="-binary")
> * ghc will fail to emerge with FEATURES="collision-protect":
>     ghc-bin will collide at installation with readline package: it's caused,
>     because we just unpack 2 tarballs(ghc-bin+readline-5+bin) into 1 directory
>     and declare it as resulting to-be-merged tree.

Indeed, allowing USE=binary would introduce a hidden dependency to =readline-5, which is exactly what we don't want.
The merges of ghc-bin and readline was a bug, and will also go away if we disallow USE=binary.

Thus, I've updated the ghc-6.8.2-r1 ebuild in the overlay to not include IUSE=binary.
Comment 16 Craig Andrews gentoo-dev 2009-03-24 03:57:23 UTC
(In reply to comment #8)
> I've uploaded an ebuild to the overlay (based on the overlay ebuild which is
> slightly different) that does option (3) for x86.
I just tried this ebuild on amd64, and it seems to be able to compile (almost) everything. It died with this error:
------------------------------------------------------------------------
== make install -r;
 in /var/tmp/portage/dev-lang/ghc-6.8.2-r1/work/ghc-6.8.2/libraries/Cabal/doc
------------------------------------------------------------------------
make[1]: Nothing to be done for `install'.
./utils/mkdirhier/mkdirhier /var/tmp/portage/dev-lang/ghc-6.8.2-r1/image//usr/lib64/ghc-6.8.2
/usr/bin/install -c -m 644    extra-gcc-opts /var/tmp/portage/dev-lang/ghc-6.8.2-r1/image//usr/lib64/ghc-6.8.2
!!! dosbin: /usr/local/portage/dev-lang/ghc/files/ghc-updater does not exist
!!! newins: /usr/local/portage/dev-lang/ghc/files/ghc-bash-completion does not exist
Comment 17 Lennart Kolmodin (RETIRED) gentoo-dev 2009-03-24 06:58:57 UTC
(In reply to comment #16)
> I just tried this ebuild on amd64, and it seems to be able to compile (almost)
> everything. It died with this error:
> ------------------------------------------------------------------------
> == make install -r;
>  in /var/tmp/portage/dev-lang/ghc-6.8.2-r1/work/ghc-6.8.2/libraries/Cabal/doc
> ------------------------------------------------------------------------
> make[1]: Nothing to be done for `install'.
> ./utils/mkdirhier/mkdirhier
> /var/tmp/portage/dev-lang/ghc-6.8.2-r1/image//usr/lib64/ghc-6.8.2
> /usr/bin/install -c -m 644    extra-gcc-opts
> /var/tmp/portage/dev-lang/ghc-6.8.2-r1/image//usr/lib64/ghc-6.8.2
> !!! dosbin: /usr/local/portage/dev-lang/ghc/files/ghc-updater does not exist
> !!! newins: /usr/local/portage/dev-lang/ghc/files/ghc-bash-completion does not
> exist
> 

This is very odd. Do you indeed not have these files?
/usr/local/portage/dev-lang/ghc/files/ghc-updater
/usr/local/portage/dev-lang/ghc/files/ghc-bash-completion
Any files in ghc/files/?

Please verify that your repo is ok.
Comment 18 chris 2009-03-25 03:28:19 UTC
Got the same exact error.
Confirmed that directory /usr/local/portage/dev-lang/ghc/files/ does not even exist.
Comment 19 Lennart Kolmodin (RETIRED) gentoo-dev 2009-03-25 06:10:42 UTC
I see. Are you using layman?

Also try this:

$ cat /usr/local/portage/_darcs/prefs/defaultrepo
code.haskell.org:/srv/code/gentoo/gentoo-haskell

$ cd /usr/local/portage/
$ darcs whatsnew .
No changes!

$ darcs pull
Pulling from "code.haskell.org:/srv/code/gentoo/gentoo-haskell"...
This is the gentoo-haskell darcs overlay.

Please report bugs in the IRC channel #gentoo-haskell on the freenode
network, or send mail to haskell@gentoo.org.

Please do *not* report bugs from this overlay at bugs.gentoo.org.
**********************
No remote changes to pull in!

---------

Do you get the messages like above?
Comment 20 Craig Andrews gentoo-dev 2009-03-25 16:33:48 UTC
(In reply to comment #17)
> (In reply to comment #16)
> > I just tried this ebuild on amd64, and it seems to be able to compile (almost)
> > everything. It died with this error:
> > ------------------------------------------------------------------------
> > == make install -r;
> >  in /var/tmp/portage/dev-lang/ghc-6.8.2-r1/work/ghc-6.8.2/libraries/Cabal/doc
> > ------------------------------------------------------------------------
> > make[1]: Nothing to be done for `install'.
> > ./utils/mkdirhier/mkdirhier
> > /var/tmp/portage/dev-lang/ghc-6.8.2-r1/image//usr/lib64/ghc-6.8.2
> > /usr/bin/install -c -m 644    extra-gcc-opts
> > /var/tmp/portage/dev-lang/ghc-6.8.2-r1/image//usr/lib64/ghc-6.8.2
> > !!! dosbin: /usr/local/portage/dev-lang/ghc/files/ghc-updater does not exist
> > !!! newins: /usr/local/portage/dev-lang/ghc/files/ghc-bash-completion does not
> > exist
> > 
> 
> This is very odd. Do you indeed not have these files?
> /usr/local/portage/dev-lang/ghc/files/ghc-updater
> /usr/local/portage/dev-lang/ghc/files/ghc-bash-completion
> Any files in ghc/files/?
> 
> Please verify that your repo is ok.
> 
I messed up - I didn't copy the existing files from /usr/portage/... to my overlay. After I did that, the new ebuild emerged successfully, and life is good. No more readline-5 dependency, ghc works... This is great!
Comment 21 chris 2009-03-27 05:08:55 UTC
(In reply to comment #19)
> I see. Are you using layman?
> 
> Also try this:
> 
> $ cat /usr/local/portage/_darcs/prefs/defaultrepo
> code.haskell.org:/srv/code/gentoo/gentoo-haskell
> 
> $ cd /usr/local/portage/
> $ darcs whatsnew .
> No changes!
> 
> $ darcs pull
> Pulling from "code.haskell.org:/srv/code/gentoo/gentoo-haskell"...
> This is the gentoo-haskell darcs overlay.
> 
> Please report bugs in the IRC channel #gentoo-haskell on the freenode
> network, or send mail to haskell@gentoo.org.
> 
> Please do *not* report bugs from this overlay at bugs.gentoo.org.
> **********************
> No remote changes to pull in!
> 
> ---------
> 
> Do you get the messages like above?
> 

Yes, using Layman.
Comment 22 Lennart Kolmodin (RETIRED) gentoo-dev 2009-04-17 16:34:31 UTC
Pushed ghc-6.8.2-r1 to the portage tree, hard masked.

Please try it and report back.
http://linuxreviews.org/gentoo/masked_packages/

I'll unmask it the next couple of days if things work nicely.
So far it's only for x86 and amd64. This ghc version won't be very interesting once we've put ghc 6.10.2 into the tree, which is where our main efforts are atm.
Comment 23 Willis111 2009-05-18 23:46:54 UTC
#[ebuild  N    ] dev-haskell/network-2.2.1  USE="-doc -profile"
#[ebuild  N    ] dev-util/darcs-2.1.0-r1  USE="-doc"

********

I thought the whole point was to NOT install readline-5.2... Emerged darcs,
layman -a haskell, removed readline 5.2, revdep-rebuild, ghc-updater caused

*********

*  Failed Packages:
*  ----------------
*  These packages have failed and need to be re-emerged again.
*  Alternatively, try re-running this script again to see if it
*  can be fixed.

*  emerge -p  '>='dev-haskell/gtk2hs-0.9.12.1

re-emerged gtk2hs, re-ran ghc-updater, tried emerge --depclean and was
getting nags about package dev-haskell/bytestring-0.9.1.4, manually emerged
bytestring
emerge --depclean started working at this point. No nags about readline-5.2


Comment 24 Ihar Hrachyshka 2009-09-10 06:37:19 UTC
Now that readline-6_p3 got stable for "alpha amd64 hppa ppc64 x86", we should really get the fix in stable too.
Comment 25 Sergei Trofimovich (RETIRED) gentoo-dev 2011-02-25 21:55:51 UTC
(now stable everywhere) ghc-6.12.3 got rid of readline depend