From c71a27d1d6c1936dd41cb8e3b645e68d4b7a08ba Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Sun, 10 Jan 2021 12:54:02 +0100 Subject: dist-kernel-utils.eclass: Introduce eclass for helper functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move some of the utility functions from kernel-install.eclass into dist-kernel-utils.eclass, in order to permit using them without having all kernel-install phases exported. This will be used in order to support rebuilding initramfs in sys-fs/zfs-kmod. Since the eclasses are used only by dist-kernel project eclasses and ebuilds, update the function prefix while moving them. Signed-off-by: Michał Górny --- eclass/dist-kernel-utils.eclass | 96 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 eclass/dist-kernel-utils.eclass (limited to 'eclass/dist-kernel-utils.eclass') diff --git a/eclass/dist-kernel-utils.eclass b/eclass/dist-kernel-utils.eclass new file mode 100644 index 000000000000..cf7165d89947 --- /dev/null +++ b/eclass/dist-kernel-utils.eclass @@ -0,0 +1,96 @@ +# Copyright 2020-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# @ECLASS: dist-kernel-utils.eclass +# @MAINTAINER: +# Distribution Kernel Project +# @AUTHOR: +# Michał Górny +# @SUPPORTED_EAPIS: 7 +# @BLURB: Utility functions related to Distribution Kernels +# @DESCRIPTION: +# This eclass provides various utility functions related to Distribution +# Kernels. + +if [[ ! ${_DIST_KERNEL_UTILS} ]]; then + +case "${EAPI:-0}" in + 0|1|2|3|4|5|6) + die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}" + ;; + 7) + ;; + *) + die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}" + ;; +esac + +# @FUNCTION: dist-kernel_build_initramfs +# @USAGE: +# @DESCRIPTION: +# Build an initramfs for the kernel. specifies the absolute +# path where initramfs will be created, while specifies +# the kernel version, used to find modules. +# +# Note: while this function uses dracut at the moment, other initramfs +# variants may be supported in the future. +dist-kernel_build_initramfs() { + debug-print-function ${FUNCNAME} "${@}" + + [[ ${#} -eq 2 ]] || die "${FUNCNAME}: invalid arguments" + local output=${1} + local version=${2} + + ebegin "Building initramfs via dracut" + dracut --force "${output}" "${version}" + eend ${?} || die "Building initramfs failed" +} + +# @FUNCTION: dist-kernel_get_image_path +# @DESCRIPTION: +# Get relative kernel image path specific to the current ${ARCH}. +dist-kernel_get_image_path() { + case ${ARCH} in + amd64|x86) + echo arch/x86/boot/bzImage + ;; + arm64) + echo arch/arm64/boot/Image.gz + ;; + arm) + echo arch/arm/boot/zImage + ;; + ppc64) + # ./ is required because of ${image_path%/*} + # substitutions in the code + echo ./vmlinux + ;; + *) + die "${FUNCNAME}: unsupported ARCH=${ARCH}" + ;; + esac +} + +# @FUNCTION: dist-kernel_install_kernel +# @USAGE: +# @DESCRIPTION: +# Install kernel using installkernel tool. specifies +# the kernel version, full path to the image, +# full path to System.map. +dist-kernel_install_kernel() { + debug-print-function ${FUNCNAME} "${@}" + + [[ ${#} -eq 3 ]] || die "${FUNCNAME}: invalid arguments" + local version=${1} + local image=${2} + local map=${3} + + ebegin "Installing the kernel via installkernel" + # note: .config is taken relatively to System.map; + # initrd relatively to bzImage + installkernel "${version}" "${image}" "${map}" + eend ${?} || die "Installing the kernel failed" +} + +_DIST_KERNEL_UTILS=1 +fi -- cgit v1.2.3-65-gdbad