GUILE.ECLASS
章节: eclass-manpages (5)更新: 2024 年 11 月
索引 返回主内容
名称
guile.eclass - 用于多实现 Guile 软件包的工具。描述
此 eclass 便于针对多个 Guile 实现进行构建,这对 Guile 库很有用。每个 ebuild 必须将 GUILE_COMPAT 设置为支持的版本列表,该列表将与 GUILE_TARGETS 相交以选择要安装的版本。eclass 将根据配置的 GUILE_COMPAT 生成一个 GUILE_DEPS,以及用户必须使用的 GUILE_REQUIRED_USE。如果 eclass 的用户需要在 Guile 本身启用一些 USE 标志,他们应该通过 GUILE_REQ_USE 提供它。
此 ebuild 提供多构建功能。使用 guile_foreach_impl 为每个启用的 Guile 版本运行给定的命令。提供的命令将在修改后的环境中运行,有关更多详细信息,请参见该函数的描述。
此软件包提供了一些阶段函数,这些函数假设传统的基于 GNU 构建系统的 Guile 库,可能有效,也可能无效。
对于每个 Guile 目标,Guile 库应该至少在 ccache 或 %site-ccache-dir 中有编译的 .go 文件。它还必须在 %site-dir 中安装相应的源代码。
如果您的软件包有一些步骤应该只对一个实现发生(例如,安装程序),您可以使用 guile_for_best_impl。
由于 http://debbugs.gnu.org/cgi/bugreport.cgi?bug=38112, Guile 软件包应该在构建之前更新其源代码。为此,此 eclass 提供的 src_prepare 将调用 guile-utils eclass 的 guile_bump_sources。
安装时,使用此 eclass 的软件包应该使用 guile_foreach_impl 及其 SLOTTED_{,E}D,然后通过 guile_merge_roots 合并根目录,并通过 guile_unstrip_ccache 取消 ccache 对象的剥离。有关详细信息,请参见这些函数的描述。
Ebuild 作者,请注意插槽之间可能存在的冲突。例如,dev-scheme/guile-lib 安装一个 pkg-config 文件,该文件取决于它为其安装的 Guile 版本。这是不可接受的,因为它意味着 revdeps 将只看到 GUILE_TARGETS 中最佳 Guile 实现的文件版本。
支持的 EAPIS
8传递提供的 ECLASSES
guile-utils示例
以下示例演示了一个完全依赖于此 eclass 设置的简单软件包。对于每个启用的兼容目标,ebuild 将更新源代码(参见描述),并运行默认的配置、编译和测试阶段(根据 PMS,即 GNU 构建系统),以及一个修改后的安装阶段,使其将每个变体安装到 SLOTTED_D 中,然后合并根目录并取消剥离。
EAPI=8 GUILE_COMPAT=( 2-2 3-0 ) inherit guile DESCRIPTION="iCalendar/vCard parser for GNU Guile" HOMEPAGE="https://github.com/artyom-poptsov/guile-ics" SRC_URI="https://github.com/artyom-poptsov/${PN}/releases/download/v${PV}/${P}.tar.gz" LICENSE="GPL-3+" SLOT="0" KEYWORDS="~amd64" REQUIRED_USE="${GUILE_REQUIRED_USE}" RDEPEND=" ${GUILE_DEPS} dev-scheme/guile-smc[${GUILE_USEDEP}] " DEPEND="${RDEPEND}"
功能
- guile_pkg_setup
- 为此次构建设置 eclass 内部变量。
- guile_copy_sources
- 为每个选定的 Guile 实现创建软件包源代码的单个副本。
- SLOTTED_D
- 在由 guile_foreach_impl 运行的函数中,此变量设置为要安装的变体应该使用的新的 ${D} 值。
- SLOTTED_ED
- 在由 guile_foreach_impl 运行的函数中,此变量设置为要安装的变体应该使用的新的 ${ED} 值。它等效于 "${SLOTTED_D%/}${EPREFIX}/"。
- ECONF_SOURCE
- 在由 guile_foreach_impl 运行的函数中,此变量设置为 ${S},为了方便起见。
- PKG_CONFIG_PATH
- 在由 guile_foreach_impl 运行的函数中,PKG_CONFIG_PATH 被过滤,只包含当前的 ${MULTIBUILD_VARIANT}。
- BUILD_DIR
- 在由 guile_foreach_impl 运行的函数中,此变量设置为为此变体新生成的构建目录。
- guile_foreach_impl <command> [<argv>...]
- 为每个选定的 Guile 实现运行给定的命令。
如果所有调用都成功,该函数将返回 0 状态。否则,将返回第一个失败调用的返回代码。
每次调用都会修改 PKG_CONFIG_DIR,使其只包含一个 Guile 实现,以及 SLOTTED_D、SLOTTED_ED(用于安装目的),以及一个新的 BUILD_DIR,在其中执行包装的函数,并预先配置了 ECONF_SOURCE。一个名为“guile-config”的临时程序被生成并插入到 PATH 中。
还自动导出 GUILE、GUILD 和 GUILESNARF - 有关详细信息,请参见 guile_export - 以及 GUILE_CURRENT_VERSION 和 GUILE_EFFECTIVE_VERSION,它们设置为相同的值(当前版本)。
这种组合应该覆盖大多数软件包开箱即用的 Guile 检测。
- guile_merge_roots
- 合并所有插槽的安装根目录,诊断冲突。
- guile_for_best_impl
- 运行传递的命令一次,针对安装的最佳 Guile 实现。
- guile_src_prepare
- 更新 SCM 源代码,运行默认的 src_prepare 并更新所有 *.scm 文件。参见 guile-utils.eclass 的 guile_bump_sources。
- guile_src_configure
- 为每个选定的变体目标运行默认的 src_configure。
- guile_src_compile
- 为每个选定的变体目标运行默认的 src_compile。
- guile_src_test
- 为每个实现运行默认的 src_test 阶段。
- guile_src_install
- 运行默认 src_install 的模拟,它对基于 GNU 构建系统的 Guile 软件包执行正确的操作,为每个选定的变体目标。在完成安装后合并根目录。
ECLASS 变量
- GUILE_USEDEP (由 ECLASS 生成)
- USE 依赖项字符串,可以应用于 Guile 多实现依赖项。
- GUILE_COMPAT (必填) (在继承之前设置)
- 可接受的 Guile 版本列表。例如,像下面这样设置此变量将允许软件包针对 Guile 2.2 或 3.0 进行构建
GUILE_COMPAT=( 2-2 3-0 )
请保持升序排列。
作者
作者: Arsen Arsenović <[email protected]>受 Gentoo Python 生态系统中先前工作的启发。
维护者
Gentoo Scheme 项目 <[email protected]>报告错误
请通过 https://bugs.gentoo.org/ 报告错误文件
guile.eclass另请参见
ebuild(5)https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/guile.eclass
索引
此文档由 man2html 使用手册页创建。
时间: 2024 年 11 月 12 日,格林尼治标准时间 03:27:00