#!/bin/sh
# Before running this script please ensure that your PATH is
# typical as you use for compilation/istallation. I use
# /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may
# differ on your system.
#
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:$PATH
echo 'If some fields are empty or look unusual you may have an old version.'
echo 'Compare to the current minimal requirements in Documentation/Changes.'
echo ' '

uname -a
echo ' '

gcc --version 2>&1| head -n 1 | grep -v gcc | awk \
'NR==1{print "Gnu C                 ", $1}'

gcc --version 2>&1| grep gcc | awk \
'NR==1{print "Gnu C                 ", $3}'

make --version 2>&1 | awk -F, '{print $1}' | awk \
      '/GNU Make/{print "Gnu make              ",$NF}'

ld -v | awk -F\) '{print $1}' | awk \
'/BFD/{print "binutils              ",$NF} \
/^GNU/{print "binutils              ",$4}'

echo -n "util-linux             "
fdformat --version | awk '{print $NF}' | sed -e s/^util-linux-// -e s/\)$//

echo -n "mount                  "
mount --version | awk '{print $NF}' | sed -e s/^mount-// -e s/\)$//

depmod -V  2>&1 | awk 'NR==1 {print "module-init-tools     ",$NF}'

tune2fs 2>&1 | grep "^tune2fs" | sed 's/,//' |  awk \
'NR==1 {print "e2fsprogs             ", $2}'

fsck.jfs -V 2>&1 | grep version | sed 's/,//' |  awk \
'NR==1 {print "jfsutils              ", $3}'

reiserfsck -V 2>&1 | grep ^reiserfsck | awk \
'NR==1{print "reiserfsprogs         ", $2}'

fsck.reiser4 -V 2>&1 | grep ^fsck.reiser4 | awk \
'NR==1{print "reiser4progs          ", $2}'

xfs_db -V 2>&1 | grep version | awk \
'NR==1{print "xfsprogs              ", $3}'

cardmgr -V 2>&1| grep version | awk \
'NR==1{print "pcmcia-cs             ", $3}'

quota -V 2>&1 | grep version | awk \
'NR==1{print "quota-tools           ", $NF}'

pppd --version 2>&1| grep version | awk \
'NR==1{print "PPP                   ", $3}'

isdnctrl 2>&1 | grep version | awk \
'NR==1{print "isdn4k-utils          ", $NF}'

showmount --version 2>&1 | grep nfs-utils | awk \
'NR==1{print "nfs-utils             ", $NF}'

ls -l `ldd /bin/sh | awk '/libc/{print $3}'` | sed \
-e 's/\.so$//' | awk -F'[.-]'   '{print "Linux C Library        " \
$(NF-2)"."$(NF-1)"."$NF}'

ldd -v > /dev/null 2>&1 && ldd -v || ldd --version |head -n 1 | awk \
'NR==1{print "Dynamic linker (ldd)  ", $NF}'

ls -l /usr/lib/lib{g,stdc}++.so  2>/dev/null | awk -F. \
       '{print "Linux C++ Library      " $4"."$5"."$6}'

ps --version 2>&1 | grep version | awk \
'NR==1{print "Procps                ", $NF}'

ifconfig --version 2>&1 | grep tools | awk \
'NR==1{print "Net-tools             ", $NF}'

# Kbd needs 'loadkeys -h',
loadkeys -h 2>&1 | awk \
'(NR==1 && ($3 !~ /option/)) {print "Kbd                   ", $3}'

# while console-tools needs 'loadkeys -V'.
loadkeys -V 2>&1 | awk \
'(NR==1 && ($2 ~ /console-tools/)) {print "Console-tools         ", $3}'

expr --v 2>&1 | awk 'NR==1{print "Sh-utils              ", $NF}'

udevinfo -V 2>&1 | grep version | awk '{print "udev                  ", $3}'

if [ -e /proc/modules ]; then
    X=`cat /proc/modules | sed -e "s/ .*$//"`
    echo "Modules Loaded         "$X
fi
