comparing with http://ymorin.is-a-geek.org/hg/crosstool-ng real URL is http://crosstool-ng.org/hg/crosstool-ng searching for changes changeset: 2482:a15a7b4ba12a tag: libc_ports_short_name tag: qbase tag: qtip tag: tip user: "Nicolás Reynolds" date: Fri May 27 22:02:30 2011 -0300 files: scripts/build/libc/eglibc.sh scripts/build/libc/glibc.sh description: Fixes the issue with {e,}libc addons having short and long names (such as eglibc-ports-2_13 and ports), which caused configure scripts to run through them twice and thus configuring incorrectly. For instance, the mips64el-n32-linux-gnu toolchain would be recognized correctly first, but then the second pass would change it to mips32, building a mixed MIPS-III N32 and MIPS-I libc. diff -r 30644208c955 -r a15a7b4ba12a scripts/build/libc/eglibc.sh --- a/scripts/build/libc/eglibc.sh Thu May 26 22:51:03 2011 +0200 +++ b/scripts/build/libc/eglibc.sh Fri May 27 22:02:30 2011 -0300 @@ -103,25 +103,36 @@ CT_Extract "eglibc-${CT_LIBC_VERSION}" CT_Patch "eglibc" "${CT_LIBC_VERSION}" - # C library addons + # C library addons for addon in $(do_libc_add_ons_list " "); do # NPTL addon is not to be extracted, in any case [ "${addon}" = "nptl" ] && continue || true CT_Pushd "${CT_SRC_DIR}/eglibc-${CT_LIBC_VERSION}" CT_Extract nochdir "eglibc-${addon}-${CT_LIBC_VERSION}" + + CT_TestAndAbort "Error in add-on '${addon}': both short and long names in tarball" \ + -d "${addon}" -a -d "eglibc-${addon}-${CT_LIBC_VERSION}" + # Some addons have the 'long' name, while others have the # 'short' name, but patches are non-uniformly built with # either the 'long' or 'short' name, whatever the addons name - # so we have to make symlinks from the existing to the missing - # Fortunately for us, [ -d foo ], when foo is a symlink to a - # directory, returns true! - [ -d "${addon}" ] || ln -s "eglibc-${addon}-${CT_LIBC_VERSION}" "${addon}" - [ -d "eglibc-${addon}-${CT_LIBC_VERSION}" ] || ln -s "${addon}" "eglibc-${addon}-${CT_LIBC_VERSION}" + # but we prefer the 'short' name and avoid duplicates. + if [ -d "eglibc-${addon}-${CT_LIBC_VERSION}" ]; then + mv "eglibc-${addon}-${CT_LIBC_VERSION}" "${addon}" + fi + + ln -s "${addon}" "eglibc-${addon}-${CT_LIBC_VERSION}" + CT_Patch nochdir "eglibc" "${addon}-${CT_LIBC_VERSION}" + + # Remove the long name since it can confuse configure scripts to run + # the same source twice. + rm "eglibc-${addon}-${CT_LIBC_VERSION}" + CT_Popd done - # The configure files may be older than the configure.in files + # The configure files may be older than the configure.in files # if using a snapshot (or even some tarballs). Fake them being # up to date. find "${CT_SRC_DIR}/eglibc-${CT_LIBC_VERSION}" -type f -name configure -exec touch {} \; 2>&1 |CT_DoLog ALL diff -r 30644208c955 -r a15a7b4ba12a scripts/build/libc/glibc.sh --- a/scripts/build/libc/glibc.sh Thu May 26 22:51:03 2011 +0200 +++ b/scripts/build/libc/glibc.sh Fri May 27 22:02:30 2011 -0300 @@ -54,15 +54,24 @@ [ "${addon}" = "nptl" ] && continue || true CT_Extract nochdir "glibc-${addon}-${CT_LIBC_VERSION}" + CT_TestAndAbort "Error in add-on '${addon}': both short and long names in tarball" \ + -d "${addon}" -a -d "glibc-${addon}-${CT_LIBC_VERSION}" + # Some addons have the 'long' name, while others have the # 'short' name, but patches are non-uniformly built with # either the 'long' or 'short' name, whatever the addons name - # so we have to make symlinks from the existing to the missing - # Fortunately for us, [ -d foo ], when foo is a symlink to a - # directory, returns true! - [ -d "${addon}" ] || CT_DoExecLog ALL ln -s "glibc-${addon}-${CT_LIBC_VERSION}" "${addon}" - [ -d "glibc-${addon}-${CT_LIBC_VERSION}" ] || CT_DoExecLog ALL ln -s "${addon}" "glibc-${addon}-${CT_LIBC_VERSION}" + # but we prefer the 'short' name and avoid duplicates. + if [ -d "glibc-${addon}-${CT_LIBC_VERSION}" ]; then + mv "glibc-${addon}-${CT_LIBC_VERSION}" "${addon}" + fi + + ln -s "${addon}" "glibc-${addon}-${CT_LIBC_VERSION}" + CT_Patch nochdir "glibc" "${addon}-${CT_LIBC_VERSION}" + + # Remove the long name since it can confuse configure scripts to run + # the same source twice. + rm "glibc-${addon}-${CT_LIBC_VERSION}" done # The configure files may be older than the configure.in files