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


索引

名称
描述
支持的 EAPIS
传递提供的 ECLASSES
示例
功能
ECLASS 变量
作者
维护者
报告错误
文件
另请参见

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