scripts/build/libc/glibc.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Jan 22 22:35:58 2011 +0100 (2011-01-22)
changeset 2276 ac021d186cd6
parent 2275 9ab4392430ad
child 2277 71803c9f6de0
permissions -rw-r--r--
libc/glibc: add glibc specifics to the shared code, and use it

Final step at sharing code between glibc and eglibc.
Fall, wall of shame, fall!... :-)

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
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_headers
yann@2272
     7
#   do_libc_start_files
yann@2272
     8
. "${CT_LIB_DIR}/scripts/build/libc/glibc-eglibc.sh-common"
yann@2272
     9
yann@850
    10
# Download glibc
yann@850
    11
do_libc_get() {
yann@1260
    12
    local date
yann@1260
    13
    local version
yann@1482
    14
    local -a addons_list
yann@1482
    15
yann@1482
    16
    addons_list=($(do_libc_add_ons_list " "))
yann@1114
    17
yann@1759
    18
    # Main source
yann@1759
    19
    CT_GetFile "glibc-${CT_LIBC_VERSION}"               \
yann@1759
    20
               {ftp,http}://ftp.gnu.org/gnu/glibc       \
yann@1759
    21
               ftp://gcc.gnu.org/pub/glibc/releases     \
yann@1759
    22
               ftp://gcc.gnu.org/pub/glibc/snapshots
yann@1759
    23
yann@1759
    24
    # C library addons
yann@1759
    25
    for addon in "${addons_list[@]}"; do
yann@1759
    26
        # NPTL addon is not to be downloaded, in any case
yann@1759
    27
        [ "${addon}" = "nptl" ] && continue || true
yann@1759
    28
        CT_GetFile "glibc-${addon}-${CT_LIBC_VERSION}"      \
yann@850
    29
                   {ftp,http}://ftp.gnu.org/gnu/glibc       \
yann@850
    30
                   ftp://gcc.gnu.org/pub/glibc/releases     \
yann@850
    31
                   ftp://gcc.gnu.org/pub/glibc/snapshots
yann@1759
    32
    done
yann@850
    33
yann@850
    34
    return 0
yann@850
    35
}
yann@850
    36
yann@850
    37
# Extract glibc
yann@850
    38
do_libc_extract() {
yann@1482
    39
    local -a addons_list
yann@1482
    40
yann@1482
    41
    addons_list=($(do_libc_add_ons_list " "))
yann@1260
    42
yann@1759
    43
    CT_Extract "glibc-${CT_LIBC_VERSION}"
yann@1260
    44
yann@1759
    45
    CT_Pushd "${CT_SRC_DIR}/glibc-${CT_LIBC_VERSION}"
yann@1901
    46
    CT_Patch nochdir "glibc" "${CT_LIBC_VERSION}"
yann@850
    47
yann@850
    48
    # C library addons
yann@1482
    49
    for addon in "${addons_list[@]}"; do
yann@850
    50
        # NPTL addon is not to be extracted, in any case
yann@850
    51
        [ "${addon}" = "nptl" ] && continue || true
yann@1761
    52
        CT_Extract nochdir "glibc-${addon}-${CT_LIBC_VERSION}"
yann@1260
    53
yann@1126
    54
        # Some addons have the 'long' name, while others have the
yann@1126
    55
        # 'short' name, but patches are non-uniformly built with
yann@1126
    56
        # either the 'long' or 'short' name, whatever the addons name
yann@1126
    57
        # so we have to make symlinks from the existing to the missing
yann@1126
    58
        # Fortunately for us, [ -d foo ], when foo is a symlink to a
yann@1126
    59
        # directory, returns true!
yann@1759
    60
        [ -d "${addon}" ] || CT_DoExecLog ALL ln -s "glibc-${addon}-${CT_LIBC_VERSION}" "${addon}"
yann@1759
    61
        [ -d "glibc-${addon}-${CT_LIBC_VERSION}" ] || CT_DoExecLog ALL ln -s "${addon}" "glibc-${addon}-${CT_LIBC_VERSION}"
yann@1901
    62
        CT_Patch nochdir "glibc" "${addon}-${CT_LIBC_VERSION}"
yann@850
    63
    done
yann@850
    64
yann@884
    65
    # The configure files may be older than the configure.in files
yann@884
    66
    # if using a snapshot (or even some tarballs). Fake them being
yann@884
    67
    # up to date.
yann@1482
    68
    sleep 2
yann@1260
    69
    find . -type f -name configure -exec touch {} \; 2>&1 |CT_DoLog ALL
yann@1260
    70
yann@1260
    71
    CT_Popd
yann@884
    72
yann@850
    73
    return 0
yann@850
    74
}
yann@850
    75
yann@850
    76
# There is nothing to do for glibc check config
yann@850
    77
do_libc_check_config() {
yann@850
    78
    :
yann@850
    79
}