18af11c1cSSaul Wold#!/usr/bin/awk -f 2b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 39b9e7d36SAlexander Kapshuk# Before running this script please ensure that your PATH is 49b9e7d36SAlexander Kapshuk# typical as you use for compilation/installation. I use 59b9e7d36SAlexander Kapshuk# /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may 69b9e7d36SAlexander Kapshuk# differ on your system. 79b9e7d36SAlexander Kapshuk 89b9e7d36SAlexander KapshukBEGIN { 99b9e7d36SAlexander Kapshuk usage = "If some fields are empty or look unusual you may have an old version.\n" 10d8a224f5SManuel Ebner usage = usage "Compare to the current minimal requirements in Documentation/process/changes.rst\n" 119b9e7d36SAlexander Kapshuk print usage 129b9e7d36SAlexander Kapshuk 139b9e7d36SAlexander Kapshuk system("uname -a") 149b9e7d36SAlexander Kapshuk printf("\n") 159b9e7d36SAlexander Kapshuk 162ca46ed2SAlexander Kapshuk vernum = "[0-9]+([.]?[0-9]+)+" 17ff5cd9acSAlexander Kapshuk libc = "libc[.]so[.][0-9]+$" 18afe90179SAlexander Kapshuk libcpp = "(libg|stdc)[+]+[.]so([.][0-9]+)+$" 192ca46ed2SAlexander Kapshuk 20*ece7e57aSManuel Ebner printversion("bash", version("bash --version")) 21*ece7e57aSManuel Ebner printversion("bc", version("bc --version")) 22*ece7e57aSManuel Ebner printversion("bindgen", version("bindgen --version")) 23*ece7e57aSManuel Ebner printversion("binutils", version("ld -v")) 24*ece7e57aSManuel Ebner printversion("bison", version("bison --version")) 25*ece7e57aSManuel Ebner printversion("btrfs-progs", version("btrfs --version")) 26*ece7e57aSManuel Ebner printversion("Clang", version("clang --version")) 27*ece7e57aSManuel Ebner printversion("Console-tools", version("loadkeys -V")) 28*ece7e57aSManuel Ebner printversion("Dynamic linker (ldd)", version("ldd --version")) 29*ece7e57aSManuel Ebner printversion("e2fsprogs", version("e2fsck -V")) 30*ece7e57aSManuel Ebner printversion("flex", version("flex --version")) 31*ece7e57aSManuel Ebner printversion("gdb", version("gdb -version")) 32*ece7e57aSManuel Ebner printversion("GNU awk", version("gawk --version")) 334169bc43SAlexander Kapshuk printversion("GNU C", version("gcc -dumpversion")) 34d8a224f5SManuel Ebner printversion("GNU make", version("make --version")) 35*ece7e57aSManuel Ebner printversion("GNU tar", version("tar --version")) 36*ece7e57aSManuel Ebner printversion("GRUB2", version("grub2-install --version")) 37*ece7e57aSManuel Ebner printversion("GRUB", version("grub-install --version")) 38*ece7e57aSManuel Ebner printversion("gtags", version("gtags --version")) 39*ece7e57aSManuel Ebner printversion("iptables", version("iptables -V")) 404169bc43SAlexander Kapshuk printversion("Isdn4k-utils", version("isdnctrl")) 41*ece7e57aSManuel Ebner printversion("jfsutils", version("fsck.jfs -V")) 42*ece7e57aSManuel Ebner printversion("Kbd", version("loadkeys -V")) 43*ece7e57aSManuel Ebner printversion("kmod", version("kmod -V")) 449b9e7d36SAlexander Kapshuk 45afe90179SAlexander Kapshuk while ("ldconfig -p 2>/dev/null" | getline > 0) 46afe90179SAlexander Kapshuk if ($NF ~ libc || $NF ~ libcpp) 47afe90179SAlexander Kapshuk if (!seen[ver = version("readlink " $NF)]++) 48afe90179SAlexander Kapshuk printversion("Linux C" ($NF ~ libcpp? "++" : "") " Library", ver) 499b9e7d36SAlexander Kapshuk 50d8a224f5SManuel Ebner printversion("mcelog", version("mcelog --version")) 51d8a224f5SManuel Ebner printversion("mkimage", version("mkimage --version")) 52*ece7e57aSManuel Ebner printversion("Module-init-tools", version("depmod -V")) 53*ece7e57aSManuel Ebner printversion("Mount", version("mount --version")) 54*ece7e57aSManuel Ebner printversion("Net-tools", version("ifconfig --version")) 55*ece7e57aSManuel Ebner printversion("nfs-utils", version("showmount --version")) 56d8a224f5SManuel Ebner printversion("openssl", version("openssl version")) 57d8a224f5SManuel Ebner printversion("pahole", version("pahole --version")) 58*ece7e57aSManuel Ebner printversion("Pcmcia-cs", version("cardmgr -V")) 59*ece7e57aSManuel Ebner printversion("pcmciautils", version("pccardctl -V")) 60*ece7e57aSManuel Ebner printversion("PPP", version("pppd --version")) 61*ece7e57aSManuel Ebner printversion("procps", version("ps --version")) 62d8a224f5SManuel Ebner printversion("Python", version("python3 -V")) 63*ece7e57aSManuel Ebner printversion("quota-tools", version("quota -V")) 64d8a224f5SManuel Ebner printversion("Rust", version("rustc --version")) 65*ece7e57aSManuel Ebner printversion("Sh-utils", version("expr --v")) 66d8a224f5SManuel Ebner printversion("Sphinx", version("sphinx-build --version")) 67d8a224f5SManuel Ebner printversion("squashfs-tools", version("mksquashfs -version")) 68*ece7e57aSManuel Ebner printversion("udev", version("udevadm --version")) 69*ece7e57aSManuel Ebner printversion("util-linux", version("mount --version")) 70*ece7e57aSManuel Ebner printversion("Wireless-tools", version("iwconfig --version")) 71*ece7e57aSManuel Ebner printversion("xfsprogs", version("xfs_db -V")) 729b9e7d36SAlexander Kapshuk 739b9e7d36SAlexander Kapshuk while ("sort /proc/modules" | getline > 0) { 749b9e7d36SAlexander Kapshuk mods = mods sep $1 759b9e7d36SAlexander Kapshuk sep = " " 769b9e7d36SAlexander Kapshuk } 779b9e7d36SAlexander Kapshuk printversion("Modules Loaded", mods) 789b9e7d36SAlexander Kapshuk} 799b9e7d36SAlexander Kapshuk 809b9e7d36SAlexander Kapshukfunction version(cmd, ver) { 814169bc43SAlexander Kapshuk cmd = cmd " 2>&1" 829b9e7d36SAlexander Kapshuk while (cmd | getline > 0) { 832ca46ed2SAlexander Kapshuk if (match($0, vernum)) { 849b9e7d36SAlexander Kapshuk ver = substr($0, RSTART, RLENGTH) 859b9e7d36SAlexander Kapshuk break 869b9e7d36SAlexander Kapshuk } 879b9e7d36SAlexander Kapshuk } 889b9e7d36SAlexander Kapshuk close(cmd) 899b9e7d36SAlexander Kapshuk return ver 909b9e7d36SAlexander Kapshuk} 919b9e7d36SAlexander Kapshuk 929b9e7d36SAlexander Kapshukfunction printversion(name, value, ofmt) { 939b9e7d36SAlexander Kapshuk if (value != "") { 949b9e7d36SAlexander Kapshuk ofmt = "%-20s\t%s\n" 959b9e7d36SAlexander Kapshuk printf(ofmt, name, value) 969b9e7d36SAlexander Kapshuk } 979b9e7d36SAlexander Kapshuk} 98