scripts/showSamples.sh
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Mon Jul 23 22:02:23 2012 +0200 (2012-07-23)
changeset 3012 95173b196a88
parent 2982 1e35d2fa54d7
child 3022 8c8041e70203
permissions -rwxr-xr-x
scripts+samples: fix listings the samples

Since we use defconfigs to save the samples, listing all the
samples can no longer be done by passing all the sample names
at one to the script; we need to pass them one-by-one after
we expand the sample's defconfig ibnto a complete .config.

Reported-by: Bryan Hundven <bryanhundven@gmail.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
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@2838
     8
. "${CT_LIB_DIR}/paths.sh"
yann@1188
     9
yann@560
    10
[ "$1" = "-v" ] && opt="$1" && shift
yann@560
    11
[ "$1" = "-w" ] && opt="$1" && shift
yann@3012
    12
[ "$1" = "-W" ] && opt="$1" && shift
yann@474
    13
yann@74
    14
# GREP_OPTIONS screws things up.
yann@74
    15
export GREP_OPTIONS=
yann@74
    16
yann@74
    17
# Dump a single sample
yann@2982
    18
# Note: we use the specific .config.sample config file
yann@74
    19
dump_single_sample() {
yann@474
    20
    local verbose=0
yann@3012
    21
    local wiki=0
yann@1808
    22
    local complibs
yann@474
    23
    [ "$1" = "-v" ] && verbose=1 && shift
yann@560
    24
    [ "$1" = "-w" ] && wiki=1 && shift
yann@3012
    25
    local sample="$1"
yann@1788
    26
    case "${sample}" in
yann@1788
    27
        current)
yann@1788
    28
            sample_type="l"
yann@2982
    29
            sample="$( ${CT_NG} show-tuple )"
yann@1788
    30
            ;;
yann@1788
    31
        *)  if [ -f "${CT_TOP_DIR}/samples/${sample}/crosstool.config" ]; then
yann@1788
    32
                sample_top="${CT_TOP_DIR}"
yann@1876
    33
                sample_type="L"
yann@1788
    34
            else
yann@1788
    35
                sample_top="${CT_LIB_DIR}"
yann@1876
    36
                sample_type="G"
yann@1788
    37
            fi
yann@1788
    38
            ;;
yann@1788
    39
    esac
yann@2982
    40
    . $(pwd)/.config.sample
yann@3012
    41
    if [ ${wiki} -eq 0 ]; then
yann@3012
    42
        width=14
yann@3012
    43
        printf "[%s" "${sample_type}"
yann@3012
    44
        [ -f "${sample_top}/samples/${sample}/broken" ] && printf "B" || printf "."
yann@3012
    45
        [ "${CT_EXPERIMENTAL}" = "y" ] && printf "X" || printf "."
yann@3012
    46
        printf "]   %s\n" "${sample}"
yann@560
    47
        if [ ${verbose} -ne 0 ]; then
yann@1427
    48
            case "${CT_TOOLCHAIN_TYPE}" in
yann@1427
    49
                cross)  ;;
yann@1427
    50
                canadian)
yann@3012
    51
                    printf "    %-*s : %s\n" ${width} "Host" "${CT_HOST}"
yann@1427
    52
                    ;;
yann@1427
    53
            esac
yann@3012
    54
            printf "    %-*s : %s\n" ${width} "OS" "${CT_KERNEL}${CT_KERNEL_VERSION:+-}${CT_KERNEL_VERSION}"
yann@1845
    55
            if [    -n "${CT_GMP}"              \
yann@1845
    56
                 -o -n "${CT_MPFR}"             \
yann@1845
    57
                 -o -n "${CT_PPL}"              \
yann@1845
    58
                 -o -n "${CT_CLOOG}"            \
yann@1845
    59
                 -o -n "${CT_MPC}"              \
yann@1845
    60
                 -o -n "${CT_LIBELF}"           \
yann@1846
    61
                 -o -n "${CT_GMP_TARGET}"       \
yann@1846
    62
                 -o -n "${CT_MPFR_TARGET}"      \
yann@1846
    63
                 -o -n "${CT_PPL_TARGET}"       \
yann@1846
    64
                 -o -n "${CT_CLOOG_TARGET}"     \
yann@1846
    65
                 -o -n "${CT_MPC_TARGET}"       \
yann@1846
    66
                 -o -n "${CT_LIBELF_TARGET}"    \
yann@1808
    67
               ]; then
yann@3012
    68
                printf "    %-*s :" ${width} "Companion libs"
yann@1808
    69
                complibs=1
