LINUX-INFO.ECLASS

章节: eclass-manpages (5)
更新: 2024 年 11 月
索引 返回主内容

名称

linux-info.eclass - 用于访问内核相关信息的 eclass

描述

此 eclass 用作访问内核相关信息的中心 eclass,用于已安装的源代码或二进制文件。它对于 linux-mod.eclass 的正常运行至关重要,并被拆分出来,以便任何 ebuild 行为“模板”都可以使用额外的 eclass 抽象出来。

此文件中的“内核配置”是指:当前安装的源代码的 .config 作为首选,如果可用,则回退到捆绑的配置 (/proc/config.gz)。

在使用此 eclass 中的任何配置处理函数之前,必须确保已调用以下函数之一(按优先级排序),否则您将遇到像 #364041 这样的错误):linux-info_pkg_setup linux-info_get_any_version get_version get_running_version

支持的 EAPIS

7 8

函数

set_arch_to_kernel
将 env ARCH 设置为与内核期望的匹配。
set_arch_to_pkgmgr
将 env ARCH 设置为与包管理器期望的匹配。
qout
qout <einfo | ewarn | eerror> 是一个静默调用,当 EBUILD_PHASE 不应该有可见输出时使用。
qeinfo
qeinfo 是一个静默的 einfo 调用,当 EBUILD_PHASE 不应该有可见输出时使用。
qewarn
qewarn 是一个静默的 ewarn 调用,当 EBUILD_PHASE 不应该有可见输出时使用。
qeerror
qeerror 是一个静默的 error 调用,当 EBUILD_PHASE 不应该有可见输出时使用。
getfilevar <变量> <配置文件>
它检测在文件“配置文件”中定义的变量的值。这是通过包含“配置文件”并使用 Make 打印变量来完成的。如果您的 makefile 缺少依赖项,它将无法正常工作!

返回值:变量的值

getfilevar_noexec <变量> <配置文件>
它检测在文件“配置文件”中定义的变量的值。这是通过使用 sed 匹配表达式来完成的。如果定义了该变量,您将会遇到问题。对于这些情况,请参阅 getfilevar。

返回值:变量的值

linux_config_src_exists
如果 .config 存在于构建目录中,则返回 true,否则返回 false

返回值:true 或 false

linux_config_bin_exists
如果 .config 存在于 /proc 中,则返回 true,否则返回 false

返回值:true 或 false

linux_config_exists
如果 .config 存在,则返回 true,否则返回 false

在使用任何 linux_chkconfig_* 函数之前,必须检查此函数。

返回值:true 或 false

linux_config_path
回显要使用的配置文件的名称。如果找不到任何配置文件,则返回 false。
require_configured_kernel
此函数验证当前内核是否已配置(它检查 .config 的存在),否则它将终止。
linux_chkconfig_present <选项>
它检查 CONFIG_<选项>=y 或 CONFIG_<选项>=m 是否存在于当前内核的 .config 中。如果 linux_config_exists 返回 false,则此操作的结果将是未定义的。您必须先调用 linux_config_exists。

返回值:true 或 false

linux_chkconfig_module <选项>
它检查 CONFIG_<选项>=m 是否存在于当前内核的 .config 中。如果 linux_config_exists 返回 false,则此操作的结果将是未定义的。您必须先调用 linux_config_exists。

返回值:true 或 false

linux_chkconfig_builtin <选项>
它检查 CONFIG_<选项>=y 是否存在于当前内核的 .config 中。如果 linux_config_exists 返回 false,则此操作的结果将是未定义的。您必须先调用 linux_config_exists。

返回值:true 或 false

linux_chkconfig_string <选项>
它打印当前内核 .config 中 CONFIG_<选项> 的值(它需要一个已配置的内核)。如果 linux_config_exists 返回 false,则此操作的结果将是未定义的。您必须先调用 linux_config_exists。

返回值:CONFIG_<选项>

kernel_is [-lt -gt -le -ge -eq] <主版本号> [次版本号 修订版本号]
当当前内核版本满足与传递的版本进行比较时,它返回 true。-eq 是默认比较。

For Example where KV = 2.6.9
kernel_is 2 4   returns false
kernel_is 2     returns true
kernel_is 2 6   returns true
kernel_is 2 6 8 returns false
kernel_is 2 6 9 returns true

返回值:true 或 false

get_version
它获取 KERNEL_DIR 中内核的版本,并填充 KV_FULL 变量(如果 KV_FULL 已经设置,则它不会执行任何操作)。

内核版本变量(KV_MAJOR、KV_MINOR、KV_PATCH、KV_EXTRA 和 KV_LOCAL)也会被设置。

KV_DIR 使用 KERNEL_DIR 环境变量设置,KV_OUT_DIR 使用有效的 KBUILD_OUTPUT 设置(按优先级降序,我们查找环境变量、makefile 变量或符号链接 /lib/modules/${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}/build)。

