# Copyright 1999-2003 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 # $Header: /home/cvsroot/gentoo-x86/sys-kernel/ck-sources/ck-sources-2.4.20-r6.ebuild,v 1.1 2003/04/16 03:39:35 lostlogic Exp $ IUSE="build supermount xfs acpi nforce2 bootsplash swapprefetch freqscal grsec" ETYPE="sources" inherit kernel || die # OKV=original kernel version, KV=patched kernel version. OKV="2.4.21" KV="2.4.21-ck${PR/r/}" S=${WORKDIR}/linux-${KV} EXTRAVERSION="-ck${PR/r/}" DESCRIPTION="Full sources for the Con Kolivas's high performance kernel and its optional features" HOMEPAGE="http://members.optusnet.com.au/ckolivas/kernel/index2.html" ### Below is a list of all the patchs used in current ck kernel: ## Main CK performance patch (O(1)B,PE,LL,CKVM,RL2,VH,ST,DT123) #MAIN_PATCH="0306111747_${KV}.patch.bz2" ## Performance enhancements (installed by default): # Base ck contains the batch O(1) scheduler, preemptible, low latency: BASE_PATCH="1000_O1_PE_LL_0306111747_${OKV}.patch.bz2" # Con Colivas autoregulation vm hacks: # (will be dropped if "aavm" or "rmap" is in USE) CKVM_PATCH="1010_CKVM_0306102120_${KV}.patch.bz2" # Read Latency2: RL2="1020_RL2_0305310042_${KV}.patch.bz2" # Desktop Tuning 1: DT1_PATCH="1021_DT1_030531616_${KV}.patch.bz2" # Variable HZ setting: VH_PATCH="1030_VH_0305310045_${KV}.patch.bz2" # Desktop Tuning 2: DT2_PATH="1031_DT2_0305310048_${KV}.patch.bz2" # Scheduler Tunables: ST_PATCH="1040_ST_0305310104_${KV}.patch.bz2" # Desktop Tuning 3: DT3_PATCH="1041_DT3_0305242209_${KV}.patch.bz2" ## Extra features: # Supermount-NG v1.2.7: # USE=supermount (local) SM_PATCH="1050_SM1.2.7_0305310109_${KV}.patch.bz2" # XFS file system: # USE=xfs (global) XFS_PATCH="1060_XFS_0305311351_${KV}.patch.bz2" # ACPI 20030522: # USE=acpi (global - should use "acpi4linux"?) ACPI_PATCH="1070_ACPI_0305311044_${KV}.patch.bz2" # Nvidia Nforce2 update: # USE=nforce2 (local) NF2_PATCH="1080_NF2_0305311048_${KV}.patch.bz2" # Bootsplash: # USE=bootsplash (local) BS_PATCH="1090_BS_0306020027_${KV}.patch.bz2" ## Misc other patches: # Swap prefetching: # USE=swapprefetch (local) SP_PATCH="1011_SP_0306102217_${KV}.diff.bz2" # CPU Frequency scaling for supported laptops: # USE=freqscal (local) CFS_PATCH="1100_CFS_0305311539_${KV}.patch.bz2" # Grsec 1.9.9h (depends on 1010 and 1060): # USE=grsec (local) GRS_PATCH="1161_GRS1.9.9h_0306081216_${KV}.patch.bz2" ### Create the SRC_URI from USE flags. CK_URL="http://members.optusnet.com.au/ckolivas/kernel" #SRC_URI="http://www.kernel.org/pub/linux/kernel/v2.4/linux-${OKV}.tar.bz2 ${CK_URL}/${MAIN_PATCH}" SRC_URI="http://www.kernel.org/pub/linux/kernel/v2.4/linux-${OKV}.tar.bz2" for PATCH in ${BASE_PATCH} ${CKVM_PATCH} ${RL2} ${DT1_PATCH} ${VH_PATCH} ${DT2_PATH} ${ST_PATCH} ${DT3_PATCH} do SRC_URI="${SRC_URI} ${CK_URL}/${PATCH}" done [ -n "`use supermount`" ] && SRC_URI="${SRC_URI} ${CK_URL}/${SM_PATCH}" [ -n "`use xfs`" -o -n "`use grsec`" ] && SRC_URI="${SRC_URI} ${CK_URL}/${XFS_PATCH}" [ -n "`use acpi`" ] && SRC_URI="${SRC_URI} ${CK_URL}/${ACPI_PATCH}" [ -n "`use nforce2`" ] && SRC_URI="${SRC_URI} ${CK_URL}/${NF2_PATCH}" [ -n "`use bootsplah`" ] && SRC_URI="${SRC_URI} ${CK_URL}/${BS_PATCH}" [ -n "`use swapprefetch`" ] && SRC_URI="${SRC_URI} ${CK_URL}/${SP_PATCH}" [ -n "`use freqscal`" ] && SRC_URI="${SRC_URI} ${CK_URL}/${CFS_PATCH}" [ -n "`use grsec`" ] && SRC_URI="${SRC_URI} ${CK_URL}/${GRS_PATCH}" KEYWORDS="~x86 -ppc" SLOT="${KV}" src_unpack() { # Symlink the default patches for PATCH in ${BASE_PATCH} ${CKVM_PATCH} ${RL2} ${DT1_PATCH} ${VH_PATCH} ${DT2_PATH} ${ST_PATCH} ${DT3_PATCH} do ln -s ${DISTDIR}/${PATCH} || die done # Symlink optional patches, taking the dependencies into account. [ -n "`use supermount`" ] && ( ln -s ${DISTDIR}/${SM_PATCH} || die ) [ -n "`use xfs`" -o -n "`use grsec`" ] && ( ln -s ${DISTDIR}/${XFS_PATCH} || die ) [ -n "`use acpi`" ] && ( ln -s ${DISTDIR}/${ACPI_PATCH} || die ) [ -n "`use nforce2`" ] && ( ln -s ${DISTDIR}/${NF2_PATCH} || die ) [ -n "`use bootsplah`" ] && ( ln -s ${DISTDIR}/${BS_PATCH} || die ) [ -n "`use swapprefetch`" ] && ( ln -s ${DISTDIR}/${SP_PATCH} || die ) [ -n "`use freqscal`" ] && ( ln -s ${DISTDIR}/${CFS_PATCH} || die ) [ -n "`use grsec`" ] && ( ln -s ${DISTDIR}/${GRS_PATCH} || die ) # Unpack the vanilla sources unpack linux-${OKV}.tar.bz2 # Apply the symlinked patches. (the way it probably should be) #for PATCH in 1* #do # einfo "Apply patch ${PATCH}" # bzcat ${PATCH} | patch -p0 || die "Patching with ${PATCH} failed." #done # I've added two temporary hacks here: # - remove the remaining "-rc8" in the first patch # - apply with -p1 because several patchs are not against 2.4.21 mv ${BASE_PATCH} 0-${BASE_PATCH} cd linux-${OKV} einfo "Apply patch ${BASE_PATCH}" bzcat ../0-${BASE_PATCH} | sed s:'EXTRAVERSION = -rc8':'EXTRAVERSION =': \ | patch -p1 || die "Patching with ${BASE_PATCH} failed." # einfo "Apply patch ${MAIN_PATCH}" # bzcat ${DISTDIR}/${MAIN_PATCH} | sed s:'EXTRAVERSION = -rc8':'EXTRAVERSION =': \ # | patch -p1 || die "Patching with ${MAIN_PATCH} failed." for PATCH in ../1* do einfo "Apply patch ${PATCH/\.\.\//}" bzcat ${PATCH} | patch -p1 || die "Patching with ${PATCH/\.\.\//} failed." done cd .. # Rename the kernel mv linux-${OKV} linux-${KV} || die # Do the usual cleanups cd linux-${KV} kernel_universal_unpack }