2011-01-09 1 views
3

Nach dem wiki Eintrag,Warum enthält "cabal sdist" nicht alle "zum Erstellen benötigten Dateien"?

die Dateien Pakete bis benötigt, um das Projekt

Ich habe eine einfache ausführbare Dateien nur für .cabal Projekt zu bauen, die

Executable myprog 
    hs-source-dirs: src 
    main-is: MyMain.hs 

im Grunde enthält und besteht aus einigen zusätzlichen .hs Dateien unter src/ über src/MyMain.hs hinaus. Zum Beispiel src/Utils.hs und ein paar andere.

cabal build hat keine Probleme den Aufbau myprog, und stellt die erforderlichen zusätzlichen .hs Dateien unter src/, aber cabal sdist nicht der Fall, so eine dysfunktionale Quelle-Tarball zu schaffen. Was mache ich falsch? Wie sage ich cabal, dass alle Quelldateien unter hs-source-dirs enthalten sind?

Als Randnotiz gab es mit GNU Autotools ein make distcheck Ziel, das zuerst einen Quell-Tarball erstellen würde, und dann versuchen würde, das Projekt über den neu generierten Quell-Tarball zu erstellen, um sicherzustellen, dass alles in Ordnung ist. Gibt es etwas ähnliches für cabal, um sicherzustellen, dass mein Source-Tarball Sound ist?

Antwort

4

Sie sollten die anderen Haskell-Dateien in der Datei .cabal innerhalb der Executable Zeilengruppe auflisten.

other-modules: Utils AFewOthers 

Die Distribution enthält nur Quelldateien, die in Ihrem .cabal Datei aufgeführt sind. Cabal hat keine andere Möglichkeit festzustellen, welche Quelldateien sich in Ihrem Paket befinden. Sie könnten immer noch erstellen, weil cabal build ruft ghc --make, und GhC findet und kompilieren alle benötigten Quelldateien.