issue with cabal behavior with a custom Setup.hs
Thomas Lippincott
tom.lippincott at gmail.com
Sat Nov 28 15:23:54 UTC 2015
Hello,
I'm seeing what I think is some strange (or at least, non-intuitive)
behavior in a custom package, and was wondering if someone could point
me in the right direction. Basically, I need the build process to
generate some additional exposed modules, i.e. add them to the
"exposed-modules" variable, and create the corresponding source files.
It's easy to get the list of modules and produce the source files at any
point in the build process (I know this is a questionable design, trying
to do this as part of Cabal, but suffice it to say there are good
arguments on both sides for our particular situation).
I'm *so* close to having it working perfectly: in fact, if I run "cabal
repl", I get a shell with all the right modules compiled and exposed,
so, it should work the same way if it's installed and imported in ghci,
right? Well, when I do that, the auto-generated modules are *not*
exposed. It's clearly generating the source files and compiling them,
maybe "cabal install" isn't getting the updated module list or
something? Here's what I'm doing:
I override "confHook" to call the original configure function, but then
get the list of auto-generated modules and add them to the
exposedModules field in the Library structure nested in the
LocalBuildInfo structure before returning it. The idea is that I've
intercepted the list of exposed modules as early as possible, and so
it's as though the Cabal file had the auto-generated modules listed from
the start. I generate the actual source files by overriding "preBuild".
Nothing else is modified from the default simpleUserHooks.
This probably isn't the place for "how do I..." questions, so I'll frame
it as: why would "cabal repl" work, and "cabal install" and ghci+import
not work? I apologize if this is an inappropriate place to ask, but
there aren't exactly a ton of Cabal experts floating around!
Thanks for any help,
-Tom
More information about the cabal-devel
mailing list