can't build plugins-1.0 with ghc-6.9
Valery V. Vorotyntsev
valery.vv at gmail.com
Mon Jan 7 04:59:57 EST 2008
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
More information about the Libraries
mailing list