scripts/build/kernel/linux.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Aug 19 00:52:05 2011 +0200 (2011-08-19)
changeset 2614 814ea73df7e0
parent 2603 461b9c476104
child 2615 ba0fbc5f6570
permissions -rw-r--r--
scripts: simplify and fix the toolchain config script

The script that is installed, and which sole purpose is to dump
the .config that was used to build the toolchain, is pure insanity.

Let's make it much, much more simpler...

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 # This file declares functions to install the kernel headers for linux
     2 # Copyright 2007 Yann E. MORIN
     3 # Licensed under the GPL v2. See COPYING in the root of this package
     4 
     5 CT_DoKernelTupleValues() {
     6     if [ "${CT_ARCH_USE_MMU}" = "y" ]; then
     7         CT_TARGET_KERNEL="linux"
     8     else
     9     # Sometime, noMMU linux targets have a -uclinux tuple, while
    10     # sometime it's -linux. We currently have only one noMMU linux
    11     # target, and it uses -linux, so let's just use that. Time
    12     # to fix that later...
    13     #    CT_TARGET_KERNEL="uclinux"
    14         CT_TARGET_KERNEL="linux"
    15     fi
    16 }
    17 
    18 # Download the kernel
    19 do_kernel_get() {
    20     local k_ver
    21     local custom_name
    22 
    23     if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" = "y"  ]; then
    24         return 0
    25     fi
    26 
    27     if [ "${CT_KERNEL_LINUX_CUSTOM}" = "y" ]; then
    28         # Wee need to know the custom tarball extension,
    29         # so we can cerate a properly-named symlink, which
    30         # we use later on in 'extract'
    31         case "${CT_KERNEL_LINUX_CUSTOM_TARBALL}" in
    32             *.tar.bz2)      custom_name="linux-custom.tar.bz2";;
    33             *.tar.gz|*.tgz) custom_name="linux-custom.tar.gz";;
    34             *.tar)          custom_name="linux-custom.tar";;
    35             *)  CT_Abort "Unknown extension for custom linux tarball '${CT_KERNEL_LINUX_CUSTOM_TARBALL}'";;
    36         esac
    37         CT_DoExecLog DEBUG ln -sf "${CT_KERNEL_LINUX_CUSTOM_TARBALL}"  \
    38                                   "${CT_SRC_DIR}/${custom_name}"
    39     else # Not a custom tarball
    40         case "${CT_KERNEL_VERSION}" in
    41             2.6.*.*|3.*.*)
    42                 # 4-part versions (for 2.6 stables and long-terms), and
    43                 # 3-part versions (for 3.x.y stables and long-terms),
    44                 # we need to trash the last digit
    45                 k_ver="${CT_KERNEL_VERSION%.*}"
    46                 ;;
    47             2.6.*|3.*)
    48                 # 3-part version (for 2.6.x initial releases), and 2-part
    49                 # versions (for 3.x initial releases), use all of it
    50                 k_ver="${CT_KERNEL_VERSION}"
    51                 ;;
    52         esac
    53         CT_GetFile "linux-${CT_KERNEL_VERSION}"                                             \
    54                    http://ftp.{de.,eu.,}kernel.org/pub/linux/kernel/v2.6                    \
    55                    http://ftp.{de.,eu.,}kernel.org/pub/linux/kernel/v3.0                    \
    56                    http://ftp.{de.,eu.,}kernel.org/pub/linux/kernel/v2.6/longterm/v${k_ver} \
    57                    http://ftp.{de.,eu.,}kernel.org/pub/linux/kernel/v3.0/longterm/v${k_ver}
    58     fi
    59 }
    60 
    61 # Extract kernel
    62 do_kernel_extract() {
    63     if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" = "y"  ]; then
    64         return 0
    65     fi
    66     # This also handles the custom tarball
    67     CT_Extract "linux-${CT_KERNEL_VERSION}"
    68     CT_Patch "linux" "${CT_KERNEL_VERSION}"
    69 }
    70 
    71 # Wrapper to the actual headers install method
    72 do_kernel_headers() {
    73     CT_DoStep INFO "Installing kernel headers"
    74 
    75     if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" = "y" ]; then
    76         do_kernel_custom
    77     else
    78         do_kernel_install
    79     fi
    80 
    81     CT_EndStep
    82 }
    83 
    84 # Install kernel headers using headers_install from kernel sources.
    85 do_kernel_install() {
    86     local kernel_path
    87 
    88     CT_DoLog DEBUG "Using kernel's headers_install"
    89 
    90     mkdir -p "${CT_BUILD_DIR}/build-kernel-headers"
    91 
    92     kernel_path="${CT_SRC_DIR}/linux-${CT_KERNEL_VERSION}"
    93     if [ "${CT_KERNEL_LINUX_CUSTOM}" = "y" ]; then
    94         kernel_path="${CT_SRC_DIR}/linux-custom"
    95     fi
    96     V_OPT="V=${CT_KERNEL_LINUX_VERBOSE_LEVEL}"
    97 
    98     CT_DoLog EXTRA "Installing kernel headers"
    99     CT_DoExecLog ALL                                    \
   100     make -C "${kernel_path}"                            \
   101          O="${CT_BUILD_DIR}/build-kernel-headers"       \
   102          ARCH=${CT_ARCH}                                \
   103          INSTALL_HDR_PATH="${CT_SYSROOT_DIR}/usr"       \
   104          ${V_OPT}                                       \
   105          headers_install
   106 
   107     if [ "${CT_KERNEL_LINUX_INSTALL_CHECK}" = "y" ]; then
   108         CT_DoLog EXTRA "Checking installed headers"
   109         CT_DoExecLog ALL                                    \
   110         make -C "${kernel_path}"                            \
   111              O="${CT_BUILD_DIR}/build-kernel-headers"       \
   112              ARCH=${CT_ARCH}                                \
   113              INSTALL_HDR_PATH="${CT_SYSROOT_DIR}/usr"       \
   114              ${V_OPT}                                       \
   115              headers_check
   116     fi
   117 
   118     # Cleanup
   119     find "${CT_SYSROOT_DIR}" -type f                        \
   120                              \(    -name '.install'         \
   121                                 -o -name '..install.cmd'    \
   122                                 -o -name '.check'           \
   123                                 -o -name '..check.cmd'      \
   124                              \)                             \
   125                              -exec rm {} \;
   126 }
   127 
   128 # Use custom headers (most probably by using make headers_install in a
   129 # modified (read: customised) kernel tree, or using pre-2.6.18 headers, such
   130 # as 2.4). In this case, simply copy the headers in place
   131 do_kernel_custom() {
   132     local tar_opt
   133 
   134     CT_DoLog EXTRA "Installing custom kernel headers"
   135 
   136     mkdir -p "${CT_SYSROOT_DIR}/usr"
   137     cd "${CT_SYSROOT_DIR}/usr"
   138     if [ "${CT_KERNEL_LINUX_CUSTOM_IS_TARBALL}" = "y" ]; then
   139         case "${CT_KERNEL_LINUX_CUSTOM_PATH}" in
   140             *.tar)      ;;
   141             *.tgz)      tar_opt=--gzip;;
   142             *.tar.gz)   tar_opt=--gzip;;
   143             *.tar.bz2)  tar_opt=--bzip2;;
   144         esac
   145         CT_DoExecLog ALL tar x ${tar_opt} -vf ${CT_KERNEL_LINUX_CUSTOM_PATH}
   146     else
   147         CT_DoExecLog ALL cp -rv "${CT_KERNEL_LINUX_CUSTOM_PATH}/include" .
   148     fi
   149 }