sof patch for --ghc-pkg-config-file=

Isaac Jones ijones at syntaxpolice.org
Fri Sep 15 13:06:55 EDT 2006


Emailing to libraries@, please followup to cabal-devel.

Here's a patch from Sigbjorn which adds --ghc-pkg-config-file= to
cabal.  This is an oldish patch, but I haven't stopped getting
requests for this feature :)

This allows you to create a "local" package config file, rather than
using the --user or --global files, this is useful for in-place
building, as when you're developing a set of related packages.

I still have some debate about whether this patch should go in; it
assumes a model of package registration where you have a config file
(as opposed to a directory) which isn't the case for nhc or Hugs.  But
the idea doesn't seem to bother anyone but me, and the flag is clearly
marked as a ghc-related flag, so I'm thinking of letting it through.
Opinions?

Does anyone want to massage this to work w/ the current cabal head?

peace,

  isaac

------------------------------------------------------------

Changed paths:
   M /Distribution/Make.hs
   M /Distribution/Setup.hs
   M /Distribution/Simple/Build.hs
   M /Distribution/Simple/Configure.hs
   M /Distribution/Simple/GHCPackageConfig.hs
   M /Distribution/Simple/Install.hs
   M /Distribution/Simple/LocalBuildInfo.hs
   M /Distribution/Simple/Register.hs
   M /Distribution/Simple.hs
   M /tests/ModuleTest.hs

A couple of extensions:

- support for specifying what GHC package configuration file
  to use during (un)registration. Specified via the command-line
  option --ghc-pkg-config-file=<path> which is understood by
  'configure', 'install', 'register', and 'unregister' commands.
- better handling of package-specific header files during installation.
  If you use the Include-Dirs: and Includes: fields in your .cabal
  file to refer to package-local header files and directories, these
  will be created&copied during 'install'. i.e., suppose you spec
  the following:
  
     Include-Dirs: /usr/local/include/openssl, include
     Includes: include/openssl-exts.h, +openssl/openssl.h

  The 'install' action will emit the following ghc-pkg fields when
  updating/installing the GHC package:
  
     include_dirs = [ "/usr/local/include/openssl",
                      "/path/to/your/pkg/installation/lib/directory/include"]
     c_includes =   [ "openssl-exts.h", "openssl/openssl.h"]

  and creates the directory in include_dirs's second element, followed
  by copying openssl-exts.h into that directory.

  Note:
     - only directories that don't start with '/' are created inside
       the package's install directory.
     - Includes: entries that are prefixed with '+' are assumed to be
       referring to non-package header files and aren't (attempted) 
       copied into the package's installation tree. Bit of a twiddly
       hack, but supporting the distinction between package and 
       non-package header files does seem to be necessary.



-------------- next part --------------
A non-text attachment was scrubbed...
Name: sof-cabal-patch1
Type: application/octet-stream
Size: 25773 bytes
Desc: not available
Url : http://www.haskell.org/pipermail/cabal-devel/attachments/20060915/6f132f7b/sof-cabal-patch1-0001.obj


More information about the cabal-devel mailing list