diff options
-rw-r--r-- | eclass/kernel.eclass | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/eclass/kernel.eclass b/eclass/kernel.eclass new file mode 100644 index 000000000000..61f6b808cdaf --- /dev/null +++ b/eclass/kernel.eclass @@ -0,0 +1,111 @@ +# Copyright 1999-2002 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/eclass/kernel.eclass,v 1.1 2002/09/22 00:51:07 lostlogic Exp $ +ECLASS=kernel +EXPORT_FUNCTIONS src_unpack +# This eclass contains the common functions to be used by all lostlogic +# based kernel ebuilds + +# OKV=original kernel version, KV=patched kernel version. They can be the same. +OKV="`echo ${PV}|sed -e 's:^\([0-9]\+\.[0-9]\+\.[0-9]\+\).*:\1:'`" +EXTRAVERSION="`echo ${P} | \ + sed -e 's:^\(.*\)-sources-[0-9]\+\.[0-9]\+\.[0-9]\+.r*\([0-9]*\)\(.*$\):-\1-r\2\3:'`" +KV=${OKV}${EXTRAVERSION} +S=${WORKDIR}/linux-${KV} +PROVIDE="virtual/linux-sources" +HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/" +LICENSE="GPL-2" +SLOT="0" + +if [ $ETYPE = "sources" ] +then + #console-tools is needed to solve the loadkeys fiasco; binutils version needed to avoid Athlon/PIII/SSE assembler bugs. + DEPEND="!build? ( sys-apps/sed >=sys-devel/binutils-2.11.90.0.31 )" + RDEPEND="${DEPEND} + !build? ( >=sys-libs/ncurses-5.2 + sys-devel/perl + >=sys-apps/modutils-2.4.2 + sys-devel/make )" +fi + +[ -z "$LINUX_HOSTCFLAGS" ] && LINUX_HOSTCFLAGS="-Wall -Wstrict-prototypes -Os -fomit-frame-pointer -I${S}/include" + +kernel_exclude() { + for mask in ${KERNEL_EXCLUDE}; do + for patch in *${mask}*; do + echo "Excluding: ${patch}" + rm ${patch} + done + done +} + +src_unpack() { + + kernel_exclude + + ./addpatches . ${WORKDIR}/linux-${KV} || die "Addpatches failed, bad KERNEL_ExCLUDE?" + + #fix silly permissions in tarball + cd ${WORKDIR} + chown -R 0.0 * + chmod -R a+r-w+X,u+w * + + # Gentoo Linux uses /boot, so fix 'make install' to work properly + # also fix the EXTRAVERSION + cd ${S} + mv Makefile Makefile.orig + sed -e 's:#export\tINSTALL_PATH:export\tINSTALL_PATH:' \ + -e "s:^\(EXTRAVERSION =\).*:\1 ${EXTRAVERSION}:" \ + Makefile.orig >Makefile || die # test, remove me if Makefile ok + rm Makefile.orig + + #sometimes we have icky kernel symbols; this seems to get rid of them + make distclean || die + + #this file is required for other things to build properly, so we autogenerate it + make include/linux/version.h || die +} + +src_compile() { + if [ "$ETYPE" = "headers" ] + then + yes "" | make oldconfig + echo "Ignore any errors from the yes command above." + fi +} + +src_install() { + if [ "$ETYPE" = "sources" ] + then + dodir /usr/src + echo ">>> Copying sources..." + cat ${WORKDIR}/${KV}/docs/* > patches.txt + dodoc patches.txt + mv ${WORKDIR}/linux* ${D}/usr/src + else + #linux-headers + dodir /usr/include/linux + cp -ax ${S}/include/linux/* ${D}/usr/include/linux + rm -rf ${D}/usr/include/linux/modules + dodir /usr/include/asm + cp -ax ${S}/include/asm-i386/* ${D}/usr/include/asm + fi +} + +pkg_preinst() { + if [ "$ETYPE" = "headers" ] + then + [ -L ${ROOT}usr/include/linux ] && rm ${ROOT}usr/include/linux + [ -L ${ROOT}usr/include/asm ] && rm ${ROOT}usr/include/asm + true + fi +} + +pkg_postinst() { + [ "$ETYPE" = "headers" ] && return + if [ ! -e ${ROOT}usr/src/linux ] + then + rm -f ${ROOT}usr/src/linux + ln -sf linux-${KV} ${ROOT}/usr/src/linux + fi +} |