scripts/build/libc/eglibc.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Aug 19 00:52:05 2011 +0200 (2011-08-19)
branch1.12
changeset 2633 22e779b0a4ed
parent 2504 3fc114996b20
child 2586 4f9efd2c6627
permissions -rw-r--r--
scripts: simplify and fix the toolchain config script

The script that is installed, and which sole purpose is to dump
the .config that was used to build the toolchain, is pure insanity.

Let's make it much, much more simpler...

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
(transplanted from 814ea73df7e0fab3db1cbe7623932714359c732b)
yann@850
     1
# eglibc build functions (initially by Thomas JOURDAN).
yann@850
     2
yann@2270
     3
# Add the definitions common to glibc and eglibc
yann@2483
     4
#   do_libc_extract
yann@2270
     5
#   do_libc_start_files
yann@2270
     6
#   do_libc
yann@2270
     7
#   do_libc_finish
yann@2270
     8
#   do_libc_add_ons_list
yann@2483
     9
#   do_libc_min_kernel_config
yann@2270
    10
. "${CT_LIB_DIR}/scripts/build/libc/glibc-eglibc.sh-common"
yann@2270
    11
yann@2495
    12
# Download glibc
yann@2495
    13
# eglibc is only available through subversion, there are no
yann@2495
    14
# snapshots available.
yann@2495
    15
do_libc_get() {
yann@2495
    16
    local addon
bryanhundven@2520
    17
    local svn_base
bryanhundven@2520
    18
bryanhundven@2520
    19
    if [ "${CT_EGLIBC_HTTP}" = "y" ]; then
bryanhundven@2520
    20
        svn_base="http://www.eglibc.org/svn"
bryanhundven@2520
    21
    else
bryanhundven@2520
    22
        svn_base="svn://svn.eglibc.org"
bryanhundven@2520
    23
    fi
yann@850
    24
yann@850
    25
    case "${CT_LIBC_VERSION}" in
yann@2495
    26
        trunk)  svn_base+="/trunk";;
yann@2495
    27
        *)      svn_base+="/branches/eglibc-${CT_LIBC_VERSION}";;
yann@850
    28
    esac
yann@850
    29
yann@2495
    30
    CT_GetSVN "eglibc-${CT_LIBC_VERSION}"   \
yann@2495
    31
              "${svn_base}/libc"            \
yann@2495
    32
              "${CT_EGLIBC_REVISION:-HEAD}"
yann@850
    33
yann@2495
    34
    for addon in $(do_libc_add_ons_list " "); do
yann@2504
    35
        # Never ever try to download these add-ons,
yann@2504
    36
        # they've always been internal
yann@2504
    37
        case "${addon}" in
yann@2504
    38
            nptl)   continue;;
yann@2504
    39
        esac
yann@2504
    40
yann@2496
    41
        if ! CT_GetSVN "eglibc-${addon}-${CT_LIBC_VERSION}" \
yann@2496
    42
                       "${svn_base}/${addon}"               \
yann@2496
    43
                       "${CT_EGLIBC_REVISION:-HEAD}"
yann@2496
    44
        then
yann@2496
    45
            # Some add-ons are bundled with the main sources
yann@2496
    46
            # so failure to download them is expected
yann@2496
    47
            CT_DoLog DEBUG "Addon '${addon}' could not be downloaded."
yann@2496
    48
            CT_DoLog DEBUG "We'll see later if we can find it in the source tree"
yann@2496
    49
        fi
yann@850
    50
    done
yann@850
    51
}
yann@850
    52
avrac@1569
    53
# Copy user provided eglibc configuration file if provided
yann@850
    54
do_libc_check_config() {
avrac@1569
    55
    if [ "${CT_EGLIBC_CUSTOM_CONFIG}" != "y" ]; then
avrac@1569
    56
        return 0
avrac@1569
    57
    fi
avrac@1569
    58
avrac@1569
    59
    CT_DoStep INFO "Checking C library configuration"
avrac@1569
    60
avrac@1569
    61
    CT_TestOrAbort "You did not provide an eglibc config file!" \
avrac@1569
    62
        -n "${CT_EGLIBC_OPTION_GROUPS_FILE}" -a \
avrac@1569
    63
        -f "${CT_EGLIBC_OPTION_GROUPS_FILE}"
avrac@1569
    64
avrac@1569
    65
    CT_DoExecLog ALL cp "${CT_EGLIBC_OPTION_GROUPS_FILE}" "${CT_CONFIG_DIR}/eglibc.config"
avrac@1569
    66
avrac@1569
    67
    # NSS configuration
avrac@1569
    68
    if grep -E '^OPTION_EGLIBC_NSSWITCH[[:space:]]*=[[:space:]]*n' "${CT_EGLIBC_OPTION_GROUPS_FILE}" >/dev/null 2>&1; then
avrac@1569
    69
        CT_DoLog DEBUG "Using fixed-configuration nsswitch facility"
avrac@1569
    70
avrac@1569
    71
        if [ "${CT_EGLIBC_BUNDLED_NSS_CONFIG}" = "y" ]; then
avrac@1569
    72
            nss_config="${CT_SRC_DIR}/eglibc-${CT_LIBC_VERSION}/nss/fixed-nsswitch.conf"
avrac@1569
    73
        else
avrac@1569
    74
            nss_config="${CT_EGLIBC_NSS_CONFIG_FILE}"
avrac@1569
    75
        fi
avrac@1569
    76
        CT_TestOrAbort "NSS config file not found!" -n "${nss_config}" -a -f "${nss_config}"
avrac@1569
    77
avrac@1569
    78
        CT_DoExecLog ALL cp "${nss_config}" "${CT_CONFIG_DIR}/nsswitch.config"
avrac@1569
    79
        echo "OPTION_EGLIBC_NSSWITCH_FIXED_CONFIG = ${CT_CONFIG_DIR}/nsswitch.config" \
avrac@1569
    80
            >> "${CT_CONFIG_DIR}/eglibc.config"
avrac@1569
    81
avrac@1569
    82
        if [ "${CT_EGLIBC_BUNDLED_NSS_FUNCTIONS}" = "y" ]; then
avrac@1569
    83
            nss_functions="${CT_SRC_DIR}/eglibc-${CT_LIBC_VERSION}/nss/fixed-nsswitch.functions"
avrac@1569
    84
        else
avrac@1569
    85
            nss_functions="${CT_EGLIBC_NSS_FUNCTIONS_FILE}"
avrac@1569
    86
        fi
avrac@1569
    87
        CT_TestOrAbort "NSS functions file not found!" -n "${nss_functions}" -a -f "${nss_functions}"
avrac@1569
    88
avrac@1569
    89
        CT_DoExecLog ALL cp "${nss_functions}" "${CT_CONFIG_DIR}/nsswitch.functions"
avrac@1569
    90
        echo "OPTION_EGLIBC_NSSWITCH_FIXED_FUNCTIONS = ${CT_CONFIG_DIR}/nsswitch.functions" \
avrac@1569
    91
            >> "${CT_CONFIG_DIR}/eglibc.config"
avrac@1569
    92
    else
avrac@1569
    93
        CT_DoLog DEBUG "Using full-blown nsswitch facility"
avrac@1569
    94
    fi
avrac@1569
    95
avrac@1569
    96
    CT_EndStep
yann@850
    97
}