author | "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> |
Wed Sep 10 21:40:23 2008 +0000 (2008-09-10) | |
changeset 847 | af75fc1fe0fc |
parent 654 | scripts/build/kernel_linux.sh@9d69b3b8185f |
child 858 | e815b1a5057c |
permissions | -rw-r--r-- |
yann@1 | 1 |
# This file declares functions to install the kernel headers for linux |
yann@1 | 2 |
# Copyright 2007 Yann E. MORIN |
yann@1 | 3 |
# Licensed under the GPL v2. See COPYING in the root of this package |
yann@1 | 4 |
|
yann@161 | 5 |
do_print_filename() { |
yann@161 | 6 |
[ "${CT_KERNEL}" = "linux" ] || return 0 |
yann@847 | 7 |
echo "linux-${CT_KERNEL_VERSION}" |
yann@161 | 8 |
} |
yann@161 | 9 |
|
yann@63 | 10 |
# Download the kernel |
yann@63 | 11 |
do_kernel_get() { |
yann@63 | 12 |
if [ "${CT_KERNEL_LINUX_HEADERS_USE_CUSTOM_DIR}" != "y" ]; then |
yann@847 | 13 |
CT_GetFile "${CT_KERNEL_FILE}" {ftp,http}://ftp.kernel.org/pub/linux/kernel/v2.{6{,/testing},4,2} |
yann@63 | 14 |
fi |
yann@63 | 15 |
return 0 |
yann@63 | 16 |
} |
yann@63 | 17 |
|
yann@63 | 18 |
# Extract kernel |
yann@63 | 19 |
do_kernel_extract() { |
yann@63 | 20 |
if [ "${CT_KERNEL_LINUX_HEADERS_USE_CUSTOM_DIR}" != "y" ]; then |
yann@63 | 21 |
CT_ExtractAndPatch "${CT_KERNEL_FILE}" |
yann@63 | 22 |
fi |
yann@63 | 23 |
return 0 |
yann@63 | 24 |
} |
yann@63 | 25 |
|
yann@1 | 26 |
# Wrapper to the actual headers install method |
yann@1 | 27 |
do_kernel_headers() { |
yann@1 | 28 |
CT_DoStep INFO "Installing kernel headers" |
yann@1 | 29 |
|
yann@37 | 30 |
if [ "${CT_KERNEL_LINUX_HEADERS_USE_CUSTOM_DIR}" = "y" ]; then |
yann@37 | 31 |
do_kernel_preinstalled |
yann@1 | 32 |
else |
yann@847 | 33 |
do_kernel_install |
yann@1 | 34 |
fi |
yann@1 | 35 |
|
yann@1 | 36 |
CT_EndStep |
yann@1 | 37 |
} |
yann@1 | 38 |
|
yann@1 | 39 |
# Install kernel headers using headers_install from kernel sources. |
yann@1 | 40 |
do_kernel_install() { |
yann@78 | 41 |
CT_DoLog DEBUG "Using kernel's headers_install" |
yann@1 | 42 |
|
yann@1 | 43 |
mkdir -p "${CT_BUILD_DIR}/build-kernel-headers" |
yann@1 | 44 |
cd "${CT_BUILD_DIR}/build-kernel-headers" |
yann@1 | 45 |
|
yann@847 | 46 |
# Only starting with 2.6.18 does headers_install is usable. We only |
yann@847 | 47 |
# have 2.6 version available, so only test for sublevel. |
yann@847 | 48 |
k_sublevel=$(awk '/^SUBLEVEL =/ { print $3 }' "${CT_SRC_DIR}/${CT_KERNEL_FILE}/Makefile") |
yann@847 | 49 |
[ ${k_sublevel} -ge 18 ] || CT_Abort "Kernel version >= 2.6.18 is needed to install kernel headers." |
yann@847 | 50 |
|
yann@847 | 51 |
V_OPT="V=${CT_KERNEL_LINUX_VERBOSE_LEVEL}" |
yann@1 | 52 |
|
yann@1 | 53 |
CT_DoLog EXTRA "Installing kernel headers" |
yann@654 | 54 |
CT_DoExecLog ALL \ |
yann@64 | 55 |
make -C "${CT_SRC_DIR}/${CT_KERNEL_FILE}" \ |
yann@523 | 56 |
O=$(pwd) \ |
yann@64 | 57 |
ARCH=${CT_KERNEL_ARCH} \ |
yann@1 | 58 |
INSTALL_HDR_PATH="${CT_SYSROOT_DIR}/usr" \ |
yann@1 | 59 |
${V_OPT} \ |
yann@654 | 60 |
headers_install |
yann@1 | 61 |
|
yann@199 | 62 |
if [ "${CT_KERNEL_LINUX_HEADERS_INSTALL_CHECK}" = "y" ]; then |
yann@199 | 63 |
CT_DoLog EXTRA "Checking installed headers" |
yann@654 | 64 |
CT_DoExecLog ALL \ |
yann@199 | 65 |
make -C "${CT_SRC_DIR}/${CT_KERNEL_FILE}" \ |
yann@523 | 66 |
O=$(pwd) \ |
yann@199 | 67 |
ARCH=${CT_KERNEL_ARCH} \ |
yann@199 | 68 |
INSTALL_HDR_PATH="${CT_SYSROOT_DIR}/usr" \ |
yann@199 | 69 |
${V_OPT} \ |
yann@654 | 70 |
headers_check |
yann@199 | 71 |
find "${CT_SYSROOT_DIR}" -type f -name '.check*' -exec rm {} \; |
yann@199 | 72 |
fi |
yann@1 | 73 |
} |
yann@1 | 74 |
|
yann@37 | 75 |
# Use preinstalled headers (most probably by using make headers_install in a |
yann@847 | 76 |
# modified (read: customised) kernel tree, or using pre-2.6.18 headers, such |
yann@847 | 77 |
# as 2.4). In this case, simply copy the headers in place |
yann@37 | 78 |
do_kernel_preinstalled() { |
yann@37 | 79 |
CT_DoLog EXTRA "Copying preinstalled kernel headers" |
yann@37 | 80 |
|
yann@37 | 81 |
mkdir -p "${CT_SYSROOT_DIR}/usr" |
yann@37 | 82 |
cd "${CT_KERNEL_LINUX_HEADERS_CUSTOM_DIR}" |
yann@78 | 83 |
cp -rv include "${CT_SYSROOT_DIR}/usr" 2>&1 |CT_DoLog ALL |
yann@37 | 84 |
} |