1*8af11c1cSSaul Wold#!/usr/bin/awk -f 22d187d58SAlexander Kapshuk# Before running this script please ensure that your PATH is 32d187d58SAlexander Kapshuk# typical as you use for compilation/installation. I use 42d187d58SAlexander Kapshuk# /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may 52d187d58SAlexander Kapshuk# differ on your system. 62d187d58SAlexander Kapshuk 72d187d58SAlexander KapshukBEGIN { 82d187d58SAlexander Kapshuk usage = "If some fields are empty or look unusual you may have an old version.\n" 92d187d58SAlexander Kapshuk usage = usage "Compare to the current minimal requirements in Documentation/Changes.\n" 102d187d58SAlexander Kapshuk print usage 112d187d58SAlexander Kapshuk 122d187d58SAlexander Kapshuk system("uname -a") 132d187d58SAlexander Kapshuk printf("\n") 142d187d58SAlexander Kapshuk 152d187d58SAlexander Kapshuk printversion("GNU C", version("gcc -dumpversion 2>&1")) 162d187d58SAlexander Kapshuk printversion("GNU Make", version("make --version 2>&1")) 172d187d58SAlexander Kapshuk printversion("Binutils", version("ld -v 2>&1")) 182d187d58SAlexander Kapshuk printversion("Util-linux", version("mount --version 2>&1")) 192d187d58SAlexander Kapshuk printversion("Mount", version("mount --version 2>&1")) 202d187d58SAlexander Kapshuk printversion("Module-init-tools", version("depmod -V 2>&1")) 212d187d58SAlexander Kapshuk printversion("E2fsprogs", version("tune2fs 2>&1")) 222d187d58SAlexander Kapshuk printversion("Jfsutils", version("fsck.jfs -V 2>&1")) 232d187d58SAlexander Kapshuk printversion("Reiserfsprogs", version("reiserfsck -V 2>&1")) 242d187d58SAlexander Kapshuk printversion("Reiser4fsprogs", version("fsck.reiser4 -V 2>&1")) 252d187d58SAlexander Kapshuk printversion("Xfsprogs", version("xfs_db -V 2>&1")) 262d187d58SAlexander Kapshuk printversion("Pcmciautils", version("pccardctl -V 2>&1")) 272d187d58SAlexander Kapshuk printversion("Pcmcia-cs", version("cardmgr -V 2>&1")) 282d187d58SAlexander Kapshuk printversion("Quota-tools", version("quota -V 2>&1")) 292d187d58SAlexander Kapshuk printversion("PPP", version("pppd --version 2>&1")) 302d187d58SAlexander Kapshuk printversion("Isdn4k-utils", version("isdnctrl 2>&1")) 312d187d58SAlexander Kapshuk printversion("Nfs-utils", version("showmount --version 2>&1")) 322d187d58SAlexander Kapshuk 332d187d58SAlexander Kapshuk if (system("test -r /proc/self/maps") == 0) { 342d187d58SAlexander Kapshuk while (getline <"/proc/self/maps" > 0) { 352d187d58SAlexander Kapshuk n = split($0, procmaps, "/") 362d187d58SAlexander Kapshuk if (/libc.*so$/ && match(procmaps[n], /[0-9]+([.]?[0-9]+)+/)) { 372d187d58SAlexander Kapshuk ver = substr(procmaps[n], RSTART, RLENGTH) 382d187d58SAlexander Kapshuk printversion("Linux C Library", ver) 392d187d58SAlexander Kapshuk break 402d187d58SAlexander Kapshuk } 412d187d58SAlexander Kapshuk } 422d187d58SAlexander Kapshuk } 432d187d58SAlexander Kapshuk 442d187d58SAlexander Kapshuk printversion("Dynamic linker (ldd)", version("ldd --version 2>&1")) 452d187d58SAlexander Kapshuk 462d187d58SAlexander Kapshuk while ("ldconfig -p 2>/dev/null" | getline > 0) { 472d187d58SAlexander Kapshuk if (/(libg|stdc)[+]+\.so/) { 482d187d58SAlexander Kapshuk libcpp = $NF 492d187d58SAlexander Kapshuk break 502d187d58SAlexander Kapshuk } 512d187d58SAlexander Kapshuk } 522d187d58SAlexander Kapshuk if (system("test -r " libcpp) == 0) 532d187d58SAlexander Kapshuk printversion("Linux C++ Library", version("readlink " libcpp)) 542d187d58SAlexander Kapshuk 552d187d58SAlexander Kapshuk printversion("Procps", version("ps --version 2>&1")) 562d187d58SAlexander Kapshuk printversion("Net-tools", version("ifconfig --version 2>&1")) 572d187d58SAlexander Kapshuk printversion("Kbd", version("loadkeys -V 2>&1")) 582d187d58SAlexander Kapshuk printversion("Console-tools", version("loadkeys -V 2>&1")) 592d187d58SAlexander Kapshuk printversion("Oprofile", version("oprofiled --version 2>&1")) 602d187d58SAlexander Kapshuk printversion("Sh-utils", version("expr --v 2>&1")) 612d187d58SAlexander Kapshuk printversion("Udev", version("udevadm --version 2>&1")) 622d187d58SAlexander Kapshuk printversion("Wireless-tools", version("iwconfig --version 2>&1")) 632d187d58SAlexander Kapshuk 642d187d58SAlexander Kapshuk if (system("test -r /proc/modules") == 0) { 652d187d58SAlexander Kapshuk while ("sort /proc/modules" | getline > 0) { 662d187d58SAlexander Kapshuk mods = mods sep $1 672d187d58SAlexander Kapshuk sep = " " 682d187d58SAlexander Kapshuk } 692d187d58SAlexander Kapshuk printversion("Modules Loaded", mods) 702d187d58SAlexander Kapshuk } 712d187d58SAlexander Kapshuk} 722d187d58SAlexander Kapshuk 732d187d58SAlexander Kapshukfunction version(cmd, ver) { 742d187d58SAlexander Kapshuk while (cmd | getline > 0) { 752d187d58SAlexander Kapshuk if (!/ver_linux/ && match($0, /[0-9]+([.]?[0-9]+)+/)) { 762d187d58SAlexander Kapshuk ver = substr($0, RSTART, RLENGTH) 772d187d58SAlexander Kapshuk break 782d187d58SAlexander Kapshuk } 792d187d58SAlexander Kapshuk } 802d187d58SAlexander Kapshuk close(cmd) 812d187d58SAlexander Kapshuk return ver 822d187d58SAlexander Kapshuk} 832d187d58SAlexander Kapshuk 842d187d58SAlexander Kapshukfunction printversion(name, value, ofmt) { 852d187d58SAlexander Kapshuk if (value != "") { 862d187d58SAlexander Kapshuk ofmt = "%-20s\t%s\n" 872d187d58SAlexander Kapshuk printf(ofmt, name, value) 882d187d58SAlexander Kapshuk } 892d187d58SAlexander Kapshuk} 90