Stop! Tickets are now managed at GitHub.

Please enter new tickets, and find and edit existing tickets there:


Ticket #72 (closed defect: invalid)

Opened 5 years ago

Last modified 5 years ago

Broken profiling libraries in OS X package

Reported by: atomb Owned by: gregorycollins
Priority: major Milestone:
Component: OSX installer Keywords:
Cc:

Description

After a fresh install of 2009.2.0.1-beta1 package for OS X on a 1.5.7 system (Leopard), I tried to use cabal-install to install several packages with profiling information. The packages depending on libraries included in the platform, but not included with GHC, failed:

$ ghc-pkg list
/Library/Frameworks/GHC.framework/Versions/610/usr/lib/ghc-6.10.3/./package.conf:
    Cabal-1.6.0.3, GLUT-2.1.1.2, HTTP-4000.0.6, HUnit-1.2.0.3,
    OpenGL-2.2.1.1, QuickCheck-1.2.0.0, array-0.2.0.0, base-3.0.3.1,
    base-4.1.0.0, bytestring-0.9.1.4, cgi-3001.1.7.1,
    containers-0.2.0.1, directory-1.0.0.3, (dph-base-0.3),
    (dph-par-0.3), (dph-prim-interface-0.3), (dph-prim-par-0.3),
    (dph-prim-seq-0.3), (dph-seq-0.3), editline-0.2.1.0,
    extensible-exceptions-0.1.1.0, fgl-5.4.2.2, filepath-1.1.0.2,
    (ghc-6.10.3), ghc-prim-0.1.0.0, haddock-2.4.2, haskell-src-1.0.1.3,
    haskell98-1.0.1.0, hpc-0.5.0.3, html-1.0.1.2, integer-0.1.0.1,
    mtl-1.1.0.2, network-2.2.1, network-2.2.1.1, old-locale-1.0.0.1,
    old-time-1.0.0.2, packedstring-0.1.0.1, parallel-1.1.0.1,
    parsec-2.1.0.1, pretty-1.0.1.0, process-1.0.1.1, random-1.0.0.1,
    regex-base-0.72.0.2, regex-compat-0.71.0.1, regex-posix-0.72.0.3,
    rts-1.0, stm-2.1.1.2, syb-0.1.0.1, template-haskell-2.3.0.1,
    time-1.1.2.4, time-1.1.3, unix-2.3.2.0, xhtml-3000.2.0.1,
    zlib-0.5.0.0
/Users/atomb/.ghc/i386-darwin-6.10.3/package.conf:

