can't build plugins-1.0 with ghc-6.9

Don Stewart dons at galois.com
Mon Jan 7 11:46:52 EST 2008


Please start with the hs-plugins repo on code.haskell.org, since it's
already updated for ghc 6.8,

    http://code.haskell.org/~dons/code/hs-plugins/

valery.vv:
> Hi,
> 
> (The message below contains bunch of "preformatted" sections.
> I hope it's still readable, otherwise, please, let me know.)
> 
> My quest is to install lambdabot (for the sake of offline `@hoogle'
> and `@pl' commands), and the one depends on `plugins'.
> 
> 1) plugins.cabal should be updated
> ----------------------------------
> 
> A patch to .cabal file[1] is needed to get rid of config-time
> warning[2] and resolve build-time errors[3].
> 
>   [1]
>   vvv:~/src/plugins-1.0$ diff -u plugins.cabal{.orig,}
>   --- plugins.cabal.orig  2008-01-06 22:23:44.657177486 +0200
>   +++ plugins.cabal       2008-01-06 22:25:45.160728537 +0200
>   @@ -33,6 +33,6 @@
>            src/Language/Hi/hschooks.c
>    includes:             Linker.h
>    extensions:           CPP, ForeignFunctionInterface
>   -Build-Depends:        base, Cabal, haskell-src
>   +Build-Depends:        base, Cabal, haskell-src, array, containers,
> directory, random, process
>    ghc-options:          -Wall -O -fasm -funbox-strict-fields
> -fno-warn-missing-signatures
>   -hs-source-dir: src
>   +hs-source-dirs: src
> 
>   [2]
>   vvv:~/src/plugins-1.0$ runhaskell Setup configure --prefix=$HOME --user
>   Warning: The field "hs-source-dir" is deprecated, please use "hs-source-dirs"
>   Configuring plugins-1.0...
>   [...]
> 
>   [3]
>   vvv:~/src/plugins-1.0$ runhaskell Setup build
>   Preprocessing library plugins-1.0...
>   Building plugins-1.0...
> 
>   src/Language/Hi/Binary.hs:90:7:
>       Could not find module `Data.Array.Base':
>         it is a member of package array-0.1, which is hidden
> 
> 2) it doesn't build with Cabal-1.3.2
> ------------------------------------
> 
> `InstalledPackageInfo' is a type alias in GHC's Cabal[4], not a data
> constructor; `plugins' library[5] gets confused[6].
> 
>   [4]
>   vvv:~/src$ diff -u
> cabal-1.2.2.0/Distribution/InstalledPackageInfo.hs
> ghc/libraries/Cabal/Distribution/InstalledPackageInfo.hs
>   --- cabal-1.2.2.0/Distribution/InstalledPackageInfo.hs  2007-11-01
> 17:02:35.000000000 +0200
>   +++ ghc/libraries/Cabal/Distribution/InstalledPackageInfo.hs
> 2007-12-17 17:53:21.691532864 +0200
>   @@ -46,7 +46,7 @@
>    -- This module is meant to be local-only to Distribution...
> 
>    module Distribution.InstalledPackageInfo (
>   -       InstalledPackageInfo(..),
>   +       InstalledPackageInfo_(..), InstalledPackageInfo,
>           ParseResult(..), PError(..), PWarning,
>           emptyInstalledPackageInfo,
>           parseInstalledPackageInfo,
>   @@ -72,8 +72,8 @@
>    -- -----------------------------------------------------------------------------
>    -- The InstalledPackageInfo type
> 
>   -data InstalledPackageInfo
>   -   = InstalledPackageInfo {
>   +data InstalledPackageInfo_ m
>   +   = InstalledPackageInfo_ {
>           -- these parts are exactly the same as PackageDescription
>           package           :: PackageIdentifier,
>            license           :: License,
>   @@ -87,8 +87,8 @@
>           category          :: String,
>           -- these parts are required by an installed package only:
>            exposed           :: Bool,
>   -       exposedModules    :: [String],
>   -       hiddenModules     :: [String],
>   +       exposedModules    :: [m],
>   +       hiddenModules     :: [m],
>            importDirs        :: [FilePath],  -- contain sources in case of Hugs
>            libraryDirs       :: [FilePath],
>            hsLibraries       :: [String],
>   @@ -107,9 +107,11 @@
>        }
>        deriving (Read, Show)
> 
>   -emptyInstalledPackageInfo :: InstalledPackageInfo
>   +type InstalledPackageInfo = InstalledPackageInfo_ String
>   +
>   +emptyInstalledPackageInfo :: InstalledPackageInfo_ m
>    emptyInstalledPackageInfo
>   -   = InstalledPackageInfo {
>   +   = InstalledPackageInfo_ {
>            package           = PackageIdentifier "" noVersion,
>            license           = AllRightsReserved,
>            copyright         = "",
> 
>   [5]
>   vvv:~/src/plugins-1.0$ sed -n 64,66p src/System/Plugins/PackageAPI.hs
>   updImportDirs f pk@(InstalledPackageInfo { importDirs = idirs }) =
>           pk { importDirs = f idirs }
>   updLibraryDirs f pk@(InstalledPackageInfo { libraryDirs = ldirs }) =
> 
>   [6]
>   vvv:~/src/plugins-1.0$ runhaskell Setup build
>   Preprocessing library plugins-1.0...
>   Building plugins-1.0...
>   [ 1 of 24] Compiling System.Plugins.Process (
> src/System/Plugins/Process.hs, dist/build/System/Plugins/Process.o )
>   [ 2 of 24] Compiling System.Plugins.Parser (
> src/System/Plugins/Parser.hs, dist/build/System/Plugins/Parser.o )
>   [ 3 of 24] Compiling System.Plugins.ParsePkgConfCabal (
> src/System/Plugins/ParsePkgConfCabal.hs,
> dist/build/System/Plugins/ParsePkgConfCabal.o )
>   [ 4 of 24] Compiling System.Plugins.PackageAPI (
> src/System/Plugins/PackageAPI.hs,
> dist/build/System/Plugins/PackageAPI.o )
> 
>   src/System/Plugins/PackageAPI.hs:64:20:
>       Not in scope: data constructor `InstalledPackageInfo'
> 
>   src/System/Plugins/PackageAPI.hs:66:21:
>       Not in scope: data constructor `InstalledPackageInfo'
> 
> I would like to hear your suggestions.
> 
> Should I try harder[7] installing Cabal-1.2.2.0?
> Or is this a bug of GHC's Cabal? In this case I've just reported it. :)
> 
>   [7]
>   vvv:~/src/cabal-1.2.2.0$ runhaskell Setup configure --prefix=$HOME --user
>   Configuring Cabal-1.2.2.0...
>   Setup: At least the following dependencies are missing:
>       base <3, filepath -any
>   vvv:~/src/cabal-1.2.2.0$ runhaskell Setup configure --prefix=$HOME
> --user -f small_base
>   Configuring Cabal-1.2.2.0...
>   Setup: At least the following dependencies are missing:
>       base >=3,
>       pretty -any,
>       directory -any,
>       old-time -any,
>       process -any,
>       containers -any,
>       filepath -any
>   vvv:~/src/cabal-1.2.2.0$ ghc-pkg list
>   /home/vvv/lib/ghc-6.9.20080104/package.conf:
>       Cabal-1.3.2, array-0.1, base-3.0, bytestring-0.9, containers-0.1,
>       directory-1.0, filepath-1.1, (ghc-6.9.20080104), haskell98-1.0.1,
>       hpc-0.5, old-locale-1.0, old-time-1.0, packedstring-0.1,
>       pretty-1.0, process-1.0, random-1.0, readline-1.0.1, rts-1.0,
>       template-haskell-2.2, unix-2.2
>   /home/vvv/.ghc/i386-linux-6.9.20080104/package.conf:
>       X11-1.4.1, binary-0.4.1, haskell-src-1.0.1.1, mtl-1.1.0.0,
>       network-2.1.0.0, parsec-2.1.0.0, xmonad-0.5, xmonad-contrib-0.5
> 
> Thanks a lot.
> 
> Happy hacking!
> 
> -- 
> vvv
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries


More information about the Libraries mailing list