Perché “sdist cabala” non include tutti i file necessari per “costruire”?
Domanda
Secondo il wiki ,
Si confeziona il backup dei file necessari per costruire il progetto
Ho un semplice eseguibili solo progetto .cabal
, che contiene sostanzialmente
Executable myprog
hs-source-dirs: src
main-is: MyMain.hs
ed è composto da alcuni file aggiuntivi .hs
sotto src/
oltre src/MyMain.hs
. Per esempio, src/Utils.hs
e pochi altri.
cabal build
non ha problemi di costruzione myprog
, e compila i file .hs
aggiuntivi richiesti sotto src/
, ma cabal sdist
non lo fa, creando così un disfunzionale sorgente tarball. Che cosa sto facendo di sbagliato? Come faccio a dire cabala per includere tutti i file sorgente sotto hs-source-dirs?
Come un lato nota, con GNU Autotools, c'era un obiettivo make distcheck
, che prima costruire una fonte-tarball, e quindi cercare di costruire il progetto tramite la fonte-tarball appena generato, garantendo così ok del tutto. C'è qualcosa di simile per cabal
, al fine di assicurarsi che la mia fonte-tarball è sana?
Soluzione
Si dovrebbe elencare gli altri file Haskell nel file .cabal
, all'interno della strofa Executable
.
other-modules: Utils AFewOthers
La distribuzione include solo i file di origine che sono elencati nel file .cabal
. Cabal non ha altro modo per rilevare quale fonte file sono nel pacchetto. Si potrebbe ancora costruire perché cabal build
chiama ghc --make
, e GHC trovare e compilare tutti i file di origine di cui ha bisogno.