scripts/showSamples.sh
author Bart vdr. Meulen <bartvdrmeulen@gmail.com>
Sun Aug 02 16:45:43 2009 +0200 (2009-08-02)
changeset 1434 7e7290acccc1
parent 1188 a954ea1de05f
child 1519 d07d99f74f19
permissions -rwxr-xr-x
fix wrapper script for symlinks

The wrapper script placed around the target binaries when
using the companion libraries does not work for symbolic links
The wrapper scripts needs to follow the links before calling the
actual binary

Signed-off-by: Bart vdr. Meulen <bartvdrmeulen@gmail.com>

---
yann@1188
     1
#!/bin/sh
yann@1188
     2
# Yes, this is supposed to be a POSIX-compliant shell script.
yann@74
     3
yann@74
     4
# Parses all samples on the command line, and for each of them, prints
yann@74
     5
# the versions of the main tools
yann@74
     6
yann@1188
     7
# Use tools discovered by ./configure
yann@1188
     8
. "${CT_LIB_DIR}/paths.mk"
yann@1188
     9
yann@560
    10
[ "$1" = "-v" ] && opt="$1" && shift
yann@560
    11
[ "$1" = "-w" ] && opt="$1" && shift
yann@474
    12
yann@74
    13
# GREP_OPTIONS screws things up.
yann@74
    14
export GREP_OPTIONS=
yann@74
    15
yann@74
    16
# Dump a single sample
yann@74
    17
dump_single_sample() {
yann@474
    18
    local verbose=0
yann@474
    19
    [ "$1" = "-v" ] && verbose=1 && shift
yann@560
    20
    [ "$1" = "-w" ] && wiki=1 && shift
yann@74
    21
    local width="$1"
yann@74
    22
    local sample="$2"
yann@182
    23
    if [ -f "${CT_TOP_DIR}/samples/${sample}/crosstool.config" ]; then
yann@182
    24
        sample_top="${CT_TOP_DIR}"
yann@822
    25
        sample_type="l"
yann@182
    26
    else
yann@182
    27
        sample_top="${CT_LIB_DIR}"
yann@822
    28
        sample_type="g"
yann@182
    29
    fi
yann@560
    30
    . "${sample_top}/samples/${sample}/crosstool.config"
yann@560
    31
    if [ -z "${wiki}" ]; then
yann@1023
    32
        printf "    %-*s  [%s" ${width} "${sample}" "${sample_type}"
yann@825
    33
        [ -f "${sample_top}/samples/${sample}/broken" ] && printf "B" || printf " "
yann@825
    34
        [ "${CT_EXPERIMENTAL}" = "y" ] && printf "X" || printf " "
yann@825
    35
        echo "]"
yann@560
    36
        if [ ${verbose} -ne 0 ]; then
yann@1427
    37
            case "${CT_TOOLCHAIN_TYPE}" in
yann@1427
    38
                cross)  ;;
yann@1427
    39
                canadian)
yann@1427
    40
                    printf "    Host      : ${CT_HOST}\n"
yann@1427
    41
                    ;;
yann@1427
    42
            esac
yann@850
    43
            echo    "    OS        : ${CT_KERNEL}${CT_KERNEL_VERSION:+-}${CT_KERNEL_VERSION}"
yann@807
    44
            if [ "${CT_GMP_MPFR}" = "y" ]; then
yann@807
    45
                echo    "    GMP/MPFR  : gmp-${CT_GMP_VERSION} / mpfr-${CT_MPFR_VERSION}"
yann@807
    46
            fi
yann@560
    47
            echo    "    binutils  : binutils-${CT_BINUTILS_VERSION}"
yann@642
    48
            printf  "    C compiler: ${CT_CC}-${CT_CC_VERSION} (C"
yann@642
    49
            [ "${CT_CC_LANG_CXX}" = "y"     ] && printf ",C++"
