GAP-PKG.ECLASS
章节: eclass-manpages (5)更新: 2024年11月
索引 返回主内容
名称
gap-pkg.eclass - 简化 GAP 软件包的安装。描述
此 eclass 的主要目的是构建和安装通常位于 dev-gap 类别的 GAP 软件包。大多数 GAP 软件包都不支持开箱即用的安装目标,因此默认安装是“手动”进行的,并注意那些属于推荐布局一部分的目录。但是,准备、配置和编译阶段确实尝试支持具有真实构建系统的软件包。GAP 本身有四个“必需”软件包,这些软件包是单独打包的,这使得它们之间的依赖关系有点奇怪。四个必需的软件包是:
* dev-gap/gapdoc
* dev-gap/primgrp
* dev-gap/smallgrp
* dev-gap/transgrp
这四个软件包将仅在 RDEPEND 中添加 sci-mathematics/gap。所有其他软件包除了 sci-mathematics/gap 之外,还将在 RDEPEND 中添加上述四个必需软件包。理论上,最好明确列出所有依赖项,而不是将“必需”的四个依赖项组合在一起,但这就是上游 GAP 的工作方式,也是所有 GAP 软件包的预期方式;例如,大多数测试套件在没有必需软件包的情况下会失败,但不会尝试加载它们。
如果您需要对 sci-mathematics/gap 进行版本约束,则必须自行指定。编译后的软件包可能也需要在 DEPEND 中使用 sci-mathematics/gap,并且可能还需要子槽依赖项。
支持的 EAPIS
8函数
- gap-pkg_dir
- 应将 gap 软件包安装到的目录。当前接受的位置是 /usr/$(get_libdir)/gap/pkg,但从技术上讲,这取决于 sci-mathematics/gap 中的 econf 调用。
- gap-pkg_econf [额外 econf 参数]
- 调用 econf,将 _gap-pkg_gaproot 的值传递给 --with-gaproot。传递给 gap-pkg_econf 的所有参数都将传递给 econf。
- gap-pkg_src_configure
- 处理 autoconf 配置脚本和许多 GAP 软件包使用的手动编写的脚本。我们通过运行 ./configure --help 来确定我们正在处理哪一个;autoconf 配置脚本将在输出中提到“PREFIX”,其他脚本则不会。
使用 gap-pkg_econf 配置 Autoconf 配置脚本,而手动编写的脚本则直接使用 _gap-pkg_gaproot 作为其唯一的位置参数执行。
- gap-pkg_src_compile
- 默认的 src_compile,并在 emake 中添加 V=1。用于构建大多数 C 软件包的 Makefile.gappkg 默认情况下会进行静默构建,而不会使用此功能。
- gap-pkg_enable_tests
- 为具有测试套件的软件包修改 IUSE、RESTRICT 和 BDEPEND。这以 distutils-r1 和 elisp-common eclass 中的类似函数为模型,除了这里只支持一种默认的测试策略。如果设置了 USE=test,则所有运行时和合并后依赖项都将添加为构建依赖项。
- gap-pkg_src_test
- 如果软件包有测试套件,则运行此软件包的测试套件。GAP TestPackage 函数是执行此操作的标准方法,但它确实依赖于软件包本身来正确执行一些操作,例如详细运行测试并以适当的代码退出。另一种方法是在“tst”上自己运行 TestDirectory,但这也有其自身的问题;特别是许多软件包都设置了仅在使用 TestPackage 时才运行的设置代码。YMMV。
- gap-pkg_src_install
- 安装遵循建议布局的 GAP 软件包,
https://docs.gap-system.org/doc/ref/chap76.html特别是
1. 安装 $S 中的所有 GAP 源文件(*.g)。
2. 如果存在名为“gap”或“lib”的库目录,
则安装它。3. 如果存在二进制目录“bin”,则安装它。
4. 如果存在“doc”目录,我们假设 GAPDoc 约定
(https://docs.gap-system.org/pkg/gapdoc/doc/chap5.html) 并安装
我们找到的东西。不幸的是,对于我们来说,每个软件包的
PackageInfo.g 都包含一个“PackageDoc”部分,该部分指向此
文档,我们无法破坏它引用的路径。相反,
我们尝试将文档的可读部分(PDF
手册)符号链接到适当的 Gentoo 位置。5. 我们查询 GAP_PKG_HTML_DOCDIR 以获取 HTML 文档并重复
上述过程。一些 GAP 软件包具有带有有效“make install”例程的 autotools 构建系统,但大多数都没有。因此,目前我们省略了该步骤。解决不支持它的软件包比解决支持它的软件包更难。
ECLASS 变量
- GAP_PKG_EXTRA_INSTALL
- 要在此软件包的目录树根目录下递归安装的其他文件和目录的 bash 数组。例如,如果您有一个软件包主要遵循建议的布局(在 gap-pkg_src_install 文档中描述),但也包含一个“data”目录,则应设置
GAP_PKG_EXTRA_INSTALL=( data )以安装 data 目录,而无需覆盖整个 src_install 阶段。
- GAP_PKG_HTML_DOCDIR ?= doc
- tarball 中 HTML 文档所在的目录。这通常是“doc”,符合建议的 GAPDoc 布局,也是此变量的默认值。但是,许多软件包反而使用顶级“htm”目录。指定的目录将安装到 gap-pkg_dir 并符号链接到 /usr/share/doc 下的常用位置。因此,您应该仅对 PackageInfo.g 或软件包的其他部分引用的目录使用此功能。位置不需要软件包在运行时知道的 HTML 文档应改为使用 HTML_DOCS 或类似机制安装。
作者
François Bissey <[email protected]>Michael Orlitzky <[email protected]>
维护者
François Bissey <[email protected]>Michael Orlitzky <[email protected]>
Gentoo 数学项目 <[email protected]>
报告 Bug
请通过 https://bugs.gentoo.org/ 报告 Bug文件
gap-pkg.eclass另请参阅
ebuild(5)https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/gap-pkg.eclass
索引
此文档由 man2html 使用手册页创建。
时间: 2024年11月12日 格林尼治标准时间03:27:01