scripts/tarball.sh.broken
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Apr 26 21:31:05 2008 +0000 (2008-04-26)
changeset 454 372b2f397baa
parent 335 f0d84f1d4c93
child 523 010f6f4e4dd6
permissions -rwxr-xr-x
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(-)
     1 #!/bin/bash
     2 
     3 # This scripts makes a tarball of the configured toolchain
     4 # Pre-requisites:
     5 #  - crosstool-NG is configured
     6 #  - components tarball are available
     7 #  - toolchain is built successfully
     8 
     9 # We need the functions first:
    10 . "${CT_TOP_DIR}/scripts/functions"
    11 
    12 # Don't care about any log file
    13 exec >/dev/null
    14 rm -f "${tmp_log_file}"
    15 
    16 # Parse the configuration file:
    17 . ${CT_TOP_DIR}/.config
    18 
    19 # Parse the architecture-specific functions
    20 . "${CT_LIB_DIR}/arch/${CT_ARCH}/functions"
    21 
    22 # Target tuple: CT_TARGET needs a little love:
    23 CT_DoBuildTargetTuple
    24 
    25 # Kludge: if any of the config options needs either CT_TARGET or CT_TOP_DIR,
    26 # re-parse them:
    27 . "${CT_TOP_DIR}/.config"
    28 
    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"
    32 CT_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
    39         . "${script}"
    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}"
    47         done
    48         CT_EndStep
    49     done
    50     CT_EndStep
    51 done    
    52 CT_EndStep
    53 
    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}"
    57 CT_MktempDir tempdir
    58 
    59 # Save crosstool-NG, as it is configured for the current toolchain.
    60 topdir=`basename "${CT_TOP_DIR}"`
    61 CT_Pushd "${CT_TOP_DIR}/.."
    62 
    63 botdir=`pwd`
    64 
    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"
    68 { echo ".svn";                                                  \
    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                                \
    75           *" ${t} "*) ;;                                        \
    76           *)          echo "${topdir}/targets/tarballs/${t}";;  \
    77       esac;                                                     \
    78   done;                                                         \
    79 } >"${exclude_list}"
    80 
    81 # Render the install directory writable
    82 chmod u+w "${CT_PREFIX_DIR}"
    83 
    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
    89 
    90 CT_Popd
    91 
    92 CT_DoLog INFO "Saving the toolchain"
    93 tar cvjf "${botdir}/${CT_TARGET}.tar.bz2" "${CT_PREFIX_DIR}"    2>&1 |CT_DoLog ALL
    94 
    95 CT_DoLog DEBUG "Getting rid of working directories"
    96 rm -f "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2"
    97 rm -rf "${tempdir}"
    98 
    99 if [ "${CT_INSTALL_DIR_RO}" = "y" ]; then
   100     # Render the install directory non-writable
   101     chmod u-w "${CT_PREFIX_DIR}"
   102 fi