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


索引

名称
描述
支持的 EAPI
函数
作者
维护者
报告 Bug
文件
另请参阅

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