Imagínese un Makefile como el siguiente:"Bootstrapping" con Cabal
stage1 : Stage1.hs
ghc -o stage1 Stage1.hs
Stage1.hs : stage0
stage0 > Stage1.hs
stage0 : Stage0.hs
ghc -o stage0 Stage0.hs
El directorio actual contendría Makefile y Stage0.hs en un primer momento, y producir stage1.
Aquí están las preguntas:
- ¿Cómo puedo hacer lo anterior enteramente dentro de Cabal? ¿Se supone que debo hacer esto solo con ganchos? (como this o this.) ¿Qué pasa si el gancho debe depender de otro programa en el paquete que se va a construir?
- ¿Qué pasa si Setup.hs se vuelve lo suficientemente complicado como para requerir su propia gestión de dependencias ?
- ¿Hay un paquete cabalizado que haga cosas similares? Si Happy incluye un programa de prueba cabalizado que depende de la invocación Feliz, ese hubiera sido un ejemplo perfecto.
En el caso de Happy y Alex, Cabal ya sabe cómo lidiar con eso, por lo que solo necesita enumerar los módulos en 'Módulos expuestos' o 'Otros-Módulos' y Cabal generará el '.hs' archivos y compilarlos automáticamente. – hammar
Eso es verdad. Quizás debería mencionar [preprocessor-tools] (http://hackage.haskell.org/package/preprocessor-tools) en su lugar. – mnish