¿Por qué “sdist cabal” no incluye todos “los archivos necesarios para construir”?
Pregunta
De acuerdo con la wiki entrada,
Se empaqueta los archivos necesarios para construir el proyecto
Tengo un simples ejecutables de sólo .cabal
proyecto, que básicamente contiene
Executable myprog
hs-source-dirs: src
main-is: MyMain.hs
y se compone de algunos archivos adicionales a continuación .hs
src/
más allá src/MyMain.hs
. Por ejemplo, src/Utils.hs
y algunos otros.
cabal build
tiene ningún problema para construir myprog
, y compila los archivos .hs
adicionales requeridos src/
, pero cabal sdist
no lo hace, creando así una fuente-tar disfuncional. ¿Qué estoy haciendo mal? ¿Cómo le digo Cabal para incluir todos los archivos de origen por debajo de hs-source-directorios?
Como nota lateral, con GNU Autotools, no era un objetivo make distcheck
, lo que primero construir una fuente-tar y, a continuación, tratar de construir el proyecto a través de la fuente-tar recién generado, asegurando de este modo bien del todo. ¿Hay algo similar para cabal
, con el fin de asegurarse de que mi fuente-tar es el sonido?
Solución
Se deben poner los otros archivos Haskell en el archivo .cabal
, dentro de la estrofa Executable
.
other-modules: Utils AFewOthers
La distribución sólo incluye los archivos de origen que se enumeran en el archivo de .cabal
. Cabal no tiene otra manera de detectar la fuente que los archivos están en su paquete. Aún se podía construir porque cabal build
llama ghc --make
y GHC encontrará y compilar todos los archivos de origen que necesita.