yann@807
    70
            fi
yann@1846
    71
            [ -z "${CT_GMP}"    -a -z "${CT_GMP_TARGET}"    ] || printf " gmp-%s"       "${CT_GMP_VERSION}"
yann@1846
    72
            [ -z "${CT_MPFR}"   -a -z "${CT_MPFR_TARGET}"   ] || printf " mpfr-%s"      "${CT_MPFR_VERSION}"
yann@1846
    73
            [ -z "${CT_PPL}"    -a -z "${CT_PPL_TARGET}"    ] || printf " ppl-%s"       "${CT_PPL_VERSION}"
yann@1846
    74
            [ -z "${CT_CLOOG}"  -a -z "${CT_CLOOG_TARGET}"  ] || printf " cloog-ppl-%s" "${CT_CLOOG_VERSION}"
yann@1846
    75
            [ -z "${CT_MPC}"    -a -z "${CT_MPC_TARGET}"    ] || printf " mpc-%s"       "${CT_MPC_VERSION}"
yann@1846
    76
            [ -z "${CT_LIBELF}" -a -z "${CT_LIBELF_TARGET}" ] || printf " libelf-%s"    "${CT_LIBELF_VERSION}"
yann@1808
    77
            [ -z "${complibs}"  ] || printf "\n"
yann@3012
    78
            printf  "    %-*s : %s\n" ${width} "binutils" "binutils-${CT_BINUTILS_VERSION}"
yann@3012
    79
            printf  "    %-*s : %s" ${width} "C compiler" "${CT_CC}-${CT_CC_VERSION} (C"
yann@642
    80
            [ "${CT_CC_LANG_CXX}" = "y"     ] && printf ",C++"
yann@642
    81
            [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ",Fortran"
yann@642
    82
            [ "${CT_CC_LANG_JAVA}" = "y"    ] && printf ",Java"
yann@642
    83
            [ "${CT_CC_LANG_ADA}" = "y"     ] && printf ",ADA"
yann@642
    84
            [ "${CT_CC_LANG_OBJC}" = "y"    ] && printf ",Objective-C"
yann@642
    85
            [ "${CT_CC_LANG_OBJCXX}" = "y"  ] && printf ",Objective-C++"
yann@649
    86
            [ -n "${CT_CC_LANG_OTHERS}"     ] && printf ",${CT_CC_LANG_OTHERS}"
yann@1519
    87
            printf ")\n"
yann@3012
    88
            printf  "    %-*s : %s\n" ${width} "C library" "${CT_LIBC}${CT_LIBC_VERSION:+-}${CT_LIBC_VERSION}"
yann@3012
    89
            printf  "    %-*s :" ${width} "Tools"
yann@1520
    90
            [ "${CT_TOOL_sstrip}"   ] && printf " sstrip"
yann@1520
    91
            [ "${CT_DEBUG_dmalloc}" ] && printf " dmalloc-${CT_DMALLOC_VERSION}"
yann@1520
    92
            [ "${CT_DEBUG_duma}"    ] && printf " duma-${CT_DUMA_VERSION}"
yann@1520
    93
            [ "${CT_DEBUG_gdb}"     ] && printf " gdb-${CT_GDB_VERSION}"
yann@1520
    94
            [ "${CT_DEBUG_ltrace}"  ] && printf " ltrace-${CT_LTRACE_VERSION}"
yann@1520
    95
            [ "${CT_DEBUG_strace}"  ] && printf " strace-${CT_STRACE_VERSION}"
yann@1519
    96
            printf "\n"
yann@560
    97
        fi
yann@560
    98
    else
yann@1658
    99
        case "${CT_TOOLCHAIN_TYPE}" in
yann@1658
   100
            cross)
yann@1658
   101
                printf "| ''${sample}''  | "
yann@1658
   102
                ;;
yann@1658
   103
            canadian)
yann@1658
   104
                printf "| ''"
yann@1658
   105
                printf "${sample}" |sed -r -e 's/.*,//'
yann@1658
   106
                printf "''  | ${CT_HOST}  "
yann@1658
   107
                ;;
yann@1658
   108
            *)          ;;
yann@1658
   109
        esac
yann@828
   110
        printf "|  "
yann@1659
   111
        [ "${CT_EXPERIMENTAL}" = "y" ] && printf "**X**"
yann@1659
   112
        [ -f "${sample_top}/samples/${sample}/broken" ] && printf "**B**"
yann@1427
   113
        printf "  |  ''${CT_KERNEL}''  |"
yann@1026
   114
        if [ "${CT_KERNEL}" != "bare-metal" ];then
