yann@850: # This file adds functions to build glibc yann@850: # Copyright 2007 Yann E. MORIN yann@850: # Licensed under the GPL v2. See COPYING in the root of this package yann@850: yann@2272: # Add the definitions common to glibc and eglibc yann@2272: # do_libc_start_files yann@2277: # do_libc yann@2277: # do_libc_finish yann@2277: # do_libc_add_ons_list yann@2277: # do_libc_min_kernel_config yann@2272: . "${CT_LIB_DIR}/scripts/build/libc/glibc-eglibc.sh-common" yann@2272: yann@850: # Download glibc yann@850: do_libc_get() { yann@1260: local date yann@1260: local version yann@1482: local -a addons_list yann@1482: yann@1482: addons_list=($(do_libc_add_ons_list " ")) yann@1114: yann@1759: # Main source yann@1759: CT_GetFile "glibc-${CT_LIBC_VERSION}" \ yann@1759: {ftp,http}://ftp.gnu.org/gnu/glibc \ yann@1759: ftp://gcc.gnu.org/pub/glibc/releases \ yann@1759: ftp://gcc.gnu.org/pub/glibc/snapshots yann@1759: yann@1759: # C library addons yann@1759: for addon in "${addons_list[@]}"; do yann@1759: # NPTL addon is not to be downloaded, in any case yann@1759: [ "${addon}" = "nptl" ] && continue || true yann@1759: CT_GetFile "glibc-${addon}-${CT_LIBC_VERSION}" \ yann@850: {ftp,http}://ftp.gnu.org/gnu/glibc \ yann@850: ftp://gcc.gnu.org/pub/glibc/releases \ yann@850: ftp://gcc.gnu.org/pub/glibc/snapshots yann@1759: done yann@850: yann@850: return 0 yann@850: } yann@850: yann@850: # Extract glibc yann@850: do_libc_extract() { yann@1482: local -a addons_list yann@1482: yann@1482: addons_list=($(do_libc_add_ons_list " ")) yann@1260: yann@1759: CT_Extract "glibc-${CT_LIBC_VERSION}" yann@1260: yann@1759: CT_Pushd "${CT_SRC_DIR}/glibc-${CT_LIBC_VERSION}" yann@1901: CT_Patch nochdir "glibc" "${CT_LIBC_VERSION}" yann@850: yann@850: # C library addons yann@1482: for addon in "${addons_list[@]}"; do yann@850: # NPTL addon is not to be extracted, in any case yann@850: [ "${addon}" = "nptl" ] && continue || true yann@1761: CT_Extract nochdir "glibc-${addon}-${CT_LIBC_VERSION}" yann@1260: fauno@2482: CT_TestAndAbort "Error in add-on '${addon}': both short and long names in tarball" \ fauno@2482: -d "${addon}" -a -d "glibc-${addon}-${CT_LIBC_VERSION}" fauno@2482: yann@1126: # Some addons have the 'long' name, while others have the yann@1126: # 'short' name, but patches are non-uniformly built with yann@1126: # either the 'long' or 'short' name, whatever the addons name fauno@2482: # but we prefer the 'short' name and avoid duplicates. fauno@2482: if [ -d "glibc-${addon}-${CT_LIBC_VERSION}" ]; then fauno@2482: mv "glibc-${addon}-${CT_LIBC_VERSION}" "${addon}" fauno@2482: fi fauno@2482: fauno@2482: ln -s "${addon}" "glibc-${addon}-${CT_LIBC_VERSION}" fauno@2482: yann@1901: CT_Patch nochdir "glibc" "${addon}-${CT_LIBC_VERSION}" fauno@2482: fauno@2482: # Remove the long name since it can confuse configure scripts to run fauno@2482: # the same source twice. fauno@2482: rm "glibc-${addon}-${CT_LIBC_VERSION}" yann@850: done yann@850: yann@884: # The configure files may be older than the configure.in files yann@884: # if using a snapshot (or even some tarballs). Fake them being yann@884: # up to date. yann@1482: sleep 2 yann@1260: find . -type f -name configure -exec touch {} \; 2>&1 |CT_DoLog ALL yann@1260: yann@1260: CT_Popd yann@884: yann@850: return 0 yann@850: } yann@850: yann@850: # There is nothing to do for glibc check config yann@850: do_libc_check_config() { yann@850: : yann@850: }