Hi.

I wrote this mail to you some time ago, but never got a reply. I don't
want to bother you, but I'm resending it just in case the previous copy
had got lost.

I'm a member of the Debian Haskell Team. We recently migrated to GHC
6.12, but you're package seems not to be compilable with GHC 6.12 (the
same happens also on hackage). Hackage failure log is here: [1].

 [1]
http://hackage.haskell.org/packages/archive/plugins/1.4.1/logs/failure/ghc-6.12

I've created a patch (attached) which should fix some of the problems.
Anyway, now I'm facing two errors I'm not able to deal with:

> [11 of 15] Compiling System.Plugins.Load ( src/System/Plugins/Load.hs, 
> dist-ghc6/build/System/Plugins/Load.o )
> 
> src/System/Plugins/Load.hs:98:4:
>     Couldn't match expected type `IO ModIface'
>            against inferred type `DynFlags.DynFlags -> b'
>     In a stmt of a 'do' expression: e <- newHscEnv undefined
>     In the expression:
>         do { e <- newHscEnv undefined;
>              initTcRnIf
>                'r'
>                e
>                undefined
>                undefined
>                (readBinIface IgnoreHiWay QuietBinIFaceReading hi_path) }
>     In the definition of `readBinIface'':
>         readBinIface' hi_path
>                         = do { e <- newHscEnv undefined;
>                                initTcRnIf
>                                  'r'
>                                  e
>                                  undefined
>                                  undefined
>                                  (readBinIface IgnoreHiWay 
> QuietBinIFaceReading hi_path) }
> 
> src/System/Plugins/Load.hs:441:13:
>     A lazy (~) pattern cannot contain unlifted types ~(Ptr addr)
>     In the pattern: ~(Ptr addr)
>     In a stmt of a 'do' expression:
>         (ptr@(~(Ptr addr))) <- withCString symbol c_lookupSymbol
>     In the expression:
>         do { let symbol = prefixUnderscore
>                         ++  (maybe "" (\ p -> ...) pkg)
>                           ++  encode m ++ "_" ++ (encode valsym) ++ 
> "_closure";
>              (ptr@(~(Ptr addr))) <- withCString symbol c_lookupSymbol;
>              if (ptr == nullPtr) then
>                  return Nothing
>              else
>                  case addrToHValue# addr of { (# hval #) -> return (Just 
> hval) } }

Do you have any advices for me?

I hope the attached patch can be helpful for you. :-)

Thanks, Giovanni.
-- 
Giovanni Mascellani <mascell...@poisson.phc.unipi.it>
Pisa, Italy

Web: http://poisson.phc.unipi.it/~mascellani
Jabber: g.mascell...@jabber.org / giova...@elabor.homelinux.org

diff -Nur -x '*.orig' -x '*~' hs-plugins-1.4.1//src/System/MkTemp.hs hs-plugins-1.4.1.new//src/System/MkTemp.hs
--- hs-plugins-1.4.1//src/System/MkTemp.hs	2009-03-15 21:14:39.000000000 +0100
+++ hs-plugins-1.4.1.new//src/System/MkTemp.hs	2010-02-21 02:11:20.000000000 +0100
@@ -214,7 +214,7 @@
         if b then ioError err   -- race
              else openFile f ReadWriteMode
     where
-        err = IOError Nothing AlreadyExists "open0600" "already exists" Nothing
+        err = IOError Nothing AlreadyExists "open0600" "already exists" Nothing (Just f)
 
 {-
 -- open(path, O_CREAT|O_EXCL|O_RDWR, 0600)
diff -Nur -x '*.orig' -x '*~' hs-plugins-1.4.1//src/System/Plugins/Env.hs hs-plugins-1.4.1.new//src/System/Plugins/Env.hs
--- hs-plugins-1.4.1//src/System/Plugins/Env.hs	2009-03-15 21:14:39.000000000 +0100
+++ hs-plugins-1.4.1.new//src/System/Plugins/Env.hs	2010-02-21 02:11:08.000000000 +0100
@@ -287,9 +287,9 @@
 union :: PkgEnvs -> [PackageConfig] -> PkgEnvs
 union ls ps' = 
         let fm = emptyFM -- new FM for this package.conf
-        in foldr (\p fm' -> if (display $ package p) == "base" -- ghc doesn't supply a version with 'base'
+        in foldr (\p fm' -> if (display $ sourcePackageId p) == "base" -- ghc doesn't supply a version with 'base'
                                                        -- for some reason.
-                            then addToFM (addToFM fm' (display $ package p) p) (packageName p) p
+                            then addToFM (addToFM fm' (display $ sourcePackageId p) p) (packageName p) p
                             else addToFM fm' (packageName p) p) fm ps' : ls
 
 -- 
@@ -312,7 +312,7 @@
 readPackageConf :: FilePath -> IO [PackageConfig]
 readPackageConf f = do
     pc <- configureAllKnownPrograms silent defaultProgramConfiguration
-    pkgIndex <- getInstalledPackages silent (SpecificPackageDB f) pc
+    pkgIndex <- getInstalledPackages silent [(SpecificPackageDB f)] pc
     return $ allPackages pkgIndex
 
 -- -----------------------------------------------------------
diff -Nur -x '*.orig' -x '*~' hs-plugins-1.4.1//src/System/Plugins/PackageAPI.hs hs-plugins-1.4.1.new//src/System/Plugins/PackageAPI.hs
--- hs-plugins-1.4.1//src/System/Plugins/PackageAPI.hs	2009-03-15 21:14:39.000000000 +0100
+++ hs-plugins-1.4.1.new//src/System/Plugins/PackageAPI.hs	2010-02-21 02:12:20.000000000 +0100
@@ -58,8 +58,8 @@
 
 type PackageConfig = InstalledPackageInfo
 
-packageName = display . package
-packageName_ = pkgName . package
+packageName = display . sourcePackageId
+packageName_ = pkgName . sourcePackageId
 packageDeps = (map display) . depends
 
 updImportDirs f pk@(InstalledPackageInfo { importDirs = idirs }) =

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to