This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 1 of 1] Fixes the issue with {e, }libc addons having short and long names (such as


# 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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]