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
|