scripts/showSamples.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jan 17 23:06:02 2010 +0100 (2010-01-17)
changeset 1740 c57458bb354d
parent 1659 5f26745a915c
child 1788 9547490131d9
permissions -rwxr-xr-x
configure: do not require hg when configuring in an hg clone

When configuring in an hg clone, we need hg to compute the version string.
It can happen that users do not have Mercurial (eg. if they got a snapshot
rather that they did a full clone). In this case, we can still run, of
course, so simply fill the version string with a sufficiently explicit
value, that does not require hg. The date is a good candidate.
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@1521
    32
        t_width=13
yann@1682
    33
        printf "%-*s  [%s" ${width} "${sample}" "${sample_type}"
yann@825
    34
        [ -f "${sample_top}/samples/${sample}/broken" ] && printf "B" || printf " "
yann@825
    35
        [ "${CT_EXPERIMENTAL}" = "y" ] && printf "X" || printf " "
yann@825
    36
        echo "]"
yann@560
    37
        if [ ${verbose} -ne 0 ]; then
yann@1427
    38
            case "${CT_TOOLCHAIN_TYPE}" in
yann@1427
    39
                cross)  ;;
yann@1427
    40
                canadian)
yann@1519
    41
                    printf "    %-*s : %s\n" ${t_width} "Host" "${CT_HOST}"
yann@1427
    42
                    ;;
yann@1427
    43
            esac
yann@1519
    44
            printf "    %-*s : %s\n" ${t_width} "OS" "${CT_KERNEL}${CT_KERNEL_VERSION:+-}${CT_KERNEL_VERSION}"
yann@807
    45
            if [ "${CT_GMP_MPFR}" = "y" ]; then
yann@1519
    46
                printf    "    %-*s : %s\n" ${t_width} "GMP/MPFR" "gmp-${CT_GMP_VERSION} / mpfr-${CT_MPFR_VERSION}"
yann@807
    47
            fi
yann@1521
    48
            if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then
yann@1521
    49
                printf    "    %-*s : %s\n" ${t_width} "PPL/CLOOG/MPC" "ppl-${CT_PPL_VERSION} / cloog-${CT_CLOOG_VERSION} / mpc-${CT_MPC_VERSION}"
yann@1521
    50
            fi
yann@1519
    51
            printf  "    %-*s : %s\n" ${t_width} "binutils" "binutils-${CT_BINUTILS_VERSION}"
yann@1519
    52
            printf  "    %-*s : %s" ${t_width} "C compiler" "${CT_CC}-${CT_CC_VERSION} (C"
yann@642
    53
            [ "${CT_CC_LANG_CXX}" = "y"     ] && printf ",C++"
yann@642
    54
            [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ",Fortran"
yann@642
    55
            [ "${CT_CC_LANG_JAVA}" = "y"    ] && printf ",Java"
yann@642
    56
            [ "${CT_CC_LANG_ADA}" = "y"     ] && printf ",ADA"
yann@642
    57
            [ "${CT_CC_LANG_OBJC}" = "y"    ] && printf ",Objective-C"
yann@642
    58
            [ "${CT_CC_LANG_OBJCXX}" = "y"  ] && printf ",Objective-C++"
yann@649
    59
            [ -n "${CT_CC_LANG_OTHERS}"     ] && printf ",${CT_CC_LANG_OTHERS}"
yann@1519
    60
            printf ")\n"
yann@1519
    61
            printf  "    %-*s : %s\n" ${t_width} "C library" "${CT_LIBC}${CT_LIBC_VERSION:+-}${CT_LIBC_VERSION}"
yann@1519
    62
            printf  "    %-*s :" ${t_width} "Tools"
yann@1520
    63
            [ "${CT_TOOL_libelf}"   ] && printf " libelf-${CT_LIBELF_VERSION}"
yann@1520
    64
            [ "${CT_TOOL_sstrip}"   ] && printf " sstrip"
yann@1520
    65
            [ "${CT_DEBUG_dmalloc}" ] && printf " dmalloc-${CT_DMALLOC_VERSION}"
yann@1520
    66
            [ "${CT_DEBUG_duma}"    ] && printf " duma-${CT_DUMA_VERSION}"
yann@1520
    67
            [ "${CT_DEBUG_gdb}"     ] && printf " gdb-${CT_GDB_VERSION}"
yann@1520
    68
            [ "${CT_DEBUG_ltrace}"  ] && printf " ltrace-${CT_LTRACE_VERSION}"
yann@1520
    69
            [ "${CT_DEBUG_strace}"  ] && printf " strace-${CT_STRACE_VERSION}"
yann@1519
    70
            printf "\n"
yann@560
    71
        fi
yann@560
    72
    else
yann@1658
    73
        case "${CT_TOOLCHAIN_TYPE}" in
yann@1658
    74
            cross)
yann@1658
    75
                printf "| ''${sample}''  | "
yann@1658
    76
                ;;
yann@1658
    77
            canadian)
yann@1658
    78
                printf "| ''"
yann@1658
    79
                printf "${sample}" |sed -r -e 's/.*,//'
yann@1658
    80
                printf "''  | ${CT_HOST}  "
yann@1658
    81
                ;;
yann@1658
    82
            *)          ;;
yann@1658
    83
        esac
yann@828
    84
        printf "|  "
yann@1659
    85
        [ "${CT_EXPERIMENTAL}" = "y" ] && printf "**X**"
yann@1659
    86
        [ -f "${sample_top}/samples/${sample}/broken" ] && printf "**B**"
