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
索引
此文档由 man2html 使用手册页创建。
时间:2024 年 11 月 12 日,格林尼治标准时间 03:27:01