author | "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> |
Sun Sep 11 01:03:43 2011 +0200 (2011-09-11) | |
branch | 1.12 |
changeset 2658 | 15b12e3d5f73 |
parent 2504 | 3fc114996b20 |
child 2586 | 4f9efd2c6627 |
permissions | -rw-r--r-- |
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 |
} |