What are hookedPrograms for?

I'm looking at an example Duncan gave for Takusen's setup + .cabal: http://hpaste.org/6279 ... and do not understamd what hookedPrograms is all about. Can someone enlighten me? FWIW, my goal is to either locate or run some programs during the configure stage, and use the results (locating a program gives a directory, running a program gives directories printed on stdout) to modify the extraLibDirs and includeDirs in BuildInfo. I've been browsing the 1.3.12 sources, but no epiphany yet... Alistair

On Wed, 2008-06-11 at 09:06 +0100, Alistair Bayley wrote:
I'm looking at an example Duncan gave for Takusen's setup + .cabal: http://hpaste.org/6279
... and do not understamd what hookedPrograms is all about. Can someone enlighten me?
It allows you to define new programs that Cabal knows about. It already has a list of several, eg ghc, happy, ld, ar, etc. You want to locate and use these extra progs. So we tell cabal about them. This also means we can mention them in the .cabal file as build-tools. By default we look for programs on the path, but you can change that using the programFindLocation method of the Program. BTW, the hack with pgconfig vs pg_config is no longer needed as '_' are now allowed in build-tool names (though only with Cabal-1.4+).
FWIW, my goal is to either locate or run some programs during the configure stage, and use the results (locating a program gives a directory, running a program gives directories printed on stdout) to modify the extraLibDirs and includeDirs in BuildInfo.
I've been browsing the 1.3.12 sources, but no epiphany yet...
Take a look at Distribution.Simple.Program. If the program is in a build-tools field that is enabled then it will be automatically configured during the configure phase (and it not being found will be an error). You can find the location of a configured program or run a configured program and capture its stdout. Duncan
participants (2)
-
Alistair Bayley
-
Duncan Coutts