yann@1427
    87
        printf "  |  ''${CT_KERNEL}''  |"
yann@1026
    88
        if [ "${CT_KERNEL}" != "bare-metal" ];then
yann@1026
    89
            if [ "${CT_KERNEL_LINUX_HEADERS_USE_CUSTOM_DIR}" = "y" ]; then
yann@1026
    90
                printf "  //custom//  "
yann@1026
    91
            else
yann@1026
    92
                printf "  ${CT_KERNEL_VERSION}  "
yann@1026
    93
            fi
yann@722
    94
        fi
yann@642
    95
        printf "|  ${CT_BINUTILS_VERSION}  "
yann@691
    96
        printf "|  ''${CT_CC}''  "
yann@642
    97
        printf "|  ${CT_CC_VERSION}  "
yann@1026
    98
        printf "|  ''${CT_LIBC}''  |"
yann@1026
    99
        if [ "${CT_LIBC}" != "none" ]; then
yann@1026
   100
            printf "  ${CT_LIBC_VERSION}  "
yann@1026
   101
        fi
yann@1026
   102
        printf "|  ${CT_THREADS:-none}  "
yann@642
   103
        printf "|  ${CT_ARCH_FLOAT_HW:+hard}${CT_ARCH_FLOAT_SW:+soft} float  "
yann@649
   104
        printf "|  C"
yann@649
   105
        [ "${CT_CC_LANG_CXX}" = "y"     ] && printf ", C++"
yann@649
   106
        [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ", Fortran"
yann@649
   107
        [ "${CT_CC_LANG_JAVA}" = "y"    ] && printf ", Java"
yann@649
   108
        [ "${CT_CC_LANG_ADA}" = "y"     ] && printf ", ADA"
yann@649
   109
        [ "${CT_CC_LANG_OBJC}" = "y"    ] && printf ", Objective-C"
yann@649
   110
        [ "${CT_CC_LANG_OBJCXX}" = "y"  ] && printf ", Objective-C++"
yann@649
   111
        [ -n "${CT_CC_LANG_OTHERS}"     ] && printf "\\\\\\\\ Others: ${CT_CC_LANG_OTHERS}"
yann@691
   112
        printf "  "
yann@935
   113
        ( . "${sample_top}/samples/${sample}/reported.by"
yann@935
   114
          if [ -n "${reporter_name}" ]; then
yann@617
   115
              if [ -n "${reporter_url}" ]; then
yann@642
   116
                  printf "|  [[${reporter_url}|${reporter_name}]]  "
yann@617
   117
              else
yann@642
   118
                  printf "|  ${reporter_name}  "
yann@617
   119
              fi
yann@935
   120
          else
yann@935
   121
              printf "|  [[http://ymorin.is-a-geek.org/|YEM]]  "
yann@935
   122
          fi
yann@935
   123
        )
yann@1427
   124
        sample_updated="$( hg log -l 1 --template '{date|shortdate}' "${sample_top}/samples/${sample}" )"
yann@750
   125
        printf "|  ${sample_updated}  "
yann@560
   126
        echo "|"
yann@474
   127
    fi
yann@74
   128
}
yann@74
   129
yann@74
   130
# Get largest sample width
yann@74
   131
width=0
yann@74
   132
for sample in "${@}"; do
yann@74
   133
    [ ${#sample} -gt ${width} ] && width=${#sample}
yann@74
   134
done
yann@74
   135
yann@560
   136
if [ "${opt}" = -w ]; then
yann@1659
   137
    printf "^ %s  |||||||||||||||\n" "$( date "+%Y%m%d.%H%M %z" )"
yann@1658
   138
    printf "^ Target  "
yann@1658
   139
    printf "^ Host  "
yann@828
   140
    printf "^  Status  "
yann@691
   141
    printf "^  Kernel headers\\\\\\\\ version  ^"
yann@851
   142
    printf "^  binutils\\\\\\\\ version  "
yann@691
   143
    printf "^  C compiler\\\\\\\\ version  ^"
yann@851
   144
    printf "^  C library\\\\\\\\ version  ^"
yann@851
   145
    printf "^  Threading\\\\\\\\ model  "
yann@651
   146
    printf "^  Floating point\\\\\\\\ support  "
yann@651
   147
    printf "^  Languages  "
yann@750
   148
    printf "^  Initially\\\\\\\\ reported by  "
yann@750
   149
    printf "^  Last\\\\\\\\ updated  "
yann@642
   150
    echo   "^"
yann@560
   151
fi
yann@724
   152
yann@74
   153
for sample in "${@}"; do
yann@474
   154
    ( dump_single_sample ${opt} ${width} "${sample}" )
yann@1682
   155
done
yann@724
   156
yann@724
   157
if [ "${opt}" = -w ]; then
yann@1659
   158
    printf "^ Total: ${#@} samples  || **X**: sample uses features marked as being EXPERIMENTAL.\\\\\\\\ **B**: sample is curently BROKEN. |||||||||||||"
yann@724
   159
    echo   ""
yann@822
   160
elif [ -z "${opt}" ]; then
yann@822
   161
    echo '      l (local)       : sample was found in current directory'
yann@822
   162
    echo '      g (global)      : sample was installed with crosstool-NG'
yann@822
   163
    echo '      X (EXPERIMENTAL): sample may use EXPERIMENTAL features'
yann@999
   164
    echo '      B (BROKEN)      : sample is currently broken'
yann@724
   165
fi