[PATCH 1 of 1] Fixes the issue with {e, }libc addons having short and long names (such as
Nicolás Reynolds
fauno@kiwwwi.com.ar
Sat May 28 01:11:00 GMT 2011
# HG changeset patch
# User "Nicolás Reynolds" <fauno@kiwwwi.com.ar>
# Date 1306544550 10800
# Node ID a15a7b4ba12aa6588efe7256f0cd72344b3369b2
# Parent 30644208c955f485b35219813a9ca8dc9b22fcdf
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
More information about the crossgcc
mailing list