scripts/build/libc/glibc.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Apr 15 00:22:42 2011 +0200 (2011-04-15)
branch1.11
changeset 2557 b71761e8cff1
parent 2278 e86826b8621a
child 2483 fa3a18f9abcf
permissions -rw-r--r--
scripts/internals: do not remove lib{32,64}/ symlinks after build

During the build, we create lib{32,64}/ symlinks out of the sysroot.
In some cases (eg. mingw32 target), these symlinks are still required
when running the toolchain. For other combinations, the symlinks are
without incidence, so they can be safely kept after the build.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
(transplanted from 751c3f735ada4a95aa981841b832adb08b88ce27)
yann@850
     1
# This file adds functions to build glibc
yann@850
     2
# Copyright 2007 Yann E. MORIN
yann@850
     3
# Licensed under the GPL v2. See COPYING in the root of this package
yann@850
     4
yann@2272
     5
# Add the definitions common to glibc and eglibc
yann@2272
     6
#   do_libc_start_files
yann@2277
     7
#   do_libc
yann@2277
     8
#   do_libc_finish
yann@2277
     9
#   do_libc_add_ons_list
yann@2277
    10
#   do_libc_min_kernel_config
yann@2272
    11
. "${CT_LIB_DIR}/scripts/build/libc/glibc-eglibc.sh-common"
yann@2272
    12
yann@850
    13
# Download glibc
yann@850
    14
do_libc_get() {
yann@1260
    15
    local date
yann@1260
    16
    local version
yann@1482
    17
    local -a addons_list
yann@1482
    18
yann@1482
    19
    addons_list=($(do_libc_add_ons_list " "))
yann@1114
    20
yann@1759
    21
    # Main source
yann@1759
    22
    CT_GetFile "glibc-${CT_LIBC_VERSION}"               \
yann@1759
    23
               {ftp,http}://ftp.gnu.org/gnu/glibc       \
yann@1759
    24
               ftp://gcc.gnu.org/pub/glibc/releases     \
yann@1759
    25
               ftp://gcc.gnu.org/pub/glibc/snapshots
yann@1759
    26
yann@1759
    27
    # C library addons
yann@1759
    28
    for addon in "${addons_list[@]}"; do
yann@1759
    29
        # NPTL addon is not to be downloaded, in any case
yann@1759
    30
        [ "${addon}" = "nptl" ] && continue || true
yann@1759
    31
        CT_GetFile "glibc-${addon}-${CT_LIBC_VERSION}"      \
yann@850
    32
                   {ftp,http}://ftp.gnu.org/gnu/glibc       \
yann@850
    33
                   ftp://gcc.gnu.org/pub/glibc/releases     \
yann@850
    34
                   ftp://gcc.gnu.org/pub/glibc/snapshots
yann@1759
    35
    done
yann@850
    36
yann@850
    37
    return 0
yann@850
    38
}
yann@850
    39
yann@850
    40
# Extract glibc
yann@850
    41
do_libc_extract() {
yann@1482
    42
    local -a addons_list
yann@1482
    43
yann@1482
    44
    addons_list=($(do_libc_add_ons_list " "))
yann@1260
    45
yann@1759
    46
    CT_Extract "glibc-${CT_LIBC_VERSION}"
yann@1260
    47
yann@1759
    48
    CT_Pushd "${CT_SRC_DIR}/glibc-${CT_LIBC_VERSION}"
yann@1901
    49
    CT_Patch nochdir "glibc" "${CT_LIBC_VERSION}"
yann@850
    50
yann@850
    51
    # C library addons
yann@1482
    52
    for addon in "${addons_list[@]}"; do
yann@850
    53
        # NPTL addon is not to be extracted, in any case
yann@850
    54
        [ "${addon}" = "nptl" ] && continue || true
yann@1761
    55
        CT_Extract nochdir "glibc-${addon}-${CT_LIBC_VERSION}"
yann@1260
    56
fauno@2482
    57
        CT_TestAndAbort "Error in add-on '${addon}': both short and long names in tarball" \
fauno@2482
    58
            -d "${addon}" -a -d "glibc-${addon}-${CT_LIBC_VERSION}"
fauno@2482
    59
yann@1126
    60
        # Some addons have the 'long' name, while others have the
yann@1126
    61
        # 'short' name, but patches are non-uniformly built with
yann@1126
    62
        # either the 'long' or 'short' name, whatever the addons name
fauno@2482
    63
        # but we prefer the 'short' name and avoid duplicates.
fauno@2482
    64
        if [ -d "glibc-${addon}-${CT_LIBC_VERSION}" ]; then
fauno@2482
    65
            mv "glibc-${addon}-${CT_LIBC_VERSION}" "${addon}"
fauno@2482
    66
        fi
fauno@2482
    67
fauno@2482
    68
        ln -s "${addon}" "glibc-${addon}-${CT_LIBC_VERSION}"
fauno@2482
    69
yann@1901
    70
        CT_Patch nochdir "glibc" "${addon}-${CT_LIBC_VERSION}"
fauno@2482
    71
fauno@2482
    72
        # Remove the long name since it can confuse configure scripts to run
fauno@2482
    73
        # the same source twice.
fauno@2482
    74
        rm "glibc-${addon}-${CT_LIBC_VERSION}"
yann@850
    75
    done
yann@850
    76
yann@884
    77
    # The configure files may be older than the configure.in files
yann@884
    78
    # if using a snapshot (or even some tarballs). Fake them being
yann@884
    79
    # up to date.
yann@1482
    80
    sleep 2
yann@1260
    81
    find . -type f -name configure -exec touch {} \; 2>&1 |CT_DoLog ALL
yann@1260
    82
yann@1260
    83
    CT_Popd
yann@884
    84
yann@850
    85
    return 0
yann@850
    86
}
yann@850
    87
yann@850
    88
# There is nothing to do for glibc check config
yann@850
    89
do_libc_check_config() {
yann@850
    90
    :
yann@850
    91
}