HASKELL-CABAL.ECLASS
章节: eclass-manpages (5)更新时间: 2024年11月
索引 返回主目录
名称
haskell-cabal.eclass - 用于使用 Haskell 通用应用程序和库构建架构 (cabal) 的软件包描述
基本说明在继承 eclass 之前,设置 CABAL_FEATURES 以反映软件包使用的工具和功能。
当前支持的功能
haddock -- 用于文档生成
hscolour -- 生成彩色源代码
hoogle -- 生成文档搜索索引
profile -- 如果软件包支持构建启用概要分析的库
bootstrap -- 仅用于 cabal 软件包本身
lib -- 软件包安装库
nocabaldep -- 不添加对 cabal 的依赖关系。
仅用于_必须_不拉取依赖关系的软件包
到 cabal,但仍使用此 eclass(例如 haskell-updater)。
ghcdeps -- 将软件包到 ghc 的约束依赖关系一次
仅用于内部使用 libghc 并_必须_的软件包
不拉取较高版本
test-suite -- 添加对 cabal 测试套件的支持(在 Cabal-1.8 中引入)
rebuild-after-doc-workaround -- 启用 doctest 测试失败的解决方法。
症状:当在`build-type: Custom`中运行`./setup haddock`时
软件包,它可能会导致测试套件失败,并出现
错误,例如
> <命令行>:无法满足-package-id singletons-2.7-3Z7pnljD8tU1NrslJodXmr
解决方法重新注册软件包以避免失败
(并重建更改)。
修复 https://github.com/haskell/cabal/issues/7213 后,可以删除 FEATURE。
。
支持的 EAPIS
7 8功能
- cabal_flag
- 以 ebuild.sh:use_enable() 为基础
使用示例
CABAL_CONFIGURE_FLAGS=$(cabal_flag gui)
导致“--flags=gui”或“--flags=-gui”(useflag 'gui')
CABAL_CONFIGURE_FLAGS=$(cabal_flag gtk gui)
也导致“--flags=gui”或“ --flags=-gui”(useflag 'gtk') - cabal_chdeps
- 请参阅 CABAL_CHDEPS 变量以了解使用此函数的首选方法。
允许更轻松地修补 $CABAL_FILE(默认为 ${S}/${PN}.cabal)依赖项
接受作为替换对的参数列表:<from-string> <to-string>...
出错时退出。
- cabal-constraint
- 允许为指定软件包使用的库设置约束
- replace-hcflags <old> <new>
- 在 HCFLAGS 中用 <new> 替换 <old> 标志。接受 <old> 的 shell 通配符。实现是从 flag-o-matic.eclass:replace-flags() 中选择的。
- cabal-register-inplace
- 使用位于“${S}/dist/package.conf.inplace/”的原位软件包数据库注册软件包库。当软件包尚未安装时,有时测试需要这样做。不幸的是,此问题的预构建解决方案(例如“./setup register --inplace”)似乎无法正常工作。
除非 CABAL_HAS_LIBRARIES 设置为非空值,否则此函数将不会运行。
您可以将 SKIP_REGISTER_INPLACE 设置为非空值以跳过此函数(有用,因为它会从 haskell-cabal_src_test 中自动调用)。
如果测试套件位于单独的 haskell 软件包中,则可以手动设置环境变量 TEST_CABAL_PN 和 TEST_PN。
环境变量 EXTRA_PACKAGE_DBS 可用于设置 ghc-pkg 读取的其他数据库。
- cabal-run-dist-bin <bin> [args]
- 运行已构建但尚未安装到系统的可执行文件。这些位于“${S}/dist/build/”中,其中还包括可执行文件所需的库。(haskell-cabal_src_compile() 会自动将所需的库添加到 LD_LIBRARY_PATH 中)。
这仅用于在测试和安装阶段运行。
ECLASS 变量
- CABAL_EXTRA_CONFIGURE_FLAGS(用户变量)
- 传递给“setup configure”的用户指定的其他参数。示例:/etc/portage/make.conf
CABAL_EXTRA_CONFIGURE_FLAGS="--enable-shared --enable-executable-dynamic" - CABAL_EXTRA_BUILD_FLAGS(用户变量)
- 传递给“setup build”的用户指定的其他参数。示例:/etc/portage/make.conf: CABAL_EXTRA_BUILD_FLAGS=-v
- GHC_BOOTSTRAP_FLAGS(用户变量)
- 仅在构建“setup”二进制引导程序时,用于 ghc 的用户指定的其他参数。示例:/etc/portage/make.conf: GHC_BOOTSTRAP_FLAGS=-dynamic 以加快“setup”的链接速度。
- CABAL_EXTRA_HADDOCK_FLAGS(用户变量)
- 传递给“setup haddock”的用户指定的其他参数。示例:/etc/portage/make.conf
CABAL_EXTRA_HADDOCK_FLAGS="--haddock-options=--latex --haddock-options=--pretty-html" - CABAL_EXTRA_HOOGLE_FLAGS(用户变量)
- 传递给“setup haddock --hoogle”的用户指定的其他参数。示例:/etc/portage/make.conf
CABAL_EXTRA_HOOGLE_FLAGS="--haddock-options=--show-all" - CABAL_EXTRA_HSCOLOUR_FLAGS(用户变量)
- 传递给“setup hscolour”的用户指定的其他参数。示例:/etc/portage/make.conf
CABAL_EXTRA_HSCOLOUR_FLAGS="--executables --tests" - CABAL_EXTRA_TEST_FLAGS(用户变量)
- 传递给“setup test”的用户指定的其他参数。示例:/etc/portage/make.conf
CABAL_EXTRA_TEST_FLAGS="-v3 --show-details=streaming" - CABAL_DEBUG_LOOSENING
- 如果设置,则显示“cabal_chdeps”函数的调试输出。需要有效的“diff”。
- CABAL_REPORT_OTHER_BROKEN_PACKAGES ?= yes
- 如果“cabal configure”失败,则显示其他损坏的软件包。除非您知道即将尝试编译大量损坏的软件包,否则应正常启用。默认值:'yes' 设置为其他任何值以禁用。
- CABAL_HACKAGE_REVISION ?= 0(在继承之前设置)
- 设置来自 Hackage 的上游修订版本号。这将自动将上游 cabal 修订版本添加到 SRC_URI 并在 src_prepare 中应用它。
- CABAL_PN ?= ${PN}(在继承之前设置)
- 设置软件包在 Hackage 数据库中记录的名称。这主要用于软件包在上游使用 CamelCase 名称,但我们希望它们在 portage 中为小写。
- CABAL_PV ?= ${PV}(在继承之前设置)
- 设置软件包在 Hackage 数据库中记录的版本。如果我们在 Portage 中使用的版本方案与上游版本方案不同,这将很有用。
- CABAL_P = "${CABAL_PN}-${CABAL_PV}"(由 ECLASS 生成)
- 组合的 $CABAL_PN 和 $CABAL_PV 变量,类似于 $P
- CABAL_FILE ?= "${S}/${CABAL_PN}.cabal"
- Haskell 软件包的 .cabal 文件的位置。默认为“${S}/${CABAL_PN}.cabal”。
注意:如果在继承此 eclass 后在 ebuild 中重新定义了 $S,则也需要重新定义 $CABAL_FILE。
- CABAL_DISTFILE(由 ECLASS 生成)
- 从 Hackage 下载的 .cabal 文件的名称。此文件名不包含 $DISTDIR
- CABAL_CHDEPS
- 指定要对 .cabal 文件进行的更改。接受作为替换对的参数列表:<from-string> <to-string>... 在内部使用 cabal_chdeps 函数并共享相同的语法。
示例
CABAL_CHDEPS=( 'base >= 4.2 && < 4.6' 'base >= 4.2 && < 4.7'
'containers ==0.4.*' 'containers >= 0.4 && < 0.6'
) - CABAL_LIVE_VERSION(在继承之前设置)
- 将其设置为任何值以防止自动设置 SRC_URI。
- GHC_BOOTSTRAP_PACKAGES
- 编译 Setup.hs 时需要公开的其他软件包
- CABAL_TEST_REQUIRED_BINS
- 此软件包中包含的二进制文件,在测试期间需要这些文件。这会在 src_test() 期间调整 PATH,以便即使尚未安装二进制文件,也可以找到它们。
示例
CABAL_TEST_REQUIRED_BINS=( arbtt-{capture,dump,import,recover,stats} )
- CABAL_HADDOCK_TARGETS
- 手动设置 haddock/hoogle 的目标。当“./setup haddock”无法计算瞬态依赖项时,有时需要这样做。
示例
CABAL_HADDOCK_TARGETS="lib:${CABAL_PN}"
- CABAL_CHBINS
- 重命名与软件包一起安装的可执行文件。接受作为替换对的参数列表:<from-string> <to-string>...
示例
CABAL_CHBINS=( 'demo' 'byline-demo'
'simple' 'byline-simple'
'menu' 'byline-menu'
'shell' 'byline-shell'
)
作者
原始作者:Andres Loeh <[email protected]>原始作者:Duncan Coutts <[email protected]>
维护者
Haskell 团队 <[email protected]>报告 Bug
请通过 https://bugs.gentoo.org/ 报告 Bug文件
haskell-cabal.eclass另请参阅
ebuild(5)https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/haskell-cabal.eclass
索引
本文档由 man2html 使用手册页创建。
时间:2024年11月12日 格林尼治标准时间03:27:00