[Hackage] #377: cabal install puts .hi files in wrong directory

Hackage trac at galois.com
Tue Dec 16 19:44:30 EST 2008


#377: cabal install puts .hi files in wrong directory
----------------------------+-----------------------------------------------
  Reporter:  cppljevans     |        Owner:         
      Type:  defect         |       Status:  closed 
  Priority:  normal         |    Milestone:         
 Component:  Cabal library  |      Version:  1.2.3.0
  Severity:  normal         |   Resolution:  invalid
  Keywords:                 |   Difficulty:  normal 
Ghcversion:  6.8.3          |     Platform:         
----------------------------+-----------------------------------------------
Changes (by duncan):

  * status:  new => closed
  * resolution:  => invalid

Old description:

> On my unbuntu OS, cabal install catagory-extras put the files as shown
> here:
> <---cut here---
> [ 99 of 100] Compiling Control.Morphism.Exo (
> src/Control/Morphism/Exo.hs, dist/build/Control/Morphism/Exo.o )
> [100 of 100] Compiling Control.Morphism.Meta.Erwig (
> src/Control/Morphism/Meta/Erwig.hs,
> dist/build/Control/Morphism/Meta/Erwig.o )
> /usr/bin/ar: creating dist/build/libHScategory-extras-0.53.5.a
> Installing library in /root/.cabal/lib/category-extras-0.53.5/ghc-6.8.2
> Registering category-extras-0.53.5...
> Reading package info from "dist/installed-pkg-config" ... done.
> Saving old package config file... done.
> Writing new package config file... done.
> <---cut here---
> whereas with manual install, they're put as shown here:
> <---cut here---
> [12 of 12] Compiling Data.Generics.UniplateOn (
> Data/Generics/UniplateOn.hs, dist/build/Data/Generics/UniplateOn.o )
> /usr/bin/ar: creating dist/build/libHSuniplate-1.2.0.1.a
> /home/evansl/download/haskell/libs/uniplate-1.2.0.1 # runhaskell Setup
> install
> Installing library in /usr/local/lib/uniplate-1.2.0.1/ghc-6.8.2
> Registering uniplate-1.2.0.1...
> Reading package info from "dist/installed-pkg-config" ... done.
> Saving old package config file... done.
> Writing new package config file... done.
> >---cut here---
> When I compile with ghc, ghc cannot find the /root/.cabal files.  If the
> -i
> flag is used, the files are found; however, another error occurs:
> <---cut here---
> > make
> > ghc -i/root/.cabal/lib/category-extras-0.53.5/ghc-6.8.2 -c
> catamorphism.example.hs
> >
> > 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
>
> >---cut here---

New description:

 On my unbuntu OS, cabal install catagory-extras put the files as shown
 here:
 {{{
 [ 99 of 100] Compiling Control.Morphism.Exo ( src/Control/Morphism/Exo.hs,
 dist/build/Control/Morphism/Exo.o )
 [100 of 100] Compiling Control.Morphism.Meta.Erwig (
 src/Control/Morphism/Meta/Erwig.hs,
 dist/build/Control/Morphism/Meta/Erwig.o )
 /usr/bin/ar: creating dist/build/libHScategory-extras-0.53.5.a
 Installing library in /root/.cabal/lib/category-extras-0.53.5/ghc-6.8.2
 Registering category-extras-0.53.5...
 Reading package info from "dist/installed-pkg-config" ... done.
 Saving old package config file... done.
 Writing new package config file... done.
 }}}
 whereas with manual install, they're put as shown here:
 {{{
 [12 of 12] Compiling Data.Generics.UniplateOn (
 Data/Generics/UniplateOn.hs, dist/build/Data/Generics/UniplateOn.o )
 /usr/bin/ar: creating dist/build/libHSuniplate-1.2.0.1.a

 # runhaskell Setup install
 Installing library in /usr/local/lib/uniplate-1.2.0.1/ghc-6.8.2
 Registering uniplate-1.2.0.1...
 Reading package info from "dist/installed-pkg-config" ... done.
 Saving old package config file... done.
 Writing new package config file... done.
 }}}
 When I compile with ghc, ghc cannot find the /root/.cabal files.  If the
 -i
 flag is used, the files are found; however, another error occurs:
 {{{
 make
 ghc -i/root/.cabal/lib/category-extras-0.53.5/ghc-6.8.2 -c
 catamorphism.example.hs

 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
 }}}

Comment:

 So what you're doing is a per-user install as root. Either run `cabal
 install catagory-extras` as your ordinary user account or if you really
 want to do a global install then do:
 {{{
 sudo cabal install catagory-extras --global
 }}}
 or
 {{{
 cabal install catagory-extras --global --root-cmd=sudo
 }}}
 The latter will do just the install part as root.

 Perhaps this is suprising and we should try and detect if we are root and
 if so then do a global install by default. Unfortunately detecting if we
 are running as root is not simple and not portable (and just because we
 are uid=0 does not mean we have permissions under modern unix security
 mechanims and likewise we can have permissions to do global installs
 without being a root user).

-- 
Ticket URL: <http://hackage.haskell.org/trac/hackage/ticket/377#comment:1>
Hackage <http://haskell.org/cabal/>
Hackage: Cabal and related projects


More information about the cabal-devel mailing list