#!/usr/bin/awk -f
# SPDX-License-Identifier: GPL-2.0
# Before running this script please ensure that your PATH is
# typical as you use for compilation/installation. I use
# /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may
# differ on your system.

BEGIN {
	usage = "If some fields are empty or look unusual you may have an old version.\n"
	usage = usage "Compare to the current minimal requirements in Documentation/Changes.\n"
	print usage

	system("uname -a")
	printf("\n")

	vernum = "[0-9]+([.]?[0-9]+)+"
	libc = "libc[.]so[.][0-9]+$"
	libcpp = "(libg|stdc)[+]+[.]so[.][0-9]+$"

	printversion("GNU C", version("gcc -dumpversion"))
	printversion("GNU Make", version("make --version"))
	printversion("Binutils", version("ld -v"))
	printversion("Util-linux", version("mount --version"))
	printversion("Mount", version("mount --version"))
	printversion("Module-init-tools", version("depmod -V"))
	printversion("E2fsprogs", version("tune2fs"))
	printversion("Jfsutils", version("fsck.jfs -V"))
	printversion("Reiserfsprogs", version("reiserfsck -V"))
	printversion("Reiser4fsprogs", version("fsck.reiser4 -V"))
	printversion("Xfsprogs", version("xfs_db -V"))
	printversion("Pcmciautils", version("pccardctl -V"))
	printversion("Pcmcia-cs", version("cardmgr -V"))
	printversion("Quota-tools", version("quota -V"))
	printversion("PPP", version("pppd --version"))
	printversion("Isdn4k-utils", version("isdnctrl"))
	printversion("Nfs-utils", version("showmount --version"))
	printversion("Bison", version("bison --version"))
	printversion("Flex", version("flex --version"))

	while ("ldconfig -p 2>/dev/null" | getline > 0) {
		if ($NF ~ libc && !seen[ver = version("readlink " $NF)]++)
			printversion("Linux C Library", ver)
		else if ($NF ~ libcpp && !seen[ver = version("readlink " $NF)]++)
			printversion("Linux C++ Library", ver)
	}

	printversion("Dynamic linker (ldd)", version("ldd --version"))
	printversion("Procps", version("ps --version"))
	printversion("Net-tools", version("ifconfig --version"))
	printversion("Kbd", version("loadkeys -V"))
	printversion("Console-tools", version("loadkeys -V"))
	printversion("Oprofile", version("oprofiled --version"))
	printversion("Sh-utils", version("expr --v"))
	printversion("Udev", version("udevadm --version"))
	printversion("Wireless-tools", version("iwconfig --version"))

	while ("sort /proc/modules" | getline > 0) {
		mods = mods sep $1
		sep = " "
	}
	printversion("Modules Loaded", mods)
}

function version(cmd,    ver) {
	cmd = cmd " 2>&1"
	while (cmd | getline > 0) {
		if (match($0, vernum)) {
			ver = substr($0, RSTART, RLENGTH)
			break
		}
	}
	close(cmd)
	return ver
}

function printversion(name, value,  ofmt) {
	if (value != "") {
		ofmt = "%-20s\t%s\n"
		printf(ofmt, name, value)
	}
}
