scripts/build/libc/glibc.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon May 30 23:05:28 2011 +0200 (2011-05-30)
changeset 2496 cc9b84a83b34
parent 2483 fa3a18f9abcf
child 2504 3fc114996b20
permissions -rw-r--r--
glibc: properly handle internal addons

Some addons are bundled with glibc/eglibc, so we should not try to
download and extract them.

This is done as thus:
- at download time:
- if the add-on download fails, keep going;
- at extract time:
- if the addon is present in the source tree, ignore it;
- if the addon is missing in the source tree:
- if the archive is present, extract it;
- if the archive is missing, bail out.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 # This file adds functions to build glibc
     2 # Copyright 2007 Yann E. MORIN
     3 # Licensed under the GPL v2. See COPYING in the root of this package
     4 
     5 # Add the definitions common to glibc and eglibc
     6 #   do_libc_extract
     7 #   do_libc_start_files
     8 #   do_libc
     9 #   do_libc_finish
    10 #   do_libc_add_ons_list
    11 #   do_libc_min_kernel_config
    12 . "${CT_LIB_DIR}/scripts/build/libc/glibc-eglibc.sh-common"
    13 
    14 # Download glibc
    15 do_libc_get() {
    16     local date
    17     local version
    18     local -a addons_list
    19 
    20     addons_list=($(do_libc_add_ons_list " "))
    21 
    22     # Main source
    23     CT_GetFile "glibc-${CT_LIBC_VERSION}"               \
    24                {ftp,http}://ftp.gnu.org/gnu/glibc       \
    25                ftp://gcc.gnu.org/pub/glibc/releases     \
    26                ftp://gcc.gnu.org/pub/glibc/snapshots
    27 
    28     # C library addons
    29     for addon in "${addons_list[@]}"; do
    30         if ! CT_GetFile "glibc-${addon}-${CT_LIBC_VERSION}"     \
    31                         {ftp,http}://ftp.gnu.org/gnu/glibc      \
    32                         ftp://gcc.gnu.org/pub/glibc/releases    \
    33                         ftp://gcc.gnu.org/pub/glibc/snapshots
    34         then
    35             # Some add-ons are bundled with glibc, others are
    36             # bundled in their own tarball. Eg. NPTL is internal,
    37             # while LinuxThreads was external. Also, for old
    38             # versions of glibc, the libidn add-on was external,
    39             # but with version >=2.10, it is internal.
    40             CT_DoLog DEBUG "Addon '${addon}' could not be downloaded."
    41             CT_DoLog DEBUG "We'll see later if we can find it in the source tree"
    42         fi
    43     done
    44 
    45     return 0
    46 }
    47 
    48 # There is nothing to do for glibc check config
    49 do_libc_check_config() {
    50     :
    51 }