Почему «cabal sdist» не включает все «файлы, необходимые для сборки»? - PullRequest
3 голосов
/ 09 января 2011

Согласно записи вики ,

Упаковывает файлы, необходимые для сборки проекта

У меня есть простой проект .cabal только для исполняемых файлов, который в основном содержит

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

и состоит из некоторых дополнительных .hs файлов ниже src/ за пределами src/MyMain.hs. Например, src/Utils.hs и несколько других.

cabal build без проблем строит myprog и компилирует необходимые дополнительные .hs файлы ниже src/, но cabal sdist нет, создавая таким образом дисфункциональный архив исходного кода. Что я делаю неправильно? Как мне указать cabal включить все исходные файлы ниже hs-source-dirs?

В качестве дополнительного примечания, в GNU Autotools была цель make distcheck, которая сначала собирает архив исходного кода, а затем пытается построить проект с помощью только что сгенерированного исходного архива, таким образом обеспечивая все в порядке. Есть ли что-то подобное для cabal, чтобы убедиться, что мой исходный тарбол работает?

1 Ответ

4 голосов
/ 09 января 2011

Вы должны перечислить другие файлы Haskell в файле .cabal внутри раздела Executable.

  other-modules: Utils AFewOthers

В дистрибутив включены только исходные файлы, перечисленные в вашем файле .cabal.У Cabal нет другого способа определить, какие исходные файлы находятся в вашем пакете.Вы все еще могли бы собрать, потому что cabal build вызывает ghc --make, и ghc найдет и скомпилирует все необходимые исходные файлы.

...