1
0
Fork 0

dchkernel.eclass: Add eclass for kernel building

Rather than duplicate the src_* functions in every kernel package, the
`dchkernel` eclass can be inherited to automatically define the
necessary functions to build a kernel using the configuration file in an
ebuild's $FILESDIR
master
Dustin 2017-06-23 21:27:21 -05:00
parent 12eeb6bdda
commit 38df05b151
1 changed files with 53 additions and 0 deletions

53
eclass/dchkernel.eclass Normal file
View File

@ -0,0 +1,53 @@
# Copyright 1999-2017 Dustin C. Hatch
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: dchkernel.eclass
# @MAINTAINER:
# Dustin C. Hatch <dustin@hatch.name>
# @AUTHOR:
# Dustin C. Hatch <dustin@hatch.name>
# @BLURB: Build dustin's kernels
inherit multilib
DEPEND="=sys-kernel/gentoo-sources-${PVR}"
EXPORT_FUNCTIONS src_unpack src_configure src_install
KSRC_DIR=/usr/src/linux-${PV}-gentoo
if [ ${PR} != r0 ]; then
KSRC_DIR=${KSRC_DIR}-${PR}
fi
# @FUNCTION: dchkernel-src_unpack
# @USAGE:
# @DESCRIPTION:
# Creates ${S}
dchkernel_src_unpack() {
mkdir -p "${S}" || die
}
# @FUNCTION: dchkernel-src_configure
# @USAGE:
# @DESCRIPTION:
# Copies the kernel configuration from ${FILESDIR} and runs make oldconfig
dchkernel_src_configure() {
cp "${FILESDIR}"/${P}.kconfig .config || die
unset ARCH
make -C "${KSRC_DIR}" O="${S}" oldnoconfig || die
}
# @FUNCTION: dchkernel-src_install
# @USAGE:
# @DESCRIPTION:
# Installs the kernel image, configuration file, and System.map into
# /usr/${libdir}/kernels/${PF}
dchkernel_src_install() {
local installpath="/usr/$(get_libdir)"/kernels/"${PF}"
dodir "${installpath}"
make install INSTALL_PATH="${D%/}${installpath}" || die
if in_iuse modules && use modules; then
make modules_install INSTALL_MOD_PATH="${D%/}" || die
fi
}