get_running_version
它获取当前运行内核的版本,如果该函数可以找到源代码,则结果与 get_version() 相同。
linux-info_get_any_version
这尝试找到源代码的版本,否则回退到运行内核的版本。
check_kernel_built
此函数验证当前内核源代码是否已准备好,否则它将终止。
check_modules_supported
此函数验证当前内核是否支持模块(它检查 CONFIG_MODULES=y),否则它将终止。
check_extra_config
它检查 CONFIG_CHECK 指定的内核配置选项。只有当所需的配置选项(即没有使用前缀 ~)不满足指令时,它才会终止。在非 Linux 系统上忽略。
check_zlibinflate
用于确保 ZLIB_INFLATE 配置具有所需符号的函数。
linux-info_pkg_setup
从 linux-mod.eclass 继承时强制执行 get_version() 调用,然后检查内核是否已配置为支持 CONFIG_CHECK 中指定的选项(如果为空)。
kernel_get_makefile
支持 Makefile 可能以下之一,并且应按此处描述的顺序进行检查:https://www.gnu.org/software/make/manual/make.html 检查顺序和有效的 Makefile 名称:GNUMakefile、makefile、Makefile

ECLASS 变量

CHECKCONFIG_DONOTHING ?= "" (用户变量)
如果 CONFIG 设置未满足,则不要在 check_extra_config 中出错。这是一个用户标志,在任何情况下都不应在 ebuild 中设置。
KERNEL_DIR = "${KERNEL_DIR:-${ROOT}/usr/src/linux}"
包含目标内核源代码目录的字符串。默认值为“/usr/src/linux”
CONFIG_CHECK
包含要检查的 .config 选项列表的字符串,以便继续安装。


  例如: CONFIG_CHECK="MTRR"

您还可以通过在前面添加一个感叹号 (!) 来检查选项是否不存在。


  例如: CONFIG_CHECK="!MTRR"

要简单地警告缺少的选项,请在前面添加一个 ~。它可以与 ! 结合使用。

通常,大多数检查都应该是非致命的。只有在构建内核模块或在没有该选项的情况下编译将失败的情况下,才应使用致命检查。

这是为了允许使用二进制内核和没有内核源代码的最小系统。

ERROR_<CFG>
包含在针对 CONFIG_CHECK 检查失败时要显示的错误消息的字符串。<CFG> 应该引用 CONFIG_CHECK 中使用的适当选项。

例如:ERROR_MTRR="MTRR 存在于 .config 中,但它不应该存在!!"

CONFIG_CHECK="CFG" 与 ERROR_<CFG>="错误消息" 将终止 CONFIG_CHECK="~CFG" 与 ERROR_<CFG>="错误消息" 调用 eerror 而不终止 CONFIG_CHECK="~CFG" 与 WARNING_<CFG>="警告消息" 调用 ewarn 而不终止

KBUILD_OUTPUT
命令行传递的字符串,或从内核 makefile 设置。它包含要用作内核对象目录的目录。
KV_FULL (由 ECLASS 生成)
一个只读变量。它是一个包含完整内核版本的字符串。例如:2.6.9-gentoo-johnm-r1
KV_MAJOR (由 ECLASS 生成)
一个只读变量。它是一个包含内核主版本的整数。例如:2
KV_MINOR (由 ECLASS 生成)
一个只读变量。它是一个包含内核次版本的整数。例如:6
KV_PATCH (由 ECLASS 生成)
一个只读变量。它是一个包含内核修订版本的整数。例如:9
KV_EXTRA (由 ECLASS 生成)
一个只读变量。它是一个包含内核 EXTRAVERSION 的字符串。例如:-gentoo
KV_LOCAL (由 ECLASS 生成)
一个只读变量。它是一个包含内核 LOCALVERSION 连接的字符串。例如:-johnm
KV_DIR (由 ECLASS 生成)
一个只读变量。它是一个包含内核源代码目录的字符串,如果 KERNEL_DIR 无效,则为空。
KV_OUT_DIR (由 ECLASS 生成)
一个只读变量。它是一个包含内核对象目录的字符串,除非使用了 KBUILD_OUTPUT,否则它将是 KV_DIR。这应该用于引用 .config。
SKIP_KERNEL_CHECK ?= "" (用户变量)
不要检查内核源代码或运行内核版本。主要用例是 chroot。这是一个用户标志,在任何情况下都不应在 ebuild 中设置。
SKIP_KERNEL_BINPKG_ENV_RESET
如果设置,则在将包作为 binpkg 合并时不要重置内核环境变量。主要用例是内核模块,即 linux-mod-r1.eclass。这应该在运行 linux-info_pkg_setup 之前设置

作者

原始作者:John Mylchreest <[email protected]>

维护者

[email protected]

报告 Bug

请通过 https://bugs.gentoo.org/ 报告 Bug

文件

linux-info.eclass

参见

ebuild(5)
https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/linux-info.eclass


索引

名称
描述
支持的 EAPIS
函数
ECLASS 变量
作者
维护者
报告 Bug
文件
参见

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