采用一些不太老的 haskell 專案hdocs(最后更新于 2020 年 11 月...)。
- 如果我使用原始堆疊檔案構建它,一切都很好。而且我仍然可以在我自己的專案上與該 LTS 的其他庫一起構建它,這些庫可以很好地協同作業。可重現的構建是好的。
現在我想更新它的依賴
如果我構建它(之后
ghcup set ghc 9.0.2),cabal v1-build我會胡說八道“失敗回跳”和“私人依賴”如果我要么
cabal v2-build(之后ghcup set ghc 9.0.2)并讓它認真思考- 或者如果我使用
stack build
#stack.yaml
flags: {}
packages:
- '.'
resolver: nightly-2022-02-11
extra-deps:
- haddock-api-2.25.1
然后在這兩種情況下,我都會遇到 C 預處理錯誤(!)
Building library for hdocs-0.5.5.0..
src/HDocs/Base.hs:69:5: error:
error: function-like macro 'MIN_VERSION_haddock_library' is not defined
|
69 | #if MIN_VERSION_haddock_library(1,8,0)
| ^
#if MIN_VERSION_haddock_library(1,8,0)
^
...
該錯誤與某些代碼無關,而是與構建程序本身有關。
我在 haskell 生態系統中遺漏了一些明顯的東西嗎?
uj5u.com熱心網友回復:
根據Cabal User Guide 的相關部分MIN_VERSION,Cabal為每個依賴于 via 的包提供了一個宏。目前build-depends在GitHub 上僅在 build-depends 的條件部分指定 haddock-library,因此對于 GHC 以上的任何內容都將丟失8.10. 既然如此,如果我們要保持 cabal 檔案以相同的方式組織,則可以通過指定 GHC 9.0 的缺失依賴項來避免此特定錯誤:hdocs.cabal
-- In the library section of hdocs.cabal:
if impl(ghc == 9.0.*)
build-depends:
ghc == 9.0.*,
haddock-api >= 2.25 && < 2.26,
haddock-library == 1.10.*
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/427261.html
