summaryrefslogtreecommitdiff
path: root/pcr/crosstool-ng/libc_ports_short_name.patch
blob: b511fa1832884540d5b0aeff890ddfd35082c896 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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" <fauno@kiwwwi.com.ar>
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