scripts/build/kernel/linux.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed Sep 21 22:42:35 2011 +0200 (2011-09-21)
changeset 2677 7df89370f805
parent 2615 ba0fbc5f6570
child 2680 b94e0f9d15a3
permissions -rw-r--r--
kernel/linux: add alternate download locations

Since kernel.org is dead, and there is no announced or known estimated
time or return to normality, it is impossible to download any kernel at
this time.

Add a known-working mirror.

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_TARBALLS_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                    http://ftp.free.fr/mirrors/ftp.kernel.org//linux/kernel/v2.6             \
    59                    http://ftp.free.fr/mirrors/ftp.kernel.org//linux/kernel/v3.0             \
    60                    http://ftp.free.fr/mirrors/ftp.kernel.org//linux/kernel/v2.6/longterm/v${k_ver}  \
    61                    http://ftp.free.fr/mirrors/ftp.kernel.org//linux/kernel/v3.0/longterm/v${k_ver}
    62     fi
    63 }
    64 
    65 # Extract kernel
    66 do_kernel_extract() {
    67     if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" = "y"  ]; then
    68         return 0
    69     fi
    70     # This also handles the custom tarball
    71     CT_Extract "linux-${CT_KERNEL_VERSION}"
    72     CT_Patch "linux" "${CT_KERNEL_VERSION}"
    73 }
    74 
    75 # Wrapper to the actual headers install method
    76 do_kernel_headers() {
    77     CT_DoStep INFO "Installing kernel headers"
    78 
    79     if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" = "y" ]; then
    80         do_kernel_custom
    81     else
    82         do_kernel_install
    83     fi
    84 
    85     CT_EndStep
    86 }
    87 
    88 # Install kernel headers using headers_install from kernel sources.
    89 do_kernel_install() {
    90     local kernel_path
    91 
    92     CT_DoLog DEBUG "Using kernel's headers_install"
    93 
    94     mkdir -p "${CT_BUILD_DIR}/build-kernel-headers"
    95 
    96     kernel_path="${CT_SRC_DIR}/linux-${CT_KERNEL_VERSION}"
    97     if [ "${CT_KERNEL_LINUX_CUSTOM}" = "y" ]; then
    98         kernel_path="${CT_SRC_DIR}/linux-custom"
    99     fi
   100     V_OPT="V=${CT_KERNEL_LINUX_VERBOSE_LEVEL}"
   101 
   102     CT_DoLog EXTRA "Installing kernel headers"
   103     CT_DoExecLog ALL                                    \
   104     make -C "${kernel_path}"                            \
   105          O="${CT_BUILD_DIR}/build-kernel-headers"       \
   106          ARCH=${CT_ARCH}                                \
   107          INSTALL_HDR_PATH="${CT_SYSROOT_DIR}/usr"       \
   108          ${V_OPT}                                       \
   109          headers_install
   110 
   111     if [ "${CT_KERNEL_LINUX_INSTALL_CHECK}" = "y" ]; then
   112         CT_DoLog EXTRA "Checking installed headers"
   113         CT_DoExecLog ALL                                    \
   114         make -C "${kernel_path}"                            \
   115              O="${CT_BUILD_DIR}/build-kernel-headers"       \
   116              ARCH=${CT_ARCH}                                \
   117              INSTALL_HDR_PATH="${CT_SYSROOT_DIR}/usr"       \
   118              ${V_OPT}                                       \
   119              headers_check
   120     fi
   121 
   122     # Cleanup
   123     find "${CT_SYSROOT_DIR}" -type f                        \
   124                              \(    -name '.install'         \
   125                                 -o -name '..install.cmd'    \
   126                                 -o -name '.check'           \
   127                                 -o -name '..check.cmd'      \
   128                              \)                             \
   129                              -exec rm {} \;
   130 }
   131 
   132 # Use custom headers (most probably by using make headers_install in a
   133 # modified (read: customised) kernel tree, or using pre-2.6.18 headers, such
   134 # as 2.4). In this case, simply copy the headers in place
   135 do_kernel_custom() {
   136     local tar_opt
   137 
   138     CT_DoLog EXTRA "Installing custom kernel headers"
   139 
   140     mkdir -p "${CT_SYSROOT_DIR}/usr"
   141     cd "${CT_SYSROOT_DIR}/usr"
   142     if [ "${CT_KERNEL_LINUX_CUSTOM_IS_TARBALL}" = "y" ]; then
   143         case "${CT_KERNEL_LINUX_CUSTOM_PATH}" in
   144             *.tar)      ;;
   145             *.tgz)      tar_opt=--gzip;;
   146             *.tar.gz)   tar_opt=--gzip;;
   147             *.tar.bz2)  tar_opt=--bzip2;;
   148         esac
   149         CT_DoExecLog ALL tar x ${tar_opt} -vf ${CT_KERNEL_LINUX_CUSTOM_PATH}
   150     else
   151         CT_DoExecLog ALL cp -rv "${CT_KERNEL_LINUX_CUSTOM_PATH}/include" .
   152     fi
   153 }