linux-yocto/scripts/ver_linux
Alexander Kapshuk afe9017901 ver_linux: Eliminate duplicate code in ldconfig processing logic
The code that acquires the version strings for libc and libcpp is
identical, as is the printversion call. The only difference being the
name of the library being printed.

Refactor the code by unifying the bits that are common to both libraries.

Signed-off-by: Alexander Kapshuk <alexander.kapshuk@gmail.com>
Link: https://lore.kernel.org/r/20210108112626.8623-1-alexander.kapshuk@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-27 14:54:42 +01:00

2.6 KiB
Executable File

#!/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("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) } }