scripts/tarball.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jun 17 17:15:24 2007 +0000 (2007-06-17)
changeset 177 60e62e0a90e2
parent 166 fe502496fc06
permissions -rwxr-xr-x
Prepare to release crosstool-ng-0.0.5.
yann@87
     1
#!/bin/bash
yann@87
     2
yann@87
     3
# This scripts makes a tarball of the configured toolchain
yann@87
     4
# Pre-requisites:
yann@87
     5
#  - crosstool-NG is configured
yann@87
     6
#  - components tarball are available
yann@87
     7
#  - toolchain is built successfully
yann@87
     8
yann@87
     9
# We need the functions first:
yann@87
    10
. "${CT_TOP_DIR}/scripts/functions"
yann@87
    11
yann@166
    12
# Don't care about any log file
yann@115
    13
exec >/dev/null
yann@166
    14
rm -f "${tmp_log_file}"
yann@87
    15
yann@87
    16
# Parse the configuration file:
yann@87
    17
. ${CT_TOP_DIR}/.config
yann@87
    18
yann@87
    19
CT_DoBuildTargetTriplet
yann@87
    20
yann@87
    21
# Kludge: if any of the config options needs either CT_TARGET or CT_TOP_DIR,
yann@87
    22
# re-parse them:
yann@87
    23
. "${CT_TOP_DIR}/.config"
yann@87
    24
yann@166
    25
# Build a one-line list of files to include
yann@166
    26
CT_DoStep DEBUG "Building list of tarballs to add"
yann@87
    27
CT_TARBALLS_DIR="${CT_TOP_DIR}/targets/tarballs"
yann@166
    28
CT_TARBALLS=""
yann@166
    29
for dir in '' tools debug; do
yann@166
    30
    CT_DoStep DEBUG "Scanning directory \"${dir}\""
yann@166
    31
    for script in "${CT_TOP_DIR}/scripts/build/${dir}/"*.sh; do
yann@166
    32
        CT_DoStep DEBUG "Testing component \"${script}\""
yann@166
    33
        [ -n "${script}" ] || continue
yann@166
    34
        unset do_print_file_name
yann@166
    35
        . "${script}"
yann@166
    36
        for file in `do_print_filename`; do
yann@166
    37
            CT_DoLog DEBUG "Finding tarball for \"${file}\""
yann@166
    38
            [ -n "${file}" ] || continue
yann@166
    39
            ext=`CT_GetFileExtension "${file}"`
yann@166
    40
            CT_TestOrAbort "Missing tarball for: \"${file}\"" -f "${CT_TOP_DIR}/targets/tarballs/${file}${ext}"
yann@166
    41
            CT_DoLog DEBUG "Found \"${file}${ext}\""
yann@166
    42
            CT_TARBALLS="${CT_TARBALLS} ${file}${ext}"
yann@166
    43
        done
yann@166
    44
        CT_EndStep
yann@87
    45
    done
yann@166
    46
    CT_EndStep
yann@166
    47
done    
yann@166
    48
CT_EndStep
yann@87
    49
yann@87
    50
# We need to emulate a build directory:
yann@87
    51
CT_BUILD_DIR="${CT_TOP_DIR}/targets/${CT_TARGET}/build"
yann@87
    52
mkdir -p "${CT_BUILD_DIR}"
yann@87
    53
CT_MktempDir tempdir
yann@87
    54
yann@87
    55
# Save crosstool-ng, as it is configured for the current toolchain.
yann@87
    56
topdir=`basename "${CT_TOP_DIR}"`
yann@87
    57
CT_Pushd "${CT_TOP_DIR}/.."
yann@87
    58
yann@87
    59
botdir=`pwd`
yann@87
    60
yann@166
    61
# Build the list of files to exclude
yann@166
    62
CT_DoLog DEBUG "Building list of files to exclude"
yann@166
    63
exclude_list="${tempdir}/${CT_TARGET}.list"
yann@166
    64
{ echo ".svn";                                                  \
yann@166
    65
  echo "${topdir}/log.*";                                       \
yann@166
    66
  echo "${topdir}/targets/src";                                 \
yann@166
    67
  echo "${topdir}/targets/tst";                                 \
yann@166
    68
  echo "${topdir}/targets/*-*-*-*";                             \
yann@166
    69
  for t in `ls -1 "${topdir}/targets/tarballs/"`; do            \
yann@166
    70
      case " ${CT_TARBALLS} " in                                \
yann@166
    71
          *" ${t} "*) ;;                                        \
yann@166
    72
          *)          echo "${topdir}/targets/tarballs/${t}";;  \
yann@166
    73
      esac;                                                     \
yann@166
    74
  done;                                                         \
yann@166
    75
} >"${exclude_list}"
yann@87
    76
yann@166
    77
# Render the install directory writable
yann@166
    78
chmod u+w "${CT_PREFIX_DIR}"
yann@166
    79
yann@166
    80
CT_DoLog INFO "Saving crosstool-ng into the toolchain directory"
yann@166
    81
tar cvjf "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2"    \
yann@166
    82
    --no-wildcards-match-slash                                  \
yann@166
    83
    -X "${exclude_list}"                                        \
yann@166
    84
    "${topdir}"                                                 2>&1 |CT_DoLog ALL
yann@87
    85
yann@87
    86
CT_Popd
yann@87
    87
yann@166
    88
CT_DoLog INFO "Saving the toolchain"
yann@166
    89
tar cvjf "${botdir}/${CT_TARGET}.tar.bz2" "${CT_PREFIX_DIR}"    2>&1 |CT_DoLog ALL
yann@87
    90
yann@166
    91
CT_DoLog DEBUG "Getting rid of working directories"
yann@87
    92
rm -f "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2"
yann@87
    93
rm -rf "${tempdir}"
yann@166
    94
yann@174
    95
if [ "${CT_INSTALL_DIR_RO}" = "y" ]; then
yann@174
    96
    # Render the install directory non-writable
yann@174
    97
    chmod u-w "${CT_PREFIX_DIR}"
yann@174
    98
fi