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


索引

名称
描述
支持的 EAPIS
功能
ECLASS 变量
作者
维护者
报告 Bug
文件
另请参阅

本文档由 man2html 使用手册页创建。
时间:2024年11月12日 格林尼治标准时间03:27:00