Some people are reposrting that ftp does not work on their network, probably due to proxies, while http does work.
Some (most) of the sites we use toretrieve tarballs have http equivallent for the ftp service. Use http as a failover.
There's no solution for those sites that do not have such an http equivalent.
/trunk/scripts/build/binutils.sh | 5 2 3 0 ++---
/trunk/scripts/build/libc_glibc.sh | 4 2 2 0 ++--
/trunk/scripts/build/libc_uClibc.sh | 2 1 1 0 +-
/trunk/scripts/build/debug/400-ltrace.sh | 2 1 1 0 +-
/trunk/scripts/build/debug/300-gdb.sh | 8 3 5 0 +++-----
/trunk/scripts/build/kernel_linux.sh | 7 2 5 0 ++-----
/trunk/scripts/build/cc_gcc.sh | 6 2 4 0 ++----
/trunk/scripts/build/gmp.sh | 4 1 3 0 +---
8 files changed, 14 insertions(+), 24 deletions(-)
1 # This file declares functions to install the uClibc C library
2 # Copyright 2007 Yann E. MORIN
3 # Licensed under the GPL v2. See COPYING in the root of this package
6 [ "${CT_LIBC}" = "uClibc" ] || return 0
7 echo "uClibc-${CT_LIBC_VERSION}"
8 [ "${CT_LIBC_UCLIBC_LOCALES}" = "y" ] && echo "uClibc-locale-030818" || true
13 libc_src="http://www.uclibc.org/downloads
14 http://www.uclibc.org/downloads/snapshots
15 http://www.uclibc.org/downloads/old-releases"
16 # For uClibc, we have almost every thing: releases, and snapshots
17 # for the last month or so. We'll have to deal with svn revisions
19 CT_GetFile "${CT_LIBC_FILE}" ${libc_src}
21 [ "${CT_LIBC_UCLIBC_LOCALES}" = "y" ] && CT_GetFile "uClibc-locale-030818" ${libc_src} || true
28 CT_ExtractAndPatch "${CT_LIBC_FILE}"
30 [ "${CT_LIBC_UCLIBC_LOCALES}" = "y" ] && CT_ExtractAndPatch "uClibc-locale-030818" || true
35 # Check that uClibc has been previously configured
36 do_libc_check_config() {
37 CT_DoStep INFO "Checking C library configuration"
39 CT_TestOrAbort "You did not provide a uClibc config file!" -n "${CT_LIBC_UCLIBC_CONFIG_FILE}" -a -f "${CT_LIBC_UCLIBC_CONFIG_FILE}"
41 if egrep '^KERNEL_SOURCE=' "${CT_LIBC_UCLIBC_CONFIG_FILE}" >/dev/null 2>&1; then
42 CT_DoLog WARN "Your uClibc version refers to the kernel _sources_, which is bad."
43 CT_DoLog WARN "I can't guarantee that our little hack will work. Please try to upgrade."
46 CT_DoLog EXTRA "Munging uClibc configuration"
47 mungeuClibcConfig "${CT_LIBC_UCLIBC_CONFIG_FILE}" "${CT_BUILD_DIR}/uClibc.config"
52 # This functions installs uClibc's headers
54 # Only need to install bootstrap uClibc headers for gcc-3.0 and above? Or maybe just gcc-3.3 and above?
55 # See also http://gcc.gnu.org/PR8180, which complains about the need for this step.
56 grep -q 'gcc-[34]' "${CT_SRC_DIR}/${CT_CC_FILE}/ChangeLog" 2>/dev/null || return 0
58 CT_DoStep INFO "Installing C library headers"
60 mkdir -p "${CT_BUILD_DIR}/build-libc-headers"
61 cd "${CT_BUILD_DIR}/build-libc-headers"
63 # Simply copy files until uClibc has the ablity to build out-of-tree
64 CT_DoLog EXTRA "Copying sources to build dir"
65 { cd "${CT_SRC_DIR}/${CT_LIBC_FILE}"; tar cf - .; } |tar xf -
67 # Retrieve the config file
68 cp "${CT_BUILD_DIR}/uClibc.config" .config
70 # uClibc uses the CROSS environment variable as a prefix to the
71 # compiler tools to use. Setting it to the empty string forces
72 # use of the native build host tools, which we need at this
73 # stage, as we don't have target tools yet.
74 CT_DoLog EXTRA "Applying configuration"
75 CT_DoYes "" |make CROSS= PREFIX="${CT_SYSROOT_DIR}/" oldconfig 2>&1 |CT_DoLog ALL
77 CT_DoLog EXTRA "Building headers"
78 make CROSS= PREFIX="${CT_SYSROOT_DIR}/" headers 2>&1 |CT_DoLog ALL
80 CT_DoLog EXTRA "Installing headers"
81 make CROSS= PREFIX="${CT_SYSROOT_DIR}/" install_dev 2>&1 |CT_DoLog ALL
86 # Build and install start files
87 do_libc_start_files() {
91 # This function build and install the full uClibc
93 CT_DoStep INFO "Installing C library"
95 mkdir -p "${CT_BUILD_DIR}/build-libc"
96 cd "${CT_BUILD_DIR}/build-libc"
98 # Simply copy files until uClibc has the ablity to build out-of-tree
99 CT_DoLog EXTRA "Copying sources to build dir"
100 { cd "${CT_SRC_DIR}/${CT_LIBC_FILE}"; tar cf - .; } |tar xf -
102 # Retrieve the config file
103 cp "${CT_BUILD_DIR}/uClibc.config" .config
105 # uClibc uses the CROSS environment variable as a prefix to the compiler
106 # tools to use. The newly built tools should be in our path, so we need
107 # only give the correct name for them.
108 # Note about CFLAGS: In uClibc, CFLAGS are generated by Rules.mak,
109 # depending on the configuration of the library. That is, they are tailored
110 # to best fit the target. So it is useless and seems to be a bad thing to
111 # use LIBC_EXTRA_CFLAGS here.
112 CT_DoLog EXTRA "Applying configuration"
113 CT_DoYes "" |make CROSS=${CT_TARGET}- \
114 PREFIX="${CT_SYSROOT_DIR}/" \
115 oldconfig 2>&1 |CT_DoLog ALL
117 # We do _not_ want to strip anything for now, in case we specifically
118 # asked for a debug toolchain, thus the STRIPTOOL= assignment
119 CT_DoLog EXTRA "Building C library"
120 make CROSS=${CT_TARGET}- \
121 PREFIX="${CT_SYSROOT_DIR}/" \
123 all 2>&1 |CT_DoLog ALL
125 # YEM-FIXME: we want to install libraries in $SYSROOT/lib, but we don't want
126 # to install headers in $SYSROOT/include, thus making only install_runtime.
127 # Plus, the headers were previously installed earlier with install_dev, so
128 # all should be well. Unfortunately, the install_dev target does not install
129 # crti.o and consorts... :-( So reverting to target 'install'.
130 # Note: PARALLELMFLAGS is not usefull for installation.
131 # We do _not_ want to strip anything for now, in case we specifically
132 # asked for a debug toolchain, thus the STRIPTOOL= assignment
133 CT_DoLog EXTRA "Installing C library"
134 make CROSS=${CT_TARGET}- \
135 PREFIX="${CT_SYSROOT_DIR}/" \
137 install 2>&1 |CT_DoLog ALL
142 # This function is used to install those components needing the final C compiler
147 # Initialises the .config file to sensible values
150 mungeuClibcConfig() {
153 munge_file="${CT_BUILD_DIR}/munge-uClibc-config.sed"
155 echo -n >"${munge_file}"
157 # Hack our target in the config file.
158 # Also remove stripping: its the responsibility of the
159 # firmware builder to strip or not.
160 cat >>"${munge_file}" <<-ENDSED
161 s/^(TARGET_.*)=y$/# \\1 is not set/
162 s/^# TARGET_${CT_KERNEL_ARCH} is not set/TARGET_${CT_KERNEL_ARCH}=y/
163 s/^TARGET_ARCH=".*"/TARGET_ARCH="${CT_KERNEL_ARCH}"/
164 s/.*(DOSTRIP).*/# \\1 is not set/
167 # Ah. We may one day need architecture-specific handler here...
168 # Hack the ARM {E,O}ABI into the config file
169 if [ "${CT_ARCH_ARM_EABI}" = "y" ]; then
170 cat >>"${munge_file}" <<-ENDSED
171 s/.*(CONFIG_ARM_OABI).*/# \\1 is not set/
172 s/.*(CONFIG_ARM_EABI).*/\\1=y/
175 cat >>"${munge_file}" <<-ENDSED
176 s/.*(CONFIG_ARM_OABI).*/\\1=y/
177 s/.*(CONFIG_ARM_EABI).*/# \\1 is not set/
181 # Accomodate for old and new uClibc versions, where the
182 # way to select between big/little endian has changed
183 case "${CT_ARCH_BE},${CT_ARCH_LE}" in
184 y,) cat >>"${munge_file}" <<-ENDSED
185 s/.*(ARCH_LITTLE_ENDIAN).*/# \\1 is not set/
186 s/.*(ARCH_BIG_ENDIAN).*/\\1=y/
187 s/.*(ARCH_WANTS_LITTLE_ENDIAN).*/# \\1 is not set/
188 s/.*(ARCH_WANTS_BIG_ENDIAN).*/\\1=y/
191 ,y) cat >>"${munge_file}" <<-ENDSED
192 s/.*(ARCH_LITTLE_ENDIAN).*/\\1=y/
193 s/.*(ARCH_BIG_ENDIAN).*/# \\1 is not set/
194 s/.*(ARCH_WANTS_LITTLE_ENDIAN).*/\\1=y/
195 s/.*(ARCH_WANTS_BIG_ENDIAN).*/# \\1 is not set/
200 # Accomodate for old and new uClibc version, where the
201 # way to select between hard/soft float has changed
202 case "${CT_ARCH_FLOAT_HW},${CT_ARCH_FLOAT_SW}" in
203 y,) cat >>"${munge_file}" <<-ENDSED
204 s/[^_]*(HAS_FPU).*/\\1=y/
205 s/.*(UCLIBC_HAS_FPU).*/\\1=y/
208 ,y) cat >>"${munge_file}" <<-ENDSED
209 s/[^_]*(HAS_FPU).*/\\# \\1 is not set/
210 s/.*(UCLIBC_HAS_FPU).*/# \\1 is not set/
215 # Change paths to work with crosstool-NG
216 # From http://www.uclibc.org/cgi-bin/viewcvs.cgi?rev=16846&view=rev
217 # " we just want the kernel headers, not the whole kernel source ...
218 # " so people may need to update their paths slightly
219 quoted_kernel_source=`echo "${CT_HEADERS_DIR}" | sed -r -e 's,/include/?$,,; s,/,\\\\/,g;'`
220 quoted_headers_dir=`echo ${CT_HEADERS_DIR} | sed -r -e 's,/,\\\\/,g;'`
221 # CROSS_COMPILER_PREFIX is left as is, as the CROSS parameter is forced on the command line
222 # DEVEL_PREFIX is left as '/usr/' because it is post-pended to $PREFIX, wich is the correct value of ${PREFIX}/${TARGET}
223 # Some (old) versions of uClibc use KERNEL_SOURCE (which is _wrong_), and
224 # newer versions use KERNEL_HEADERS (which is right). See:
225 cat >>"${munge_file}" <<-ENDSED
226 s/^DEVEL_PREFIX=".*"/DEVEL_PREFIX="\\/usr\\/"/
227 s/^RUNTIME_PREFIX=".*"/RUNTIME_PREFIX="\\/"/
228 s/^SHARED_LIB_LOADER_PREFIX=.*/SHARED_LIB_LOADER_PREFIX="\\/lib\\/"/
229 s/^KERNEL_SOURCE=".*"/KERNEL_SOURCE="${quoted_kernel_source}"/
230 s/^KERNEL_HEADERS=".*"/KERNEL_HEADERS="${quoted_headers_dir}"/
231 s/^UCLIBC_DOWNLOAD_PREGENERATED_LOCALE=y/\\# UCLIBC_DOWNLOAD_PREGENERATED_LOCALE is not set/
234 if [ "${CT_USE_PIPES}" = "y" ]; then
235 if grep UCLIBC_EXTRA_CFLAGS extra/Configs/Config.in >/dev/null 2>&1; then
236 # Good, there is special provision for such things as -pipe!
237 cat >>"${munge_file}" <<-ENDSED
238 s/^(UCLIBC_EXTRA_CFLAGS=".*)"$/\\1 -pipe"/
241 # Hack our -pipe into WARNINGS, which will be internally incorporated to
242 # CFLAGS. This a dirty hack, but yet needed
243 cat >> "${munge_file}" <<-ENDSED
244 s/^(WARNINGS=".*)"$/\\1 -pipe"/
249 # Force on options needed for C++ if we'll be making a C++ compiler.
250 # Note that the two PREGEN_LOCALE and the XLOCALE lines may be missing
251 # entirely if LOCALE is not set. If LOCALE was already set, we'll
252 # assume the user has already made all the appropriate generation
253 # arrangements. Note that having the uClibc Makefile download the
254 # pregenerated locales is not compatible with crosstool; besides,
255 # crosstool downloads them as part of getandpatch.sh.
256 if [ "${CT_CC_LANG_CXX}" = "y" ]; then
257 cat >>"${munge_file}" <<-ENDSED
258 s/^# DO_C99_MATH is not set/DO_C99_MATH=y/
259 s/^# UCLIBC_CTOR_DTOR is not set/UCLIBC_CTOR_DTOR=y/
260 # Add these three lines when doing C++?
261 #s/^# UCLIBC_HAS_WCHAR is not set/UCLIBC_HAS_WCHAR=y/
262 #s/^# UCLIBC_HAS_LOCALE is not set/UCLIBC_HAS_LOCALE=y\\nUCLIBC_PREGENERATED_LOCALE_DATA=y\\n\\# UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA is not set\\n\\# UCLIBC_HAS_XLOCALE is not set/
263 #s/^# UCLIBC_HAS_GNU_GETOPT is not set/UCLIBC_HAS_GNU_GETOPT=y/
267 # Force on debug options if asked for
268 case "${CT_LIBC_UCLIBC_DEBUG_LEVEL}" in
270 cat >>"${munge_file}" <<-ENDSED
271 s/^PTHREADS_DEBUG_SUPPORT=y/# PTHREADS_DEBUG_SUPPORT is not set/
272 s/^DODEBUG=y/# DODEBUG is not set/
273 s/^DODEBUG_PT=y/# DODEBUG_PT is not set/
274 s/^DOASSERTS=y/# DOASSERTS is not set/
275 s/^SUPPORT_LD_DEBUG=y/# SUPPORT_LD_DEBUG is not set/
276 s/^SUPPORT_LD_DEBUG_EARLY=y/# SUPPORT_LD_DEBUG_EARLY is not set/
277 s/^UCLIBC_MALLOC_DEBUGGING=y/# UCLIBC_MALLOC_DEBUGGING is not set/
281 cat >>"${munge_file}" <<-ENDSED
282 s/^# PTHREADS_DEBUG_SUPPORT is not set.*/PTHREADS_DEBUG_SUPPORT=y/
283 s/^# DODEBUG is not set.*/DODEBUG=y/
284 s/^DODEBUG_PT=y/# DODEBUG_PT is not set/
285 s/^DOASSERTS=y/# DOASSERTS is not set/
286 s/^SUPPORT_LD_DEBUG=y/# SUPPORT_LD_DEBUG is not set/
287 s/^SUPPORT_LD_DEBUG_EARLY=y/# SUPPORT_LD_DEBUG_EARLY is not set/
288 s/^UCLIBC_MALLOC_DEBUGGING=y/# UCLIBC_MALLOC_DEBUGGING is not set/
292 cat >>"${munge_file}" <<-ENDSED
293 s/^# PTHREADS_DEBUG_SUPPORT is not set.*/PTHREADS_DEBUG_SUPPORT=y/
294 s/^# DODEBUG is not set.*/DODEBUG=y/
295 s/^# DODEBUG_PT is not set.*/DODEBUG_PT=y/
296 s/^# DOASSERTS is not set.*/DOASSERTS=y/
297 s/^# SUPPORT_LD_DEBUG is not set.*/SUPPORT_LD_DEBUG=y/
298 s/^# SUPPORT_LD_DEBUG_EARLY is not set.*/SUPPORT_LD_DEBUG_EARLY=y/
299 s/^# UCLIBC_MALLOC_DEBUGGING is not set/UCLIBC_MALLOC_DEBUGGING=y/
303 sed -r -f "${munge_file}" "${src_config_file}" >"${dst_config_file}"