PERL-FUNCTIONS.ECLASS
章节: eclass-manpages (5)更新: 2024年11月
索引 返回主内容
名称
perl-functions.eclass - Perl 模块的辅助函数 eclass描述
perl-functions eclass 旨在简化 Perl 模块的安装,并将其集成到 Gentoo Linux 系统中。它提供辅助函数,而不是全局作用域中的阶段或变量操作。支持的 EAPI
7 8函数
- perl_set_version
- 从当前 Perl 解释器中提取版本信息和安装路径。
这将设置以下变量:PERL_VERSION、SITE_ARCH、SITE_LIB、ARCH_LIB、VENDOR_LIB、VENDOR_ARCH
此函数过去也称为 perlinfo。
示例
perl_set_version echo $PERL_VERSION
- perl_delete_localpod
- 删除临时安装目录 D 中的杂散 perllocal.pod 文件。
此函数过去也称为 fixlocalpod。
- perl_fix_osx_extra
- 在 ${S} 中查找 AppleDouble 编码的文件并将其删除。
- perl_delete_module_manpages
- 删除当前模块安装的手册页,例如 *.3pm 文件以及空目录。
- perl_delete_packlist
- 在 ${D} 中查找 .packlist 文件、空 .bs 文件和空目录,并删除找到的项目。
- perl_delete_emptybsdir
- 在 ${D} 中查找空 .bs 文件和空目录,并删除找到的项目。
- perl_fix_permissions
- 使 ${D} 中的所有文件用户可写,因为 EU::MM 对 w 位进行了奇怪的操作。请参阅 bug 554346。
- perl_fix_packlist
- 在 ${D} 中查找包含临时安装文件夹(即 ${D})的 .packlist 文本文件。如果找到该模式,则将其静默替换为 `/`。删除重复的条目;然后根据 ${D} 验证 packlist 中的所有条目,并修剪与已安装文件不对应的条目。
- perl_remove_temppath
- 在 ${D} 中查找包含临时安装文件夹(即 ${D})的文本文件。如果找到该模式,则将其替换为 `/` 并发出警告。
- perl_rm_files <文件列表>
- 从 Perl 版本中删除某些文件,并在删除它们的同时将其从 MANIFEST 中删除。
在 src_prepare 中用于删除错误的测试非常有用,并且强烈建议用于任何类似 'pod.t'、'pod-coverage.t' 或 'kwalitee.t' 的测试,因为它们测试的内容与最终用户完全无关,并且经常失败仅仅因为 Test::Pod... 的作者更改了他们的建议,因此失败仅对作者有用,而不是用户。
从 MANIFEST 中删除还可以避免不必要的日志消息警告用户“套件中缺少”文件。
示例
src_test() { perl_rm_files t/pod{,-coverage}.t perl-module_src_test }
- perl_link_duallife_scripts
- 移动文件并生成符号链接,以便安装脚本的双生命周期软件包不会导致文件冲突。主要用于 pkg_postinst 和 pkg_postrm,并且仅对 perl-core 软件包有意义。
- perl_check_env
- 检查用户执行个人 Perl 工作时可能意外设置的已知可疑 ENV 值的黑名单,这些值可能会意外泄漏到 portage 并破坏系统 Perl 安装。如果发现任何可疑字段,则会终止并告诉用户需要取消设置哪些字段。有一个解决方法,但您需要阅读代码才能了解它。
- perl_doexamples <文件或通配符列表>
- 安装准备运行的示例文件。在 perl-module.eclass src_install 中的某些情况下被调用(请参阅那里的文档)。
示例
src_install() { perl-module_src_install use examples && perl_doexamples "eg/*" }
- perl_has_module <模块名称>
- 查询已安装的系统 Perl 以查看是否安装了给定的模块。这**不会**加载相关的模块,只会预测它*可能*加载。
这主要是为了依赖项弱化的目的,以便可以在不向 portage 添加依赖项(这会混淆依赖项解析器)的情况下触发条件行为。
如果模块可用则返回 'true',如果模块不可用则返回错误
示例
perl_has_module "Test::Tester" && echo "Test::Tester installed"
返回值:如果可用则为 0,否则为非零值
- perl_has_module_version <模块名称> <最小上游版本>
- 查询已安装的系统 Perl 以查看是否安装了给定的模块,并且至少为给定的版本。
与 perl_has_module 相比,使用此功能需要更多谨慎,因为它需要加载相关的模块以确定版本兼容性,这可能会很**慢**,并且可能产生副作用(例如:由于某些依赖项导致 require 中编译失败,导致“失败”)。
还要注意模块版本是*最小*值,*必须*以上游版本格式编写,并且应该是合法的上游版本
如果模块可用并且至少为指定的版本,则返回 true 的退出代码
示例
perl_has_module_version "Test::Tester" "0.017" \ && echo "Test::Tester 0.017 or greater installed"
返回值:如果满足则为 0,否则为非零值
- perl_get_module_version <模块名称>
- 查询已安装的系统 perl 以报告已安装模块的版本。
请注意,这应该严格用于向最终用户进行诊断,并且可能在 pkg_info 中选择性地使用以增强 emerge --info 报告。
任何执行版本比较的操作**不得**使用此函数的返回值
还要注意,这**必须**至少尝试加载相关的模块作为其操作的一部分,因此容易出现**缓慢**的情况。
在编译失败和未安装的情况下,返回代码都会返回错误。
示例
MODVER=$(perl_get_module_version "Test::Simple") \ || die "Test::Simple not installed: $MODVER"
返回值:如果模块可用则为 0,如果出错则为非零值
- perl_get_raw_vendorlib
- 便利函数,用于优化常见情况,而无需在任何地方都双重处理变量。
注意:将在相关情况下包含 EPREFIX
示例
my_raw_vendorlib="$(perl_get_raw_vendorlib)"
- perl_get_vendorlib
- 便利助手,用于返回 Perls 的供应商安装根目录,不带 EPREFIX。
示例
my_vendorlib="$(perl_get_vendorlib)"
- perl_domodule [-C <目标>] [-r] <文件>
- 在默认 Perl 运行时可以找到它们的路径中安装文件。
注意:仅应在 src_install 或 pkg_preinst 中使用,其他任何地方都会执行错误的操作或终止。
<文件> 列表的内容将复制到 Perls 供应商库路径中,如下所示
# install perl/File.pm as Samba::File pushd perl/ perl_domodule -C Samba File.pm # install perl/ recursively under VENDORLIB/Samba/ pushd perl/ perl_domodule -C Samba -r .
options: -C Target/Name The subdirectory relative to the Perl VENDOR_LIB to install into. defaults to "" -r Install directories recursively ( see doins ) files: list of .pm files to install to VENDORLIB
- perl_get_wikiurl
- 便利助手,用于返回软件包的 Gentoo Wiki 维护页面 URL。可选地,可以传递后缀作为页面内锚点。
示例
my_url="$(perl_get_wikiurl Testing)"
作者
Seemant Kulleen <[email protected]>Andreas K. Huettel <[email protected]>
Kent Fredric <[email protected]>
维护者
[email protected]报告 Bug
请通过 https://bugs.gentoo.org/ 报告 Bug文件
perl-functions.eclass另请参阅
ebuild(5)https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/perl-functions.eclass
索引
本文件由 man2html 使用手册页创建。
时间:2024年11月12日,格林威治标准时间03:27:00