$ cabal install -p lazysmallcheck
Resolving dependencies...
Downloading lazysmallcheck-0.3...
Configuring lazysmallcheck-0.3...
Preprocessing library lazysmallcheck-0.3...
Building lazysmallcheck-0.3...
[1 of 2] Compiling Test.LazySmallCheck.Generic ( Test/LazySmallCheck/Generic.hs, dist/build/Test/LazySmallCheck/Generic.o )
[2 of 2] Compiling Test.LazySmallCheck ( Test/LazySmallCheck.hs, dist/build/Test/LazySmallCheck.o )
[1 of 2] Compiling Test.LazySmallCheck.Generic ( Test/LazySmallCheck/Generic.hs, dist/build/Test/LazySmallCheck/Generic.p_o )
[2 of 2] Compiling Test.LazySmallCheck ( Test/LazySmallCheck.hs, dist/build/Test/LazySmallCheck.p_o )
ar: creating archive dist/build/libHSlazysmallcheck-0.3.a
ar: creating archive dist/build/libHSlazysmallcheck-0.3_p.a
Installing library in /Users/atomb/.cabal/lib/lazysmallcheck-0.3/ghc-6.10.3
Registering lazysmallcheck-0.3...
Reading package info from "dist/installed-pkg-config" ... done.
Writing new package config file... done.
$ cinstall harpy
Resolving dependencies...
Downloading harpy-0.4.1...
Configuring harpy-0.4.1...
Preprocessing library harpy-0.4.1...
Building harpy-0.4.1...
[1 of 7] Compiling Harpy.X86Disassembler ( Harpy/X86Disassembler.hs, dist/build/Harpy/X86Disassembler.o )
[2 of 7] Compiling Harpy.CodeGenMonad ( Harpy/CodeGenMonad.hs, dist/build/Harpy/CodeGenMonad.o )
[3 of 7] Compiling Harpy.Call       ( Harpy/Call.hs, dist/build/Harpy/Call.o )
Loading package ghc-prim ... linking ... done.
Loading package integer ... linking ... done.
Loading package base ... linking ... done.
Loading package syb ... linking ... done.
Loading package array-0.2.0.0 ... linking ... done.
Loading package containers-0.2.0.1 ... linking ... done.
Loading package packedstring-0.1.0.1 ... linking ... done.
Loading package pretty-1.0.1.0 ... linking ... done.
Loading package template-haskell ... linking ... done.
Loading package parsec-2.1.0.1 ... linking ... done.
Loading package mtl-1.1.0.2 ... linking ... done.
Loading package base-3.0.3.1 ... linking ... done.
[4 of 7] Compiling Harpy.X86CodeGen ( Harpy/X86CodeGen.hs, dist/build/Harpy/X86CodeGen.o )
[5 of 7] Compiling Harpy.X86Assembler ( Harpy/X86Assembler.hs, dist/build/Harpy/X86Assembler.o )
[6 of 7] Compiling Harpy.X86CGCombinators ( Harpy/X86CGCombinators.hs, dist/build/Harpy/X86CGCombinators.o )
[7 of 7] Compiling Harpy            ( Harpy.hs, dist/build/Harpy.o )

Harpy/CodeGenMonad.hs:91:7:
    Could not find module `Control.Monad.Trans':
      Perhaps you haven't installed the profiling libraries for package `mtl-1.1.0.2'?
      Use -v to see a list of the files searched for.
cabal: Error: some packages failed to install:
harpy-0.4.1 failed during the building phase. The exception was:
exit: ExitFailure 1

The dependencies of lazysmallcheck are all included in the GHC installer package. Some of the dependencies of harpy, however, are in the platform installer package. It appears that the packages included as part of the GHC installer package have good profiling information, while the packages included in the platform installer package do not.

If I reinstall mtl and parsec (harpy's other platform dependency) as user packages, with profiling information, then harpy builds correctly.

The strange thing is, there are profiling libraries for mtl and parsec included in the platform. They just don't seem to be usable?

$ ls -l /Library/Frameworks/GHC.framework/Versions/610/usr/lib/ghc-6.10.3/mtl-1.1.0.2/
total 2432
drwxrwxr-x  3 root  admin      102 May  8 09:45 Control
-rw-rw-r--  1 root  admin   322904 May  8 09:45 HSmtl-1.1.0.2.o
-rw-rw-r--  1 root  admin   844576 May  8 09:45 libHSmtl-1.1.0.2.a
-rw-rw-r--  1 root  admin  1316304 May  8 09:45 libHSmtl-1.1.0.2_p.a

Change History

Changed 5 years ago by atomb

Ah, I see what's happening now. Both the GHC installer package and the platform installer package include mtl. The GHC one has profiling libraries, but the platform one doesn't. But the platform packages override the ones included with GHC. That's why it seemed as though the libraries were installed but broken.

Personally, I would love to have profiling versions of the libraries included by default. Other people may disagree, though.

In the long run, the GHC bundle probably shouldn't include packages included in the platform bundle, but I expect the current beta was produced by just using a readily available GHC installer, which happened to overlap a little with the platform.

Changed 5 years ago by gregorycollins

  • status changed from new to closed
  • resolution set to invalid

Correct, the platform mtl overrides the one shipped with GHC (because "ghc-pkg register" overrides...)

The overlap you speak of seems to be causing several other problems, including triggering a nasty GHC panic bug: http://hackage.haskell.org/trac/ghc/ticket/3275

I've posted to the list to collect opinions on whether we should be installing the profiling libraries for the platform for the next version. For now I'm going to close this ticket if that's OK with you, feel free to re-open it otherwise.

Note: See TracTickets for help on using tickets.