xref: /linux/scripts/ver_linux (revision 8e483ed1342a4ea45b70f0f33ac54eff7a33d918)
11da177e4SLinus Torvalds#!/bin/sh
21da177e4SLinus Torvalds# Before running this script please ensure that your PATH is
31da177e4SLinus Torvalds# typical as you use for compilation/istallation. I use
41da177e4SLinus Torvalds# /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may
51da177e4SLinus Torvalds# differ on your system.
61da177e4SLinus Torvalds#
71da177e4SLinus Torvaldsecho 'If some fields are empty or look unusual you may have an old version.'
81da177e4SLinus Torvaldsecho 'Compare to the current minimal requirements in Documentation/Changes.'
91da177e4SLinus Torvaldsecho ' '
101da177e4SLinus Torvalds
111da177e4SLinus Torvaldsuname -a
121da177e4SLinus Torvaldsecho ' '
131da177e4SLinus Torvalds
14235024e5SAlexander Kapshukgcc -dumpversion 2>&1 |
15235024e5SAlexander Kapshukawk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
16235024e5SAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
17235024e5SAlexander Kapshuk	printf("GNU C\t\t\t%s\n",
18235024e5SAlexander Kapshuk	substr($0,RSTART,RLENGTH))
19235024e5SAlexander Kapshuk}'
201da177e4SLinus Torvalds
211d60b873SAlexander Kapshukmake --version 2>&1 |
221d60b873SAlexander Kapshukawk '/GNU Make/{
231d60b873SAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
241d60b873SAlexander Kapshuk	printf("GNU Make\t\t%s\n",
251d60b873SAlexander Kapshuk	substr($0,RSTART,RLENGTH))
261d60b873SAlexander Kapshuk}'
271da177e4SLinus Torvalds
283e2f5cfbSAlexander Kapshukld -v 2>&1 |
293e2f5cfbSAlexander Kapshukawk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
303e2f5cfbSAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
313e2f5cfbSAlexander Kapshuk	printf("Binutils\t\t%s\n",
323e2f5cfbSAlexander Kapshuk	substr($0,RSTART,RLENGTH))
333e2f5cfbSAlexander Kapshuk}'
341da177e4SLinus Torvalds
3512b2732cSAlexander Kapshukmount --version 2>&1 |
3612b2732cSAlexander Kapshukawk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
3712b2732cSAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
3812b2732cSAlexander Kapshuk	$0 = substr($0,RSTART,RLENGTH)
3912b2732cSAlexander Kapshuk	printf("Util-linux\t\t%s\nMount\t\t\t%s\n",$0,$0)
4012b2732cSAlexander Kapshuk}'
411da177e4SLinus Torvalds
425bcb2f59SAlexander Kapshukdepmod -V  2>&1 |
435bcb2f59SAlexander Kapshukawk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
445bcb2f59SAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
455bcb2f59SAlexander Kapshuk	printf("Module-init-tools\t%s\n",
465bcb2f59SAlexander Kapshuk	substr($0,RSTART,RLENGTH))
475bcb2f59SAlexander Kapshuk}'
481da177e4SLinus Torvalds
49a8782227SAlexander Kapshuktune2fs 2>&1 |
50a8782227SAlexander Kapshukawk '/^tune2fs/{
51a8782227SAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
52a8782227SAlexander Kapshuk	printf("E2fsprogs\t\t%s\n",
53a8782227SAlexander Kapshuk	substr($0,RSTART,RLENGTH))
54a8782227SAlexander Kapshuk}'
551da177e4SLinus Torvalds
560fc8de56SAlexander Kapshukfsck.jfs -V 2>&1 |
570fc8de56SAlexander Kapshukawk '/version/{
580fc8de56SAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
590fc8de56SAlexander Kapshuk	printf("Jfsutils\t\t%s\n",
600fc8de56SAlexander Kapshuk	substr($0,RSTART,RLENGTH))
610fc8de56SAlexander Kapshuk}'
621da177e4SLinus Torvalds
6363e781adSAlexander Kapshukreiserfsck -V 2>&1 |
6463e781adSAlexander Kapshukawk '/^reiserfsck/{
6563e781adSAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
6663e781adSAlexander Kapshuk	printf("Reiserfsprogs\t\t%s\n",
6763e781adSAlexander Kapshuk	substr($0,RSTART,RLENGTH))
6863e781adSAlexander Kapshuk}'
691da177e4SLinus Torvalds
70ea88df9bSAlexey Dobriyanfsck.reiser4 -V 2>&1 | grep ^fsck.reiser4 | awk \
711da177e4SLinus Torvalds'NR==1{print "reiser4progs          ", $2}'
721da177e4SLinus Torvalds
7344422f3cSAlexander Kapshukxfs_db -V 2>&1 |
7444422f3cSAlexander Kapshukawk '/version/{
7544422f3cSAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
7644422f3cSAlexander Kapshuk	printf("Xfsprogs\t\t%s\n",
7744422f3cSAlexander Kapshuk	substr($0,RSTART,RLENGTH))
7844422f3cSAlexander Kapshuk}'
791da177e4SLinus Torvalds
80f437d1edSAlexander Kapshukpccardctl -V 2>&1 |
81f437d1edSAlexander Kapshukawk '/pcmciautils/{
82f437d1edSAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
83f437d1edSAlexander Kapshuk	printf("Pcmciautils\t\t%s\n",
84f437d1edSAlexander Kapshuk	substr($0,RSTART,RLENGTH))
85f437d1edSAlexander Kapshuk}'
86319e799aSValdis Kletnieks
871da177e4SLinus Torvaldscardmgr -V 2>&1| grep version | awk \
881da177e4SLinus Torvalds'NR==1{print "pcmcia-cs             ", $3}'
891da177e4SLinus Torvalds
908fb09598SAlexander Kapshukquota -V 2>&1 |
918fb09598SAlexander Kapshukawk '/version/{
928fb09598SAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
938fb09598SAlexander Kapshuk	printf("Quota-tools\t\t%s\n",
948fb09598SAlexander Kapshuk	substr($0,RSTART,RLENGTH))
958fb09598SAlexander Kapshuk}'
961da177e4SLinus Torvalds
97b903fa98SAlexander Kapshukpppd --version 2>&1 |
98b903fa98SAlexander Kapshukawk '/version/{
99b903fa98SAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
100b903fa98SAlexander Kapshuk	printf("PPP\t\t\t%s\n",
101b903fa98SAlexander Kapshuk	substr($0,RSTART,RLENGTH))
102b903fa98SAlexander Kapshuk}'
1031da177e4SLinus Torvalds
1041da177e4SLinus Torvaldsisdnctrl 2>&1 | grep version | awk \
1051da177e4SLinus Torvalds'NR==1{print "isdn4k-utils          ", $NF}'
1061da177e4SLinus Torvalds
1071da177e4SLinus Torvaldsshowmount --version 2>&1 | grep nfs-utils | awk \
1081da177e4SLinus Torvalds'NR==1{print "nfs-utils             ", $NF}'
1091da177e4SLinus Torvalds
110cbb57d10SAlexander Kapshuktest -r /proc/self/maps &&
111cbb57d10SAlexander Kapshuksed '
112cbb57d10SAlexander Kapshuk	/.*libc-\(.*\)\.so$/!d
113cbb57d10SAlexander Kapshuk	s//Linux C Library\t\t\1/
114cbb57d10SAlexander Kapshuk	q
115cbb57d10SAlexander Kapshuk' /proc/self/maps
1161da177e4SLinus Torvalds
1171e5f739cSAlexander Kapshukldd --version 2>&1 |
1181e5f739cSAlexander Kapshukawk '/^ldd/{
1191e5f739cSAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
1201e5f739cSAlexander Kapshuk	printf("Dynamic linker (ldd)\t%s\n",
1211e5f739cSAlexander Kapshuk	substr($0,RSTART,RLENGTH))
1221e5f739cSAlexander Kapshuk}'
1231da177e4SLinus Torvalds
12453494ba9SAlexander Kapshuklibcpp=`ldconfig -p 2>/dev/null |
12553494ba9SAlexander Kapshuk	awk '/(libg|stdc)[+]+\.so/ {
12653494ba9SAlexander Kapshuk	print $NF
12753494ba9SAlexander Kapshuk	exit
12853494ba9SAlexander Kapshuk	}
12953494ba9SAlexander Kapshuk'`
13053494ba9SAlexander Kapshuktest -r "$libcpp" &&
13153494ba9SAlexander Kapshukls -l $libcpp |
13253494ba9SAlexander Kapshuksed '
13353494ba9SAlexander Kapshuk	s!.*so\.!!
13453494ba9SAlexander Kapshuk	s!^!Linux C++ Library\t!
13553494ba9SAlexander Kapshuk'
136e7230872SAlexander Kapshukps --version 2>&1 |
137e7230872SAlexander Kapshukawk '/version/{
138e7230872SAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
139e7230872SAlexander Kapshuk	printf("Procps\t\t\t%s\n",
140e7230872SAlexander Kapshuk	substr($0,RSTART,RLENGTH))
141e7230872SAlexander Kapshuk}'
1421da177e4SLinus Torvalds
143be6bb51aSAlexander Kapshukifconfig --version 2>&1 |
144be6bb51aSAlexander Kapshukawk '/tools/{
145be6bb51aSAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
146be6bb51aSAlexander Kapshuk	printf("Net-tools\t\t%s\n",
147be6bb51aSAlexander Kapshuk	substr($0,RSTART,RLENGTH))
148be6bb51aSAlexander Kapshuk}'
1491da177e4SLinus Torvalds
1507a343234SAlexander Kapshukloadkeys -V 2>&1 |
1517a343234SAlexander Kapshukawk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
1527a343234SAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
1537a343234SAlexander Kapshuk	$0 = substr($0,RSTART,RLENGTH)
1547a343234SAlexander Kapshuk	printf("Kbd\t\t\t%s\nConsole-tools\t\t%s\n",$0,$0)
1557a343234SAlexander Kapshuk}'
1561da177e4SLinus Torvalds
157319e799aSValdis Kletnieksoprofiled --version 2>&1 | awk \
158319e799aSValdis Kletnieks'(NR==1 && ($2 == "oprofile")) {print "oprofile              ", $3}'
159319e799aSValdis Kletnieks
16029dfecffSAlexander Kapshukexpr --v 2>&1 |
16129dfecffSAlexander Kapshukawk '/^expr/{
16229dfecffSAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
16329dfecffSAlexander Kapshuk	printf("Sh-utils\t\t%s\n",
16429dfecffSAlexander Kapshuk	substr($0,RSTART,RLENGTH))
16529dfecffSAlexander Kapshuk}'
1661da177e4SLinus Torvalds
1671245b7ecSAlexander Kapshukudevadm --version 2>&1 |
1681245b7ecSAlexander Kapshukawk '/[0-9]+([.]?[0-9]+)+/ && !/not found$/{
1691245b7ecSAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
1701245b7ecSAlexander Kapshuk	printf("Udev\t\t\t%s\n",
1711245b7ecSAlexander Kapshuk	substr($0,RSTART,RLENGTH))
1721245b7ecSAlexander Kapshuk}'
1731da177e4SLinus Torvalds
174031c155aSAlexander Kapshukiwconfig --version 2>&1 |
175031c155aSAlexander Kapshukawk '/version/{
176031c155aSAlexander Kapshuk	match($0, /[0-9]+([.]?[0-9]+)+/)
177031c155aSAlexander Kapshuk	printf("Wireless-tools\t\t%s\n",
178031c155aSAlexander Kapshuk	substr($0,RSTART,RLENGTH))
179031c155aSAlexander Kapshuk}'
180319e799aSValdis Kletnieks
1811920c298SAlexander Kapshuktest -e /proc/modules &&
1821920c298SAlexander Kapshuksort /proc/modules |
1831920c298SAlexander Kapshuksed '
1841920c298SAlexander Kapshuk	s/ .*//
1851920c298SAlexander Kapshuk	H
1861920c298SAlexander Kapshuk${
1871920c298SAlexander Kapshuk	g
1881920c298SAlexander Kapshuk	s/^\n/Modules Loaded\t\t/
1891920c298SAlexander Kapshuk	y/\n/ /
1901920c298SAlexander Kapshuk	q
1911920c298SAlexander Kapshuk}
1921920c298SAlexander Kapshuk	d
1931920c298SAlexander Kapshuk'
194