yann@642
    50
            [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ",Fortran"
yann@642
    51
            [ "${CT_CC_LANG_JAVA}" = "y"    ] && printf ",Java"
yann@642
    52
            [ "${CT_CC_LANG_ADA}" = "y"     ] && printf ",ADA"
yann@642
    53
            [ "${CT_CC_LANG_OBJC}" = "y"    ] && printf ",Objective-C"
yann@642
    54
            [ "${CT_CC_LANG_OBJCXX}" = "y"  ] && printf ",Objective-C++"
yann@649
    55
            [ -n "${CT_CC_LANG_OTHERS}"     ] && printf ",${CT_CC_LANG_OTHERS}"
yann@560
    56
            echo    ")"
yann@850
    57
            echo    "    C library : ${CT_LIBC}${CT_LIBC_VERSION:+-}${CT_LIBC_VERSION}"
yann@642
    58
            printf  "    Tools     :"
yann@642
    59
            [ "${CT_LIBELF}"  ] && printf " libelf-${CT_LIBELF_VERSION}"
yann@642
    60
            [ "${CT_SSTRIP}"  ] && printf " sstrip"
yann@642
    61
            [ "${CT_DMALLOC}" ] && printf " dmalloc-${CT_DMALLOC_VERSION}"
yann@642
    62
            [ "${CT_DUMA}"    ] && printf " duma-${CT_DUMA_VERSION}"
yann@642
    63
            [ "${CT_GDB}"     ] && printf " gdb-${CT_GDB_VERSION}"
yann@642
    64
            [ "${CT_LTRACE}"  ] && printf " ltrace-${CT_LTRACE_VERSION}"
yann@642
    65
            [ "${CT_STRACE}"  ] && printf " strace-${CT_STRACE_VERSION}"
yann@560
    66
            echo
yann@560
    67
        fi
yann@560
    68
    else
yann@642
    69
        printf "| ''${sample}''  "
yann@828
    70
        printf "|  "
yann@828
    71
        [ "${CT_EXPERIMENTAL}" = "y" ] && printf "X"
yann@828
    72
        [ -f "${sample_top}/samples/${sample}/broken" ] && printf "B"
yann@1427
    73
        printf '  |  '
yann@1427
    74
        case "${CT_TOOLCHAIN_TYPE}" in
yann@1427
    75
            cross)      ;;
yann@1427
    76
            canadian)   printf "${CT_HOST}";;
yann@1427
    77
            *)          ;;
yann@1427
    78
        esac
yann@1427
    79
        printf "  |  ''${CT_KERNEL}''  |"
yann@1026
    80
        if [ "${CT_KERNEL}" != "bare-metal" ];then
yann@1026
    81
            if [ "${CT_KERNEL_LINUX_HEADERS_USE_CUSTOM_DIR}" = "y" ]; then
yann@1026
    82
                printf "  //custom//  "
yann@1026
    83
            else
yann@1026
    84
                printf "  ${CT_KERNEL_VERSION}  "
yann@1026
    85
            fi
yann@722
    86
        fi
yann@642
    87
        printf "|  ${CT_BINUTILS_VERSION}  "
yann@691
    88
        printf "|  ''${CT_CC}''  "
yann@642
    89
        printf "|  ${CT_CC_VERSION}  "
yann@1026
    90
        printf "|  ''${CT_LIBC}''  |"
yann@1026
    91
        if [ "${CT_LIBC}" != "none" ]; then
yann@1026
    92
            printf "  ${CT_LIBC_VERSION}  "
yann@1026
    93
        fi
yann@1026
    94
        printf "|  ${CT_THREADS:-none}  "
yann@642
    95
        printf "|  ${CT_ARCH_FLOAT_HW:+hard}${CT_ARCH_FLOAT_SW:+soft} float  "
yann@649
    96
        printf "|  C"
yann@649
    97
        [ "${CT_CC_LANG_CXX}" = "y"     ] && printf ", C++"