yann@1026
   115
            if [ "${CT_KERNEL_LINUX_HEADERS_USE_CUSTOM_DIR}" = "y" ]; then
yann@1026
   116
                printf "  //custom//  "
yann@1026
   117
            else
yann@1026
   118
                printf "  ${CT_KERNEL_VERSION}  "
yann@1026
   119
            fi
yann@722
   120
        fi
yann@642
   121
        printf "|  ${CT_BINUTILS_VERSION}  "
yann@691
   122
        printf "|  ''${CT_CC}''  "
yann@642
   123
        printf "|  ${CT_CC_VERSION}  "
yann@1026
   124
        printf "|  ''${CT_LIBC}''  |"
yann@1026
   125
        if [ "${CT_LIBC}" != "none" ]; then
yann@1026
   126
            printf "  ${CT_LIBC_VERSION}  "
yann@1026
   127
        fi
yann@1026
   128
        printf "|  ${CT_THREADS:-none}  "
yann@2762
   129
        printf "|  ${CT_ARCH_FLOAT}  "
yann@649
   130
        printf "|  C"
yann@649
   131
        [ "${CT_CC_LANG_CXX}" = "y"     ] && printf ", C++"
yann@649
   132
        [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ", Fortran"
yann@649
   133
        [ "${CT_CC_LANG_JAVA}" = "y"    ] && printf ", Java"
yann@649
   134
        [ "${CT_CC_LANG_ADA}" = "y"     ] && printf ", ADA"
yann@649
   135
        [ "${CT_CC_LANG_OBJC}" = "y"    ] && printf ", Objective-C"
yann@649
   136
        [ "${CT_CC_LANG_OBJCXX}" = "y"  ] && printf ", Objective-C++"
yann@649
   137
        [ -n "${CT_CC_LANG_OTHERS}"     ] && printf "\\\\\\\\ Others: ${CT_CC_LANG_OTHERS}"
yann@691
   138
        printf "  "
yann@935
   139
        ( . "${sample_top}/samples/${sample}/reported.by"
yann@935
   140
          if [ -n "${reporter_name}" ]; then
yann@617
   141
              if [ -n "${reporter_url}" ]; then
yann@642
   142
                  printf "|  [[${reporter_url}|${reporter_name}]]  "
yann@617
   143
              else
yann@642
   144
                  printf "|  ${reporter_name}  "
yann@617
   145
              fi
yann@935
   146
          else
yann@2725
   147
              printf "|  (//unknown//)  "
yann@935
   148
          fi
yann@935
   149
        )
yann@1427
   150
        sample_updated="$( hg log -l 1 --template '{date|shortdate}' "${sample_top}/samples/${sample}" )"
yann@750
   151
        printf "|  ${sample_updated}  "
yann@560
   152
        echo "|"
yann@474
   153
    fi
yann@74
   154
}
yann@74
   155
yann@3012
   156
if [ "${opt}" = "-w" -a ${#} -eq 0 ]; then
yann@1659
   157
    printf "^ %s  |||||||||||||||\n" "$( date "+%Y%m%d.%H%M %z" )"
yann@1658
   158
    printf "^ Target  "
yann@1658
   159
    printf "^ Host  "
yann@828
   160
    printf "^  Status  "
yann@691
   161
    printf "^  Kernel headers\\\\\\\\ version  ^"
yann@851
   162
    printf "^  binutils\\\\\\\\ version  "
yann@691
   163
    printf "^  C compiler\\\\\\\\ version  ^"
yann@851
   164
    printf "^  C library\\\\\\\\ version  ^"
yann@851
   165
    printf "^  Threading\\\\\\\\ model  "
yann@651
   166
    printf "^  Floating point\\\\\\\\ support  "
yann@651
   167
    printf "^  Languages  "
yann@750
   168
    printf "^  Initially\\\\\\\\ reported by  "
yann@750
   169
    printf "^  Last\\\\\\\\ updated  "
yann@642
   170
    echo   "^"
yann@3012
   171
    exit 0
yann@3012
   172
elif [ "${opt}" = "-W" ]; then
yann@3012
   173
    printf "^ Total: ${#} samples  || **X**: sample uses features marked as being EXPERIMENTAL.\\\\\\\\ **B**: sample is currently BROKEN. |||||||||||||"
yann@3012
   174
    echo   ""
yann@3012
   175
    exit 0
yann@560
   176
fi
yann@724
   177
yann@74
   178
for sample in "${@}"; do
yann@3012
   179
    ( dump_single_sample ${opt} "${sample}" )
yann@1682
   180
done