#!/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/process/changes.rst\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("bash", version("bash --version"))
	printversion("bc", version("bc --version"))
	printversion("bindgen", version("bindgen --version"))
	printversion("binutils", version("ld -v"))
	printversion("bison", version("bison --version"))
	printversion("btrfs-progs", version("btrfs --version"))
	printversion("Clang", version("clang --version"))
	printversion("Console-tools", version("loadkeys -V"))
	printversion("Dynamic linker (ldd)", version("ldd --version"))
	printversion("e2fsprogs", version("e2fsck -V"))
	printversion("flex", version("flex --version"))
	printversion("gdb", version("gdb -version"))
	printversion("GNU awk", version("gawk --version"))
	printversion("GNU C", version("gcc -dumpversion"))
	printversion("GNU make", version("make --version"))
	printversion("GNU tar", version("tar --version"))
	printversion("GRUB2", version("grub2-install --version"))
	printversion("GRUB", version("grub-install --version"))
	printversion("gtags", version("gtags --version"))
	printversion("iptables", version("iptables -V"))
	printversion("Isdn4k-utils", version("isdnctrl"))
	printversion("jfsutils", version("fsck.jfs -V"))
	printversion("Kbd", version("loadkeys -V"))
	printversion("kmod", version("kmod -V"))

	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("mcelog", version("mcelog --version"))
	printversion("mkimage", version("mkimage --version"))
	printversion("Module-init-tools", version("depmod -V"))
	printversion("Mount", version("mount --version"))
	printversion("Net-tools", version("ifconfig --version"))
	printversion("nfs-utils", version("showmount --version"))
	printversion("openssl", version("openssl version"))
	printversion("pahole", version("pahole --version"))
	printversion("Pcmcia-cs", version("cardmgr -V"))
	printversion("pcmciautils", version("pccardctl -V"))
	printversion("pigz", version("pigz --version"))
	printversion("PPP", version("pppd --version"))
	printversion("procps", version("ps --version"))
	printversion("Python", version("python3 -V"))
	printversion("quota-tools", version("quota -V"))
	printversion("Rust", version("rustc --version"))
	printversion("Sh-utils", version("expr --v"))
	printversion("Sphinx", version("sphinx-build --version"))
	printversion("squashfs-tools", version("mksquashfs -version"))
	printversion("udev", version("udevadm --version"))
	printversion("util-linux", version("mount --version"))
	printversion("Wireless-tools", version("iwconfig --version"))
	printversion("xfsprogs", version("xfs_db -V"))

	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)
	}
}
