unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#55178: ghc cannot find libraries of ghc-comonad
@ 2022-04-29  1:39 Christoph Schumacher
  2023-01-21 12:49 ` Lars-Dominik Braun
  0 siblings, 1 reply; 5+ messages in thread
From: Christoph Schumacher @ 2022-04-29  1:39 UTC (permalink / raw)
  To: 55178

I found several bugs with the ghc and ghc-comonad packages:

- ghc needs gcc-toolchain in order to work.  This has already been 
reported:
   https://issues.guix.gnu.org/32131 and 
https://issues.guix.gnu.org/34850
- In the store, ghc-libraries seem to have the version appended to their 
name.
   The linker does not know this and cannot find the libraries.
- I created soft links with the names ghc expects in the current working 
directory
   and extended LIBRARY_PATH to include the current working directory.
   Then linking succeeds.
- But the executable again fails to find the libraries.
   It knows about the appended version strings, but it cannot find the 
files anyway.
   So I created more soft links, and now the simple test program runs.
- But as soon as I try to use a Comonad, the executable crashes.

Here is a minimal example:

> ls
LinkMe.hs
Main.hs

> cat LinkMe.hs
import Control.Comonad
main = putStrLn "Congratulations!"

> guix shell --pure ghc ghc-comonad -- ghc LinkMe.hs
[1 of 1] Compiling Main             ( LinkMe.hs, LinkMe.o )

<no location info>: error:
     Warning: Couldn't figure out C compiler information!
              Make sure you're using GNU gcc, or clang
ghc: could not execute: gcc

> guix shell --pure ghc ghc-comonad gcc-toolchain -- ghc LinkMe.hs
[1 of 1] Compiling Main             ( LinkMe.hs, LinkMe.o )
Linking LinkMe ...
ld: cannot find -lHScomonad-5.0.8-KDPzf2kORSz9Qeif8nQH6d
ld: cannot find -lHStransformers-compat-0.6.6-9ADqfwGTALm8Nq2ZeUpa4p
ld: cannot find -lHSindexed-traversable-0.1.1-Dfr00dUbJtB3rFEVdhtcE9
ld: cannot find -lHSdistributive-0.6.2.1-L7rr3EplzD03NITUnJxmCO
ld: cannot find -lHStagged-0.8.6.1-EiQY3za6Q5HE9cdvqupke2
ld: cannot find -lHSbase-orphans-0.8.5-Iz1X6ZIULaHC76vf03czEu
collect2: error: ld returned 1 exit status
`gcc' failed in phase `Linker'. (Exit code: 1)

> ln -s 
> /gnu/store/7xfvafaxbpc88bjmvijg38pr8djjx465-ghc-base-orphans-0.8.5/lib/x86_64-linux-ghc-8.10.7/libHSbase-orphans-0.8.5-Iz1X6ZIULaHC76vf03czEu-ghc8.10.7.so 
> libHSbase-orphans-0.8.5-Iz1X6ZIULaHC76vf03czEu.so
> ln -s 
> /gnu/store/rjkyixykafdhbf67aa3zlhappxl1dgai-ghc-comonad-5.0.8/lib/x86_64-linux-ghc-8.10.7/libHScomonad-5.0.8-KDPzf2kORSz9Qeif8nQH6d-ghc8.10.7.so 
> libHScomonad-5.0.8-KDPzf2kORSz9Qeif8nQH6d.so
> ln -s 
> /gnu/store/4jfs13lg5g93ssbfdr4hqqadw2iadir7-profile/lib/x86_64-linux-ghc-8.10.7/libHSdistributive-0.6.2.1-L7rr3EplzD03NITUnJxmCO-ghc8.10.7.so 
> libHSdistributive-0.6.2.1-L7rr3EplzD03NITUnJxmCO.so
> ln -s 
> /gnu/store/4jfs13lg5g93ssbfdr4hqqadw2iadir7-profile/lib/x86_64-linux-ghc-8.10.7/libHSindexed-traversable-0.1.1-Dfr00dUbJtB3rFEVdhtcE9-ghc8.10.7.so 
> libHSindexed-traversable-0.1.1-Dfr00dUbJtB3rFEVdhtcE9.so
> ln -s 
> /gnu/store/4jfs13lg5g93ssbfdr4hqqadw2iadir7-profile/lib/x86_64-linux-ghc-8.10.7/libHStagged-0.8.6.1-EiQY3za6Q5HE9cdvqupke2-ghc8.10.7.so 
> libHStagged-0.8.6.1-EiQY3za6Q5HE9cdvqupke2.so
> ln -s 
> /gnu/store/4jfs13lg5g93ssbfdr4hqqadw2iadir7-profile/lib/x86_64-linux-ghc-8.10.7/libHStransformers-compat-0.6.6-9ADqfwGTALm8Nq2ZeUpa4p-ghc8.10.7.so 
> libHStransformers-compat-0.6.6-9ADqfwGTALm8Nq2ZeUpa4p.so

> guix shell --pure ghc ghc-comonad gcc-toolchain coreutils -- env 
> LIBRARY_PATH=$LIBRARY_PATH:. ghc LinkMe.hs
Linking LinkMe ...

