[Haskell-cafe] Re: ghc error: requested module name differs from name found in interface file

Larry Evans cppljevans at suddenlink.net
Tue Oct 21 10:41:29 EDT 2008


On 10/21/08 07:35, Bertram Felgenhauer wrote:
> Larry Evans wrote:
>> On 10/20/08 12:33, Larry Evans wrote:
>>> With a file containing:
>>>  > module Main where
>>>  >
>>>  > import Array
>>>  > import Control.Functor.Fix
>>> I get:
>>>  > make
>>>  > ghc -i/root/.cabal/lib/category-extras-0.53.5/ghc-6.8.2 -c 
>>> catamorphism.example.hs
> 
> Yes, using -i to give paths to installed packages does not work - you
> really have to tell ghc about the corresponding package.conf file,
> using -package-conf file. See also
> 
>   http://www.haskell.org/ghc/docs/latest/html/users_guide/packages.html#package-databases
> 
>>>  > catamorphism.example.hs:19:0:
>>>  >     Bad interface file: 
>>> /root/.cabal/lib/category-extras-0.53.5/ghc-6.8.2/Control/Functor/Fix.hi
>>>  >         Something is amiss; requested module main:Control.Functor.Fix 
>>> differs from name found in the interface file 
>>> category-extras-0.53.5:Control.Functor.Fix
>>>  > make: *** [all] Error 1
> 
> The problem is that all modules found by -i are expected to be in the
> current package - which is 'main' by default. (Build tools like Cabal
> specify a different package name for libraries; for example the
> Control.Functor.Fix is in the 'category-extras-0.53.5' package here.)
> 
>> So, I've got to figure how to tell cabal install to install in right
>> place :(
> 
> Have you tried 'cabal install --global'? To make it stick, put
> 'user-install: False' in root's .cabal/config file.
> 
> HTH,
> 
> Bertram

THANK YOU!

I finally understand what happened.  To manually install cabal-install,
I had to change to root.  I just assumed I had to stay as root to
install category-extras.  Since the default for |cabal install| was
--user, it put the files in /root/.cabal.  I just did
|cabal install category-extras| as myself and now:
<---cut here ---
module Main where

import Data.Generics.Biplate
import Control.Functor.Fix

main = do
   putStr "hello world\n"
 >---cut here---
compiles without error.  Just that one little piece of information,
that |cabal install| , by default, installs in ~/.cabal and
then enables ghc to look there for packages, would have saved
an awful lot of time :(

-regards,
Larry




More information about the Haskell-Cafe mailing list