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