> ./LinkMe
./LinkMe: error while loading shared libraries: 
libHScomonad-5.0.8-KDPzf2kORSz9Qeif8nQH6d-ghc8.10.7.so: cannot open 
shared object file: No such file or directory

> ln -s 
> /gnu/store/rjkyixykafdhbf67aa3zlhappxl1dgai-ghc-comonad-5.0.8/lib/x86_64-linux-ghc-8.10.7/libHScomonad-5.0.8-KDPzf2kORSz9Qeif8nQH6d-ghc8.10.7.so 
> ./

> ./LinkMe
./LinkMe: error while loading shared libraries: 
libHStransformers-compat-0.6.6-9ADqfwGTALm8Nq2ZeUpa4p-ghc8.10.7.so: 
cannot open shared object file: No such file or directory

> ln -s 
> /gnu/store/4jfs13lg5g93ssbfdr4hqqadw2iadir7-profile/lib/x86_64-linux-ghc-8.10.7/libHStransformers-compat-0.6.6-9ADqfwGTALm8Nq2ZeUpa4p-ghc8.10.7.so 
> ./

> ./LinkMe
./LinkMe: error while loading shared libraries: 
libHSindexed-traversable-0.1.1-Dfr00dUbJtB3rFEVdhtcE9-ghc8.10.7.so: 
cannot open shared object file: No such file or directory

> ln -s 
> /gnu/store/4jfs13lg5g93ssbfdr4hqqadw2iadir7-profile/lib/x86_64-linux-ghc-8.10.7/libHSindexed-traversable-0.1.1-Dfr00dUbJtB3rFEVdhtcE9-ghc8.10.7.so 
> ./

  ./LinkMe
./LinkMe: error while loading shared libraries: 
libHSdistributive-0.6.2.1-L7rr3EplzD03NITUnJxmCO-ghc8.10.7.so: cannot 
open shared object file: No such file or directory

> ln -s 
> /gnu/store/4jfs13lg5g93ssbfdr4hqqadw2iadir7-profile/lib/x86_64-linux-ghc-8.10.7/libHSdistributive-0.6.2.1-L7rr3EplzD03NITUnJxmCO-ghc8.10.7.so 
> ./

> ./LinkMe
./LinkMe: error while loading shared libraries: 
libHStagged-0.8.6.1-EiQY3za6Q5HE9cdvqupke2-ghc8.10.7.so: cannot open 
shared object file: No such file or directory

> ln -s 
> /gnu/store/4jfs13lg5g93ssbfdr4hqqadw2iadir7-profile/lib/x86_64-linux-ghc-8.10.7/libHStagged-0.8.6.1-EiQY3za6Q5HE9cdvqupke2-ghc8.10.7.so 
> ./

> ./LinkMe
./LinkMe: error while loading shared libraries: 
libHSbase-orphans-0.8.5-Iz1X6ZIULaHC76vf03czEu-ghc8.10.7.so: cannot open 
shared object file: No such file or directory

> ln -s 
> /gnu/store/7xfvafaxbpc88bjmvijg38pr8djjx465-ghc-base-orphans-0.8.5/lib/x86_64-linux-ghc-8.10.7/libHSbase-orphans-0.8.5-Iz1X6ZIULaHC76vf03czEu-ghc8.10.7.so 
> ./

> ./LinkMe
Congratulations!

