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