1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/dist/tools/ci/print_toolchain_versions.sh
Juan Carrano 2209435214 tools/ci: correcly report flake8 version.
If the flake8 executable is not found, the static test script reports
the tool as missing. It may happen that the flake8 module is installed,
but the console entry point is not.

In the flake8 shell script, flake is invoked via `python -m`. The result
is a confusing error message where static-test reports the tools as missing,
yet the flake8 tests are run.

This patch makes the toolchain version script use the same command as the
flake8 script.
2019-01-15 20:10:29 +01:00

127 lines
3.2 KiB
Bash
Executable File

#!/bin/sh
get_cmd_version() {
if [ -z "$1" ]; then
return
fi
VERSION_RAW=$( ($@ --version) 2>&1)
ERR=$?
VERSION=$(echo "$VERSION_RAW" | head -n 1)
if [ $ERR -eq 127 ] ; then # 127 means command not found
VERSION="missing"
elif [ $ERR -ne 0 ] ; then
VERSION="error: ${VERSION}"
fi
printf "%s" "$VERSION"
}
get_define() {
local cc="$1"
local line=
if command -v "$cc" 2>&1 >/dev/null; then
line=$(echo "$3" | "$cc" -x c -include "$2" -E -o - - 2>&1 | sed -e '/^[ ]*#/d' -e '/^[ ]*$/d')
fi
if [ -z "$line" ]; then
line=missing
fi
printf "%s" "$line"
}
get_kernel_info() {
uname -mprs
}
get_os_info() {
local os="$(uname -s)"
local osname="unknown"
local osvers="unknown"
if [ "$os" = "Linux" ]; then
osname="$(cat /etc/os-release | grep ^NAME= | awk -F'=' '{print $2}')"
osvers="$(cat /etc/os-release | grep ^VERSION= | awk -F'=' '{print $2}')"
elif [ "$os" = "Darwin" ]; then
osname="$(sw_vers -productName)"
osvers="$(sw_vers -productVersion)"
fi
printf "%s %s" "$osname" "$osvers"
}
newlib_version() {
if [ -z "$1" ]; then
printf "%s" "error"
else
local cc="$1"
printf "%s" "$(get_define "$cc" newlib.h _NEWLIB_VERSION)"
fi
}
avr_libc_version() {
if [ -z "$1" ]; then
printf "%s" "error"
else
local cc="$1"
printf "%s (%s)" "$(get_define "$cc" avr/version.h __AVR_LIBC_VERSION_STRING__)" "$(get_define "$cc" avr/version.h __AVR_LIBC_DATE_STRING__)"
fi
}
printf "\n"
# print operating system information
printf "%s\n" "Operating System Environment"
printf "%s\n" "-----------------------------"
printf "%23s: %s\n" "Operating System" "$(get_os_info)"
printf "%23s: %s\n" "Kernel" "$(get_kernel_info)"
printf "\n"
printf "%s\n" "Installed compiler toolchains"
printf "%s\n" "-----------------------------"
printf "%23s: %s\n" "native gcc" "$(get_cmd_version gcc)"
for p in \
arm-none-eabi \
avr mips-mti-elf \
msp430 \
riscv-none-embed \
xtensa-esp32-elf \
xtensa-lx106-elf \
; do
printf "%23s: %s\n" "$p-gcc" "$(get_cmd_version ${p}-gcc)"
done
printf "%23s: %s\n" "clang" "$(get_cmd_version clang)"
printf "\n"
printf "%s\n" "Installed compiler libs"
printf "%s\n" "-----------------------"
# platform specific newlib version
for p in \
arm-none-eabi \
mips-mti-elf \
riscv-none-embed \
xtensa-esp32-elf \
xtensa-lx106-elf \
; do
printf "%23s: %s\n" "$p-newlib" "$(newlib_version ${p}-gcc)"
done
# avr libc version
printf "%23s: %s\n" "avr-libc" "$(avr_libc_version avr-gcc)"
# tools
printf "\n"
printf "%s\n" "Installed development tools"
printf "%s\n" "---------------------------"
for c in \
cmake \
cppcheck \
doxygen \
git \
make \
openocd \
python \
python2 \
python3 \
; do
printf "%23s: %s\n" "$c" "$(get_cmd_version "${c}")"
done
printf "%23s: %s\n" "flake8" "$(get_cmd_version "python3 -Wignore -m flake8")"
printf "%23s: %s\n" "coccinelle" "$(get_cmd_version spatch)"
exit 0