Hmmm, it does appear to aim at a very similar goal, but that branch only builds with old cabal versions, and even though I've made my code override the same functions, it still doesn't expose the dynamically-generated modules on normal import, only on "cabal repl". But I also noticed that "cabal repl" also exposes all the hidden modules, so maybe that isn't a good indication...anyways, I'm stumped for the moment on why modifying the exposed modules list at the confHook stage doesn't get propagated to the later stages. Like I said, the modules do get compiled, just not exposed.
-Tom

On 11/28/2015 11:14 AM, Adam Bergmark wrote:
I believe this does the same thing as what you want:
https://github.com/hvr/base-noprelude/blob/pre-ghc710/Setup.hs

HTH,
Adam


On Sat, Nov 28, 2015 at 4:23 PM, Thomas Lippincott
<tom.lippinc...@gmail.com <mailto:tom.lippinc...@gmail.com>> wrote:

    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
    _______________________________________________
    cabal-devel mailing list
    cabal-devel@haskell.org <mailto:cabal-devel@haskell.org>
    http://mail.haskell.org/cgi-bin/mailman/listinfo/cabal-devel


_______________________________________________
cabal-devel mailing list
cabal-devel@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/cabal-devel

Reply via email to