[Haskell-cafe] Building examples with Cabal

Heinrich Apfelmus apfelmus at quantentunnel.de
Thu Oct 17 08:27:25 UTC 2013


Sven Panne wrote:
> 2013/10/16 Heinrich Apfelmus <apfelmus at quantentunnel.de>:
>> I usually declare an "Executable" for each example and add a flag
>> "buildExamples" that controls whether the examples are built or not. Here an
>> example .cabal file.
>>
>> http://hackage.haskell.org/package/threepenny-gui-0.3.0.0/threepenny-gui.cabal
> 
> I tried something similar in the past, but that didn't really work out:
> 
>   * Things get *extremely* verbose and repetitive in the .cabal file.
> Currently there are roughly 90 GLUT examples, and I expect to have
> much more in the future. This would lead to more than 1000 lines of
> boilerplate .cabal stuff. OK, Emacs macros and copy-n-paste are your
> friends, but... :-P

Ah, I see. I'm lucky in that the number of examples I need to maintain 
is still in the one digit range.

>   * Can Cabal build the executables in parallel? Doing a parallel
> build of all examples via my make hack takes about 5 seconds, a
> non-parallel build takes 75 seconds, and I expect that gap to widen
> even more when I add more examples.
> 
>   * How does one handle common parts in the examples? (e.g.
> https://github.com/haskell-opengl/GLUT/tree/master/examples/RedBook8/common,
> more to come there) Conditionally build helper libraries just for the
> examples?

Building a single helper library where you put all shared modules into 
seems like a reasonable idea to me.

> I can't believe that I'm the only package maintainer who has such a
> problem, so I really hope that there is some hidden solution out there
> I simply can't see...

It's not very pressing for me yet, but if you do find a solution, please 
let me know as well. :)


Best regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com



More information about the Haskell-Cafe mailing list