18af11c1cSSaul Wold#!/usr/bin/awk -f 2b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 32d187d58SAlexander Kapshuk# Before running this script please ensure that your PATH is 42d187d58SAlexander Kapshuk# typical as you use for compilation/installation. I use 52d187d58SAlexander Kapshuk# /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may 62d187d58SAlexander Kapshuk# differ on your system. 72d187d58SAlexander Kapshuk 82d187d58SAlexander KapshukBEGIN { 92d187d58SAlexander Kapshuk usage = "If some fields are empty or look unusual you may have an old version.\n" 102d187d58SAlexander Kapshuk usage = usage "Compare to the current minimal requirements in Documentation/Changes.\n" 112d187d58SAlexander Kapshuk print usage 122d187d58SAlexander Kapshuk 132d187d58SAlexander Kapshuk system("uname -a") 142d187d58SAlexander Kapshuk printf("\n") 152d187d58SAlexander Kapshuk 162ca46ed2SAlexander Kapshuk vernum = "[0-9]+([.]?[0-9]+)+" 17ff5cd9acSAlexander Kapshuk libc = "libc[.]so[.][0-9]+$" 18*afe90179SAlexander Kapshuk libcpp = "(libg|stdc)[+]+[.]so([.][0-9]+)+$" 192ca46ed2SAlexander Kapshuk 204169bc43SAlexander Kapshuk printversion("GNU C", version("gcc -dumpversion")) 214169bc43SAlexander Kapshuk printversion("GNU Make", version("make --version")) 224169bc43SAlexander Kapshuk printversion("Binutils", version("ld -v")) 234169bc43SAlexander Kapshuk printversion("Util-linux", version("mount --version")) 244169bc43SAlexander Kapshuk printversion("Mount", version("mount --version")) 254169bc43SAlexander Kapshuk printversion("Module-init-tools", version("depmod -V")) 264169bc43SAlexander Kapshuk printversion("E2fsprogs", version("tune2fs")) 274169bc43SAlexander Kapshuk printversion("Jfsutils", version("fsck.jfs -V")) 284169bc43SAlexander Kapshuk printversion("Xfsprogs", version("xfs_db -V")) 294169bc43SAlexander Kapshuk printversion("Pcmciautils", version("pccardctl -V")) 304169bc43SAlexander Kapshuk printversion("Pcmcia-cs", version("cardmgr -V")) 314169bc43SAlexander Kapshuk printversion("Quota-tools", version("quota -V")) 324169bc43SAlexander Kapshuk printversion("PPP", version("pppd --version")) 334169bc43SAlexander Kapshuk printversion("Isdn4k-utils", version("isdnctrl")) 344169bc43SAlexander Kapshuk printversion("Nfs-utils", version("showmount --version")) 35faade961SBhaskar Chowdhury printversion("Bison", version("bison --version")) 36faade961SBhaskar Chowdhury printversion("Flex", version("flex --version")) 372d187d58SAlexander Kapshuk 38*afe90179SAlexander Kapshuk while ("ldconfig -p 2>/dev/null" | getline > 0) 39*afe90179SAlexander Kapshuk if ($NF ~ libc || $NF ~ libcpp) 40*afe90179SAlexander Kapshuk if (!seen[ver = version("readlink " $NF)]++) 41*afe90179SAlexander Kapshuk printversion("Linux C" ($NF ~ libcpp? "++" : "") " Library", ver) 422d187d58SAlexander Kapshuk 434169bc43SAlexander Kapshuk printversion("Dynamic linker (ldd)", version("ldd --version")) 444169bc43SAlexander Kapshuk printversion("Procps", version("ps --version")) 454169bc43SAlexander Kapshuk printversion("Net-tools", version("ifconfig --version")) 464169bc43SAlexander Kapshuk printversion("Kbd", version("loadkeys -V")) 474169bc43SAlexander Kapshuk printversion("Console-tools", version("loadkeys -V")) 484169bc43SAlexander Kapshuk printversion("Sh-utils", version("expr --v")) 494169bc43SAlexander Kapshuk printversion("Udev", version("udevadm --version")) 504169bc43SAlexander Kapshuk printversion("Wireless-tools", version("iwconfig --version")) 512d187d58SAlexander Kapshuk 522d187d58SAlexander Kapshuk while ("sort /proc/modules" | getline > 0) { 532d187d58SAlexander Kapshuk mods = mods sep $1 542d187d58SAlexander Kapshuk sep = " " 552d187d58SAlexander Kapshuk } 562d187d58SAlexander Kapshuk printversion("Modules Loaded", mods) 572d187d58SAlexander Kapshuk} 582d187d58SAlexander Kapshuk 592d187d58SAlexander Kapshukfunction version(cmd, ver) { 604169bc43SAlexander Kapshuk cmd = cmd " 2>&1" 612d187d58SAlexander Kapshuk while (cmd | getline > 0) { 622ca46ed2SAlexander Kapshuk if (match($0, vernum)) { 632d187d58SAlexander Kapshuk ver = substr($0, RSTART, RLENGTH) 642d187d58SAlexander Kapshuk break 652d187d58SAlexander Kapshuk } 662d187d58SAlexander Kapshuk } 672d187d58SAlexander Kapshuk close(cmd) 682d187d58SAlexander Kapshuk return ver 692d187d58SAlexander Kapshuk} 702d187d58SAlexander Kapshuk 712d187d58SAlexander Kapshukfunction printversion(name, value, ofmt) { 722d187d58SAlexander Kapshuk if (value != "") { 732d187d58SAlexander Kapshuk ofmt = "%-20s\t%s\n" 742d187d58SAlexander Kapshuk printf(ofmt, name, value) 752d187d58SAlexander Kapshuk } 762d187d58SAlexander Kapshuk} 77