> cat Main.hs
{-# LANGUAGE DeriveFunctor #-}

import Control.Comonad (Comonad(..), extend)

data C a = C a deriving (Show, Functor)

instance Comonad C where
   extract (C a) = a
   duplicate x = C x

main :: IO ()
main = print $ extend id (C 0)

> guix shell --pure ghc ghc-comonad gcc-toolchain coreutils -- env 
> LIBRARY_PATH=$LIBRARY_PATH:. ghc Main.hs
[1 of 1] Compiling Main             ( Main.hs, Main.o )
Linking Main ...

> guix shell --pure ghc ghc-comonad gcc-toolchain coreutils -- env 
> LIBRARY_PATH=$LIBRARY_PATH:. ./Main
Main: internal error: stg_ap_p_ret
     (GHC version 8.10.7 for x86_64_unknown_linux)
     Please report this as a GHC bug:  
https://www.haskell.org/ghc/reportabug





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#55178: ghc cannot find libraries of ghc-comonad
  2022-04-29  1:39 bug#55178: ghc cannot find libraries of ghc-comonad Christoph Schumacher
@ 2023-01-21 12:49 ` Lars-Dominik Braun
  2023-09-22 16:45   ` Simon Tournier
  0 siblings, 1 reply; 5+ messages in thread
From: Lars-Dominik Braun @ 2023-01-21 12:49 UTC (permalink / raw)
  To: christoph.schumacher; +Cc: 55178

Hi,

> > guix shell --pure ghc ghc-comonad gcc-toolchain -- ghc LinkMe.hs
> [1 of 1] Compiling Main             ( LinkMe.hs, LinkMe.o )
> Linking LinkMe ...
> ld: cannot find -lHScomonad-5.0.8-KDPzf2kORSz9Qeif8nQH6d
> ld: cannot find -lHStransformers-compat-0.6.6-9ADqfwGTALm8Nq2ZeUpa4p
> ld: cannot find -lHSindexed-traversable-0.1.1-Dfr00dUbJtB3rFEVdhtcE9
> ld: cannot find -lHSdistributive-0.6.2.1-L7rr3EplzD03NITUnJxmCO
> ld: cannot find -lHStagged-0.8.6.1-EiQY3za6Q5HE9cdvqupke2
> ld: cannot find -lHSbase-orphans-0.8.5-Iz1X6ZIULaHC76vf03czEu
> collect2: error: ld returned 1 exit status
> `gcc' failed in phase `Linker'. (Exit code: 1)
the problem here is that in Guix we link Haskell executables dynamically
and sometimes move static libraries to a separate output without updating
the config file (because otherwise it would create a reference, which
we’re trying to avoid to save space).

It works fine for me using

	guix shell --pure ghc ghc-comonad gcc-toolchain@10 -- ghc --make -dynamic -v LinkMe.hs

Cheers,
Lars





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#55178: ghc cannot find libraries of ghc-comonad
  2023-01-21 12:49 ` Lars-Dominik Braun
@ 2023-09-22 16:45   ` Simon Tournier
  2023-10-03 21:29     ` cschumac
  0 siblings, 1 reply; 5+ messages in thread
From: Simon Tournier @ 2023-09-22 16:45 UTC (permalink / raw)
  To: Lars-Dominik Braun; +Cc: 55178, christoph.schumacher

Hi Christoph,

On Sat, 21 Jan 2023 at 13:49, Lars-Dominik Braun <lars@6xq.net> wrote:

>> guix shell --pure ghc ghc-comonad gcc-toolchain -- ghc LinkMe.hs
>> [1 of 1] Compiling Main             ( LinkMe.hs, LinkMe.o )
>> Linking LinkMe ...
>> ld: cannot find -lHScomonad-5.0.8-KDPzf2kORSz9Qeif8nQH6d
>> ld: cannot find -lHStransformers-compat-0.6.6-9ADqfwGTALm8Nq2ZeUpa4p
>> ld: cannot find -lHSindexed-traversable-0.1.1-Dfr00dUbJtB3rFEVdhtcE9
>> ld: cannot find -lHSdistributive-0.6.2.1-L7rr3EplzD03NITUnJxmCO
>> ld: cannot find -lHStagged-0.8.6.1-EiQY3za6Q5HE9cdvqupke2
>> ld: cannot find -lHSbase-orphans-0.8.5-Iz1X6ZIULaHC76vf03czEu
>> collect2: error: ld returned 1 exit status
>> `gcc' failed in phase `Linker'. (Exit code: 1)
>
> the problem here is that in Guix we link Haskell executables dynamically
> and sometimes move static libraries to a separate output without updating
> the config file (because otherwise it would create a reference, which
> we’re trying to avoid to save space).
>
> It works fine for me using
>
> 	guix shell --pure ghc ghc-comonad gcc-toolchain@10 -- ghc --make -dynamic -v LinkMe.hs

Does it fix your issue report in #55178?

    https://issues.guix.gnu.org/issue/55178

Closing?

Cheers,
simon




^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#55178: ghc cannot find libraries of ghc-comonad
  2023-09-22 16:45   ` Simon Tournier
@ 2023-10-03 21:29     ` cschumac
  2023-10-04 17:59       ` Simon Tournier
  0 siblings, 1 reply; 5+ messages in thread
From: cschumac @ 2023-10-03 21:29 UTC (permalink / raw)
  To: Simon Tournier; +Cc: 55178, christoph.schumacher, Lars-Dominik Braun

Dear Lars, dear Simon,

yes, the solution works!
And even better: compilation now also works without the -dynamic flag!
I tried my minimal example again, and both

guix shell --pure ghc ghc-comonad gcc-toolchain@10 -- ghc --make 
-dynamic -v LinkMe.hs

as well as

guix shell --pure ghc ghc-comonad gcc-toolchain -- ghc LinkMe.hs

produce working executables.
Thank you very much!




^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#55178: ghc cannot find libraries of ghc-comonad
  2023-10-03 21:29     ` cschumac
@ 2023-10-04 17:59       ` Simon Tournier
  0 siblings, 0 replies; 5+ messages in thread
From: Simon Tournier @ 2023-10-04 17:59 UTC (permalink / raw)
  To: cschumac; +Cc: christoph.schumacher, 55178-done, Lars-Dominik Braun

Hi,

On Tue, 03 Oct 2023 at 23:29, cschumac <cschumac@mathematik.tu-dortmund.de> wrote:

> yes, the solution works!

Cool!  I mark as done.

Cheers,
simon




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-10-04 18:18 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-29  1:39 bug#55178: ghc cannot find libraries of ghc-comonad Christoph Schumacher
2023-01-21 12:49 ` Lars-Dominik Braun
2023-09-22 16:45   ` Simon Tournier
2023-10-03 21:29     ` cschumac
2023-10-04 17:59       ` Simon Tournier

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).