Configure tsocks with a simple heuristic.
Consider the proxy has to be in a 'local' network. It means it is directly
reachable by the local machine, even if the local machine has to hop through
one or more gates to reach the proxy (often the case in enterprise networks
where class A 10.0.0.0/8 is in fact sub-divided into smaller networks, each
one of them in a different location, eg. 10.1.0.0/16 in a place, while
10.2.0.0/16 would be on the other side of the world). Not being in the same
subnet does not mean the proxy is not available.
So we will build a mask with at most high bits set, which defines a network
that has both the local machine and the proxy. Because a machine may have
more than one interface, build a mask for each of them, removing 127.0.0.1
which is added automagically by tsocks, and removing duplicate masks.
If all of this does not work, then it means the local machine can NOT in fact
reach the proxy, which in turn means the user mis-configured something (most
probably a typo...).
/trunk/scripts/crosstool.sh | 61 52 9 0 +++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 52 insertions(+), 9 deletions(-)
3 # This scripts makes a tarball of the configured toolchain
5 # - crosstool-NG is configured
6 # - components tarball are available
7 # - toolchain is built successfully
9 # We need the functions first:
10 . "${CT_TOP_DIR}/scripts/functions"
12 # Don't care about any log file
14 rm -f "${tmp_log_file}"
16 # Parse the configuration file:
17 . ${CT_TOP_DIR}/.config
19 # Parse the architecture-specific functions
20 . "${CT_LIB_DIR}/arch/${CT_ARCH}/functions"
22 # Target tuple: CT_TARGET needs a little love:
25 # Kludge: if any of the config options needs either CT_TARGET or CT_TOP_DIR,
27 . "${CT_TOP_DIR}/.config"
29 # Build a one-line list of files to include
30 CT_DoStep DEBUG "Building list of tarballs to add"
31 CT_TARBALLS_DIR="${CT_TOP_DIR}/targets/tarballs"
33 for dir in '' tools debug; do
34 CT_DoStep DEBUG "Scanning directory \"${dir}\""
35 for script in "${CT_TOP_DIR}/scripts/build/${dir}/"*.sh; do
36 CT_DoStep DEBUG "Testing component \"${script}\""
37 [ -n "${script}" ] || continue
38 unset do_print_file_name
40 for file in `do_print_filename`; do
41 CT_DoLog DEBUG "Finding tarball for \"${file}\""
42 [ -n "${file}" ] || continue
43 ext=`CT_GetFileExtension "${file}"`
44 CT_TestOrAbort "Missing tarball for: \"${file}\"" -f "${CT_TOP_DIR}/targets/tarballs/${file}${ext}"
45 CT_DoLog DEBUG "Found \"${file}${ext}\""
46 CT_TARBALLS="${CT_TARBALLS} ${file}${ext}"
54 # We need to emulate a build directory:
55 CT_BUILD_DIR="${CT_TOP_DIR}/targets/${CT_TARGET}/build"
56 mkdir -p "${CT_BUILD_DIR}"
59 # Save crosstool-NG, as it is configured for the current toolchain.
60 topdir=`basename "${CT_TOP_DIR}"`
61 CT_Pushd "${CT_TOP_DIR}/.."
65 # Build the list of files to exclude
66 CT_DoLog DEBUG "Building list of files to exclude"
67 exclude_list="${tempdir}/${CT_TARGET}.list"
69 echo "${topdir}/log.*"; \
70 echo "${topdir}/targets/src"; \
71 echo "${topdir}/targets/tst"; \
72 echo "${topdir}/targets/*-*-*-*"; \
73 for t in `ls -1 "${topdir}/targets/tarballs/"`; do \
74 case " ${CT_TARBALLS} " in \
76 *) echo "${topdir}/targets/tarballs/${t}";; \
81 # Render the install directory writable
82 chmod u+w "${CT_PREFIX_DIR}"
84 CT_DoLog INFO "Saving crosstool-NG into the toolchain directory"
85 tar cvjf "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2" \
86 --no-wildcards-match-slash \
87 -X "${exclude_list}" \
88 "${topdir}" 2>&1 |CT_DoLog ALL
92 CT_DoLog INFO "Saving the toolchain"
93 tar cvjf "${botdir}/${CT_TARGET}.tar.bz2" "${CT_PREFIX_DIR}" 2>&1 |CT_DoLog ALL
95 CT_DoLog DEBUG "Getting rid of working directories"
96 rm -f "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2"
99 if [ "${CT_INSTALL_DIR_RO}" = "y" ]; then
100 # Render the install directory non-writable
101 chmod u-w "${CT_PREFIX_DIR}"