Почему при создании простой системы сборки для cabal используются две структуры PackageDescription? - PullRequest
2 голосов
/ 13 декабря 2011

Можно переопределить хук сборки по умолчанию простой системы сборки cabal в Setup.hs с помощью чего-то вида:

main = defaultMainWithHooks simpleUserHooks { buildHook = myBuildHook }

Где

myBuildHook :: PackageDescription -> LocalBuildInfo -> UserHooks -> BuildFlags -> IO ()

Итак, нам даны оба PackageDescriptionи LocalBuildInfo, но если мы посмотрим на последнее , то увидим, что оно содержит первое с именем записи localPkgDescr.

В свете этого я спрашиваю:

  1. Есть ли причина, по которой у нас есть два PackageDescription с?
  2. Если бы мы не переопределили buildHook, какой PackageDescription будет использоваться?

1 Ответ

2 голосов
/ 13 декабря 2011

Кажется, что первый PackageDescription в основном представляет необработанный файл <pkg>.cabal, в то время как обернутый PackageDescription содержит описание «разрешенного» пакета, в котором удалены флаги и разрешены все условные обозначения.

Мне не удалось более внимательно изучить фрагмент кода, где обе эти структуры используются одновременно, поэтому я не на 100% уверен в этом поведении.

...