libc/glibc: fix {e,}glibc add-ons with short or long names

Fixes the issue with {e,}glibc 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.

Signed-off-by: Nicolás Reynolds <fauno@kiwwwi.com.ar>
[yann.morin.1992@anciens.enib.fr: remove spurious trailing spaces]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
This commit is contained in:
Yann E. MORIN" 2011-05-27 22:02:30 -03:00 committed by Nicolás Reynolds"
parent a257ff7da8
commit 82fa824f68
2 changed files with 30 additions and 10 deletions

View File

@ -109,15 +109,26 @@ do_libc_extract() {
[ "${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

View File

@ -54,15 +54,24 @@ do_libc_extract() {
[ "${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