yann@649
    98
        [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ", Fortran"
yann@649
    99
        [ "${CT_CC_LANG_JAVA}" = "y"    ] && printf ", Java"
yann@649
   100
        [ "${CT_CC_LANG_ADA}" = "y"     ] && printf ", ADA"
yann@649
   101
        [ "${CT_CC_LANG_OBJC}" = "y"    ] && printf ", Objective-C"
yann@649
   102
        [ "${CT_CC_LANG_OBJCXX}" = "y"  ] && printf ", Objective-C++"
yann@649
   103
        [ -n "${CT_CC_LANG_OTHERS}"     ] && printf "\\\\\\\\ Others: ${CT_CC_LANG_OTHERS}"
yann@691
   104
        printf "  "
yann@935
   105
        ( . "${sample_top}/samples/${sample}/reported.by"
yann@935
   106
          if [ -n "${reporter_name}" ]; then
yann@617
   107
              if [ -n "${reporter_url}" ]; then
yann@642
   108
                  printf "|  [[${reporter_url}|${reporter_name}]]  "
yann@617
   109
              else
yann@642
   110
                  printf "|  ${reporter_name}  "
yann@617
   111
              fi
yann@935
   112
          else
yann@935
   113
              printf "|  [[http://ymorin.is-a-geek.org/|YEM]]  "
yann@935
   114
          fi
yann@935
   115
        )
yann@1427
   116
        sample_updated="$( hg log -l 1 --template '{date|shortdate}' "${sample_top}/samples/${sample}" )"
yann@750
   117
        printf "|  ${sample_updated}  "
yann@560
   118
        echo "|"
yann@474
   119
    fi
yann@74
   120
}
yann@74
   121
yann@74
   122
# Get largest sample width
yann@74
   123
width=0
yann@74
   124
for sample in "${@}"; do
yann@74
   125
    [ ${#sample} -gt ${width} ] && width=${#sample}
yann@74
   126
done
yann@74
   127
yann@560
   128
if [ "${opt}" = -w ]; then
yann@828
   129
    echo "^ @@DATE@@  ^ |||||||||||||"
yann@642
   130
    printf "^ Target "
yann@828
   131
    printf "^  Status  "
yann@1427
   132
    printf "^  Host  "
yann@691
   133
    printf "^  Kernel headers\\\\\\\\ version  ^"
yann@851
   134
    printf "^  binutils\\\\\\\\ version  "
yann@691
   135
    printf "^  C compiler\\\\\\\\ version  ^"
yann@851
   136
    printf "^  C library\\\\\\\\ version  ^"
yann@851
   137
    printf "^  Threading\\\\\\\\ model  "
yann@651
   138
    printf "^  Floating point\\\\\\\\ support  "
yann@651
   139
    printf "^  Languages  "
yann@750
   140
    printf "^  Initially\\\\\\\\ reported by  "
yann@750
   141
    printf "^  Last\\\\\\\\ updated  "
yann@642
   142
    echo   "^"
yann@560
   143
fi
yann@724
   144
yann@74
   145
for sample in "${@}"; do
yann@474
   146
    ( dump_single_sample ${opt} ${width} "${sample}" )
yann@74
   147
done
yann@724
   148
yann@724
   149
if [ "${opt}" = -w ]; then
yann@850
   150
    printf "^ Total: ${#@} samples  | ''X'': sample uses features marked as being EXPERIMENTAL.\\\\\\\\ ''B'': sample is curently BROKEN. |||||||||||||"
yann@724
   151
    echo   ""
yann@822
   152
elif [ -z "${opt}" ]; then
yann@822
   153
    echo '      l (local)       : sample was found in current directory'
yann@822
   154
    echo '      g (global)      : sample was installed with crosstool-NG'
yann@822
   155
    echo '      X (EXPERIMENTAL): sample may use EXPERIMENTAL features'
yann@999
   156
    echo '      B (BROKEN)      : sample is currently broken'
yann@724
   157
fi