#!/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 || $NF ~ libcpp)
			if (!seen[ver = version("readlink " $NF)]++)
				printversion("Linux C" ($NF ~ libcpp? "++" : "") " 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("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)
	}
}
