scripts/build/libc/eglibc.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue May 31 00:20:44 2011 +0200 (2011-05-31)
changeset 2495 98b02f85db29
parent 2483 fa3a18f9abcf
child 2496 cc9b84a83b34
permissions -rw-r--r--
libc/eglibc: use generic SVN functions

eglibc is only available from SVN. The script currently calls svn
in its own tortuous and convoluted way.

Use the egeneric SVN extract functions, and sinplify the eglibc
download function.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
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
yann@2495
    17
    local svn_base="svn://svn.eglibc.org"
yann@850
    18
yann@850
    19
    case "${CT_LIBC_VERSION}" in
yann@2495
    20
        trunk)  svn_base+="/trunk";;
yann@2495
    21
        *)      svn_base+="/branches/eglibc-${CT_LIBC_VERSION}";;
yann@850
    22
    esac
yann@850
    23
yann@2495
    24
    CT_GetSVN "eglibc-${CT_LIBC_VERSION}"   \
yann@2495
    25
              "${svn_base}/libc"            \
yann@2495
    26
              "${CT_EGLIBC_REVISION:-HEAD}"
yann@850
    27
yann@2495
    28
    for addon in $(do_libc_add_ons_list " "); do
yann@2495
    29
        CT_GetSVN "eglibc-${addon}-${CT_LIBC_VERSION}"  \
yann@2495
    30
                  "${svn_base}/${addon}"                \
yann@2495
    31
                  "${CT_EGLIBC_REVISION:-HEAD}"
yann@850
    32
    done
yann@850
    33
}
yann@850
    34
avrac@1569
    35
# Copy user provided eglibc configuration file if provided
yann@850
    36
do_libc_check_config() {
avrac@1569
    37
    if [ "${CT_EGLIBC_CUSTOM_CONFIG}" != "y" ]; then
avrac@1569
    38
        return 0
avrac@1569
    39
    fi
avrac@1569
    40
avrac@1569
    41
    CT_DoStep INFO "Checking C library configuration"
avrac@1569
    42
avrac@1569
    43
    CT_TestOrAbort "You did not provide an eglibc config file!" \
avrac@1569
    44
        -n "${CT_EGLIBC_OPTION_GROUPS_FILE}" -a \
avrac@1569
    45
        -f "${CT_EGLIBC_OPTION_GROUPS_FILE}"
avrac@1569
    46
avrac@1569
    47
    CT_DoExecLog ALL cp "${CT_EGLIBC_OPTION_GROUPS_FILE}" "${CT_CONFIG_DIR}/eglibc.config"
avrac@1569
    48
avrac@1569
    49
    # NSS configuration
avrac@1569
    50
    if grep -E '^OPTION_EGLIBC_NSSWITCH[[:space:]]*=[[:space:]]*n' "${CT_EGLIBC_OPTION_GROUPS_FILE}" >/dev/null 2>&1; then
avrac@1569
    51
        CT_DoLog DEBUG "Using fixed-configuration nsswitch facility"
avrac@1569
    52
avrac@1569
    53
        if [ "${CT_EGLIBC_BUNDLED_NSS_CONFIG}" = "y" ]; then
avrac@1569
    54
            nss_config="${CT_SRC_DIR}/eglibc-${CT_LIBC_VERSION}/nss/fixed-nsswitch.conf"
avrac@1569
    55
        else
avrac@1569
    56
            nss_config="${CT_EGLIBC_NSS_CONFIG_FILE}"
avrac@1569
    57
        fi
avrac@1569
    58
        CT_TestOrAbort "NSS config file not found!" -n "${nss_config}" -a -f "${nss_config}"
avrac@1569
    59
avrac@1569
    60
        CT_DoExecLog ALL cp "${nss_config}" "${CT_CONFIG_DIR}/nsswitch.config"
avrac@1569
    61
        echo "OPTION_EGLIBC_NSSWITCH_FIXED_CONFIG = ${CT_CONFIG_DIR}/nsswitch.config" \
avrac@1569
    62
            >> "${CT_CONFIG_DIR}/eglibc.config"
avrac@1569
    63
avrac@1569
    64
        if [ "${CT_EGLIBC_BUNDLED_NSS_FUNCTIONS}" = "y" ]; then
avrac@1569
    65
            nss_functions="${CT_SRC_DIR}/eglibc-${CT_LIBC_VERSION}/nss/fixed-nsswitch.functions"
avrac@1569
    66
        else
avrac@1569
    67
            nss_functions="${CT_EGLIBC_NSS_FUNCTIONS_FILE}"
avrac@1569
    68
        fi
avrac@1569
    69
        CT_TestOrAbort "NSS functions file not found!" -n "${nss_functions}" -a -f "${nss_functions}"
avrac@1569
    70
avrac@1569
    71
        CT_DoExecLog ALL cp "${nss_functions}" "${CT_CONFIG_DIR}/nsswitch.functions"
avrac@1569
    72
        echo "OPTION_EGLIBC_NSSWITCH_FIXED_FUNCTIONS = ${CT_CONFIG_DIR}/nsswitch.functions" \
avrac@1569
    73
            >> "${CT_CONFIG_DIR}/eglibc.config"
avrac@1569
    74
    else
avrac@1569
    75
        CT_DoLog DEBUG "Using full-blown nsswitch facility"
avrac@1569
    76
    fi
avrac@1569
    77
avrac@1569
    78
    CT_EndStep
yann@850
    79
}