#!/bin/bash
get_KV() {
- local SUB
- local EXV
-
- VER=`grep ^VERSION\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
- PAT=`grep ^PATCHLEVEL\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
- SUB=`grep ^SUBLEVEL\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
- EXV=`grep ^EXTRAVERSION\ \= ${KERNEL_DIR}/Makefile | sed -e "s/EXTRAVERSION =//" -e "s/ //g"`
- KV=${VER}.${PAT}.${SUB}${EXV}
-}
-
-determine_real_args() {
- if [ "${CMD_DEBUGFILE}" != '' ]
+ if [ "${NO_KERNEL_SOURCES}" = '1' -a -e "${KERNCACHE}" ]
then
- DEBUGFILE="${CMD_DEBUGFILE}"
- fi
-
- if [ "${CMD_MAKEOPTS}" != '' ]
- then
- MAKEOPTS="${CMD_MAKEOPTS}"
- fi
-
- if [ "${CMD_KERNELDIR}" != '' ]
- then
- KERNEL_DIR=${CMD_KERNELDIR}
+ /bin/tar -xj -C ${TEMP} -f ${KERNCACHE} kerncache.config
+ if [ -e ${TEMP}/kerncache.config ]
+ then
+ VER=`grep ^VERSION\ \= ${TEMP}/kerncache.config | awk '{ print $3 };'`
+ PAT=`grep ^PATCHLEVEL\ \= ${TEMP}/kerncache.config | awk '{ print $3 };'`
+ SUB=`grep ^SUBLEVEL\ \= ${TEMP}/kerncache.config | awk '{ print $3 };'`
+ EXV=`grep ^EXTRAVERSION\ \= ${TEMP}/kerncache.config | sed -e "s/EXTRAVERSION =//" -e "s/ //g"`
+ LOV=`grep ^CONFIG_LOCALVERSION\= ${TEMP}/kerncache.config | sed -e "s/CONFIG_LOCALVERSION=\"\(.*\)\"/\1/"`
+ KV=${VER}.${PAT}.${SUB}${EXV}${LOV}
+ else
+ gen_die "Could not find kerncache.config in the kernel cache! Exiting."
+ fi
else
- KERNEL_DIR=${DEFAULT_KERNEL_SOURCE}
- fi
- [ "${KERNEL_DIR}" = '' ] && gen_die 'No kernel source directory!'
-
- get_KV
-
- if [ "${CMD_KERNEL_MAKE}" != '' ]
- then
- KERNEL_MAKE="${CMD_KERNEL_MAKE}"
- fi
+ # Configure the kernel
+ # If BUILD_KERNEL=0 then assume --no-clean, menuconfig is cleared
- if [ "${KERNEL_MAKE}" = '' ]
- then
- KERNEL_MAKE='make'
- fi
+ VER=`grep ^VERSION\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
+ PAT=`grep ^PATCHLEVEL\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
+ SUB=`grep ^SUBLEVEL\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
+ EXV=`grep ^EXTRAVERSION\ \= ${KERNEL_DIR}/Makefile | sed -e "s/EXTRAVERSION =//" -e "s/ //g" -e 's/\$([a-z]*)//gi'`
- if [ "${CMD_UTILS_MAKE}" != '' ]
- then
- UTILS_MAKE="${CMD_UTILS_MAKE}"
- fi
-
- if [ "${UTILS_MAKE}" = '' ]
- then
- UTILS_MAKE='make'
- fi
-
- if [ "${CMD_KERNEL_CC}" != '' ]
- then
- KERNEL_CC="${CMD_KERNEL_CC}"
- fi
-
- if [ "${CMD_KERNEL_LD}" != '' ]
- then
- KERNEL_LD="${CMD_KERNEL_LD}"
- fi
-
- if [ "${CMD_KERNEL_AS}" != '' ]
- then
- KERNEL_AS="${CMD_KERNEL_AS}"
- fi
-
- if [ "${CMD_UTILS_CC}" != '' ]
- then
- UTILS_CC="${CMD_UTILS_CC}"
- fi
-
- if [ "${CMD_UTILS_LD}" != '' ]
- then
- UTILS_LD="${CMD_UTILS_LD}"
- fi
+ if [ -z "${SUB}" ];
+ then
+ # Handle O= build directories
+ KERNEL_SOURCE_DIR=`grep ^MAKEARGS\ \:\= ${KERNEL_DIR}/Makefile | awk '{ print $4 };'`
+ SUB=`grep ^SUBLEVEL\ \= ${KERNEL_SOURCE_DIR}/Makefile | awk '{ print $3 };'`
+ EXV=`grep ^EXTRAVERSION\ \= ${KERNEL_SOURCE_DIR}/Makefile | sed -e "s/EXTRAVERSION =//" -e "s/ //g" -e 's/\$([a-z]*)//gi'`
+ fi
- if [ "${CMD_UTILS_AS}" != '' ]
- then
- UTILS_AS="${CMD_UTILS_AS}"
+ cd ${KERNEL_DIR}
+ #compile_generic prepare kernel > /dev/null 2>&1
+ cd - > /dev/null 2>&1
+ [ -f "${KERNEL_DIR}/include/linux/version.h" ] && \
+ VERSION_SOURCE="${KERNEL_DIR}/include/linux/version.h"
+ [ -f "${KERNEL_DIR}/include/linux/utsrelease.h" ] && \
+ VERSION_SOURCE="${KERNEL_DIR}/include/linux/utsrelease.h"
+ # Handle new-style releases where version.h doesn't have UTS_RELEASE
+ if [ -f ${KERNEL_DIR}/include/config/kernel.release ]
+ then
+ UTS_RELEASE=`cat ${KERNEL_DIR}/include/config/kernel.release`
+ LOV=`echo ${UTS_RELEASE}|sed -e "s/${VER}.${PAT}.${SUB}${EXV}//"`
+ KV=${VER}.${PAT}.${SUB}${EXV}${LOV}
+ elif [ -n "${VERSION_SOURCE}" ]
+ then
+ UTS_RELEASE=`grep UTS_RELEASE ${VERSION_SOURCE} | sed -e 's/#define UTS_RELEASE "\(.*\)"/\1/'`
+ LOV=`echo ${UTS_RELEASE}|sed -e "s/${VER}.${PAT}.${SUB}${EXV}//"`
+ KV=${VER}.${PAT}.${SUB}${EXV}${LOV}
+ else
+ LCV=`grep ^CONFIG_LOCALVERSION= ${KERNEL_DIR}/.config | sed -r -e "s/.*=\"(.*)\"/\1/"`
+ KV=${VER}.${PAT}.${SUB}${EXV}${LCV}
+ fi
fi
+}
+determine_real_args() {
+ print_info 4 "Resolving config file, command line, and arch default settings."
+
+ # Config File Command Line Arch Default
+ # ----------- ------------ ------------
+ set_config_with_override 2 DEBUGFILE CMD_DEBUGFILE
+ set_config_with_override 2 KERNEL_DIR CMD_KERNEL_DIR "${DEFAULT_KERNEL_SOURCE}"
+ set_config_with_override 1 NO_KERNEL_SOURCES CMD_NO_KERNEL_SOURCES
+ set_config_with_override 2 KNAME CMD_KERNNAME "genkernel"
+
+ set_config_with_override 2 MAKEOPTS CMD_MAKEOPTS "$DEFAULT_MAKEOPTS"
+ set_config_with_override 2 KERNEL_MAKE CMD_KERNEL_MAKE "$DEFAULT_KERNEL_MAKE"
+ set_config_with_override 2 UTILS_MAKE CMD_UTILS_MAKE "$DEFAULT_UTILS_MAKE"
+ set_config_with_override 2 KERNEL_CC CMD_KERNEL_CC "$DEFAULT_KERNEL_CC"
+ set_config_with_override 2 KERNEL_LD CMD_KERNEL_LD "$DEFAULT_KERNEL_LD"
+ set_config_with_override 2 KERNEL_AS CMD_KERNEL_AS "$DEFAULT_KERNEL_AS"
+ set_config_with_override 2 UTILS_CC CMD_UTILS_CC "$DEFAULT_UTILS_CC"
+ set_config_with_override 2 UTILS_LD CMD_UTILS_LD "$DEFAULT_UTILS_LD"
+ set_config_with_override 2 UTILS_AS CMD_UTILS_AS "$DEFAULT_UTILS_AS"
+
+ set_config_with_override 2 KERNEL_CROSS_COMPILE CMD_KERNEL_CROSS_COMPILE
+ set_config_with_override 2 UTILS_CROSS_COMPILE CMD_UTILS_CROSS_COMPILE
+ set_config_with_override 2 BOOTDIR CMD_BOOTDIR "/boot"
+
+ set_config_with_override 1 SPLASH CMD_SPLASH
+ set_config_with_override 1 POSTCLEAR CMD_POSTCLEAR
+ set_config_with_override 1 MRPROPER CMD_MRPROPER
+ set_config_with_override 1 MENUCONFIG CMD_MENUCONFIG
+ set_config_with_override 1 CLEAN CMD_CLEAN
+
+ set_config_with_override 2 MINKERNPACKAGE CMD_MINKERNPACKAGE
+ set_config_with_override 2 MODULESPACKAGE CMD_MODULESPACKAGE
+ set_config_with_override 2 KERNCACHE CMD_KERNCACHE
+ set_config_with_override 1 NORAMDISKMODULES CMD_NORAMDISKMODULES
+ set_config_with_override 1 ALLRAMDISKMODULES CMD_ALLRAMDISKMODULES
+ set_config_with_override 2 INITRAMFS_OVERLAY CMD_INITRAMFS_OVERLAY
+ set_config_with_override 1 MOUNTBOOT CMD_MOUNTBOOT
+ set_config_with_override 1 BUILD_STATIC CMD_STATIC
+ set_config_with_override 1 SAVE_CONFIG CMD_SAVE_CONFIG
+ set_config_with_override 1 SYMLINK CMD_SYMLINK
+ set_config_with_override 2 INSTALL_MOD_PATH CMD_INSTALL_MOD_PATH
+ set_config_with_override 1 OLDCONFIG CMD_OLDCONFIG
+ set_config_with_override 1 LVM CMD_LVM
+ set_config_with_override 1 EVMS CMD_EVMS
+ set_config_with_override 1 DMRAID CMD_DMRAID
+ set_config_with_override 1 BUSYBOX CMD_BUSYBOX "yes"
+ set_config_with_override 1 UNIONFS CMD_UNIONFS
+ set_config_with_override 1 DISKLABEL CMD_DISKLABEL
+ set_config_with_override 1 LUKS CMD_LUKS
+ set_config_with_override 1 MDADM CMD_MDADM
+ set_config_with_override 1 FIRMWARE CMD_FIRMWARE
+ set_config_with_override 2 FIRMWARE_DIR CMD_FIRMWARE_DIR "/lib/firmware"
+ set_config_with_override 2 FIRMWARE_FILES CMD_FIRMWARE_FILES
+ set_config_with_override 1 INTEGRATED_INITRAMFS CMD_INTEGRATED_INITRAMFS
+ set_config_with_override 1 GENZIMAGE CMD_GENZIMAGE
+ set_config_with_override 1 KEYMAP CMD_KEYMAP "yes"
+ set_config_with_override 1 DOKEYMAPAUTO CMD_DOKEYMAPAUTO
+
+ BOOTDIR=`arch_replace "${BOOTDIR}"`
+ BOOTDIR=${BOOTDIR%/} # Remove any trailing slash
+
+ CACHE_DIR=`arch_replace "${CACHE_DIR}"`
+ BUSYBOX_BINCACHE=`cache_replace "${BUSYBOX_BINCACHE}"`
+ DEVICE_MAPPER_BINCACHE=`cache_replace "${DEVICE_MAPPER_BINCACHE}"`
+ LVM_BINCACHE=`cache_replace "${LVM_BINCACHE}"`
+ DMRAID_BINCACHE=`cache_replace "${DMRAID_BINCACHE}"`
+ BLKID_BINCACHE=`cache_replace "${BLKID_BINCACHE}"`
+ FUSE_BINCACHE=`cache_replace "${FUSE_BINCACHE}"`
+ UNIONFS_FUSE_BINCACHE=`cache_replace "${UNIONFS_FUSE_BINCACHE}"`
+
DEFAULT_KERNEL_CONFIG=`arch_replace "${DEFAULT_KERNEL_CONFIG}"`
BUSYBOX_CONFIG=`arch_replace "${BUSYBOX_CONFIG}"`
BUSYBOX_BINCACHE=`arch_replace "${BUSYBOX_BINCACHE}"`
- MODULE_INIT_TOOLS_BINCACHE=`arch_replace "${MODULE_INIT_TOOLS_BINCACHE}"`
- MODUTILS_BINCACHE=`arch_replace "${MODUTILS_BINCACHE}"`
- DIETLIBC_BINCACHE=`arch_replace "${DIETLIBC_BINCACHE}"`
- DIETLIBC_BINCACHE_TEMP=`arch_replace "${DIETLIBC_BINCACHE_TEMP}"`
- DEVFSD_BINCACHE=`arch_replace "${DEVFSD_BINCACHE}"`
- DEVFSD_CONF_BINCACHE=`arch_replace "${DEVFSD_CONF_BINCACHE}"`
+ DEVICE_MAPPER_BINCACHE=`arch_replace "${DEVICE_MAPPER_BINCACHE}"`
+ LVM_BINCACHE=`arch_replace "${LVM_BINCACHE}"`
+ DMRAID_BINCACHE=`arch_replace "${DMRAID_BINCACHE}"`
+ BLKID_BINCACHE=`arch_replace "${BLKID_BINCACHE}"`
+ FUSE_BINCACHE=`arch_replace "${FUSE_BINCACHE}"`
+ UNIONFS_FUSE_BINCACHE=`arch_replace "${UNIONFS_FUSE_BINCACHE}"`
- if [ "${CMD_BOOTSPLASH}" != '' ]
- then
- BOOTSPLASH=${CMD_BOOTSPLASH}
- fi
-
- if isTrue ${BOOTSPLASH}
+ if [ "${NO_KERNEL_SOURCES}" != "1" ]
then
- BOOTSPLASH=1
- else
- BOOTSPLASH=0
+ if [ ! -d ${KERNEL_DIR} ]
+ then
+ gen_die "kernel source directory \"${KERNEL_DIR}\" was not found!"
+ fi
fi
- if isTrue ${COMPRESS_INITRD}
+ if [ -z "${KERNCACHE}" ]
then
- COMPRESS_INITRD=1
+ if [ "${KERNEL_DIR}" = '' -a "${NO_KERNEL_SOURCES}" != "1" ]
+ then
+ gen_die 'No kernel source directory!'
+ fi
+ if [ ! -e "${KERNEL_DIR}" -a "${NO_KERNEL_SOURCES}" != "1" ]
+ then
+ gen_die 'No kernel source directory!'
+ fi
else
- COMPRESS_INITRD=0
+ if [ "${KERNEL_DIR}" = '' ]
+ then
+ gen_die 'Kernel Cache specified but no kernel tree to verify against!'
+ fi
fi
- if [ "${CMD_MRPROPER}" != '' ]
- then
- MRPROPER="${CMD_MRPROPER}"
- fi
- if [ "${CMD_MENUCONFIG}" != '' ]
- then
- MENUCONFIG="${CMD_MENUCONFIG}"
- fi
+ # Special case: If --no-clean is specified on the command line,
+ # imply --no-mrproper.
if [ "${CMD_CLEAN}" != '' ]
then
- CLEAN="${CMD_CLEAN}"
if ! isTrue ${CLEAN}
then
MRPROPER=0
fi
fi
-
- if [ "${CMD_MINKERNPACKAGE}" != '' ]
- then
- MINKERNPACKAGE="${CMD_MINKERNPACKAGE}"
- fi
-
- if [ "${CMD_NOINITRDMODULES}" != '' ]
- then
- NOINITRDMODULES="${CMD_NOINITRDMODULES}"
- fi
-
- if [ "${CMD_MOUNTBOOT}" != '' ]
+
+ if [ -n "${MINKERNPACKAGE}" ]
then
- MOUNTBOOT="${CMD_MOUNTBOOT}"
+ mkdir -p `dirname ${MINKERNPACKAGE}`
fi
-
- if isTrue ${MOUNTBOOT}
+
+ if [ -n "${MODULESPACKAGE}" ]
then
- MOUNTBOOT=1
- else
- MOUNTBOOT=0
+ mkdir -p `dirname ${MODULESPACKAGE}`
fi
- if [ "${CMD_SAVE_CONFIG}" != '' ]
+ if [ -n "${KERNCACHE}" ]
then
- SAVE_CONFIG="${CMD_SAVE_CONFIG}"
+ mkdir -p `dirname ${KERNCACHE}`
fi
- if isTrue ${SAVE_CONFIG}
- then
- ${SAVE_CONFIG}=1
- else
- ${SAVE_CONFIG}=0
- fi
-
- if [ "${CMD_INSTALL_MOD_PATH}" != '' ]
+ if ! isTrue "${BUILD_RAMDISK}"
then
- INSTALL_MOD_PATH="${CMD_INSTALL_MOD_PATH}"
+ INTEGRATED_INITRAMFS=0
fi
+
+ get_KV
}