[Hackage] #89: Sharing of object files between executable builds?

Hackage trac at galois.com
Mon Mar 10 00:59:59 EDT 2008


#89: Sharing of object files between executable builds?
------------------------------------+---------------------------------------
  Reporter:  bjorn at bringert.net     |        Owner:        
      Type:  enhancement            |       Status:  new   
  Priority:  low                    |    Milestone:        
 Component:  Cabal library          |      Version:        
  Severity:  minor                  |   Resolution:        
  Keywords:  jgoerzen at complete.org  |   Difficulty:  normal
Ghcversion:  6.4.2                  |     Platform:  Linux 
------------------------------------+---------------------------------------
Comment (by guest):

 I'd mention that this lack of sharing between sections has bitten me
 recently (as in an error and not an inefficiency sense) while I was
 updating Greencard.

 So the Greencard package provides two main things; it provides a src/
 which contains all sorts of modules which gets compiled down to the
 executable 'greencard-bin', and it provides a library, Foreign.Greencard,
 which naturally requires Greencard to be compiled.

 The makefile accomplishes this by building greencard-bin in place in src/,
 and then running something like ../src/greencard-bin on the lib/ files.
 Everything comes out hunky-dory. But when put into Cabal format, it needs
 to be split between Executable and Library sections. So, suppose someone
 goes to install a Cabalized greencard. (This means no greencard is
 installed.) Cabal begins the configuration. It detects that no greencard
 is accessible - 'No greencard found'. It's otherwise happy, and it begins
 chasing down the files. Everything in 'Executable greencard'? Good. .lhs
 and .hs files, no sweat. Everything in 'Library'? Uh oh! This
 'lib/Foreign/GreenCard.gc', it requires 'greencard'!

 And the build barfs. Which is silly, since it could and would be able to
 build the greencard necessary for the library!

 I think I'm going to have split greencard up, and have a greencard and
 greencard-lib, making greencard-lib depend on greencard. This was the
 solution I used the last time I encountered a problem like this...

 --
 gwern

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


More information about the cabal-devel mailing list