+ add a -d <destdir> option, which allows the versions of programs
in a directory tree rooted at "<destdir>" to be reported on, rather
than the programs and libraries rooted under /. This is useful, for
example, for finding out the versions of utilities and libraries
after a build.sh run:
% sys_info
awk-20121220
bind-9.10.5pl2
bozohttpd-20170201
bzip2-1.0.6
calendar-20160601
dhcpcd-7.0.0-rc1
dtc-1.4.4
ftpd-20110904
g++-5.4.0
gcc-5.4.0
grep-2.5.1anb1
gzip-20170803
libc-12.208
...
% sys_info -d /data/8/build/dest/x86_64
awk-20121220
bind-9.10.5pl1
bozohttpd-20170201
bzip2-1.0.6
calendar-20160601
dhcpcd-7.0.0-rc1
ftpd-20110904
g++-5.4.0
gcc-5.4.0
grep-2.5.1anb1
gzip-20150113
libc-12.207
...
%
impossible to support component names containing embedded \n's (the
similar embedded space problem would have been trivial to fix.)
Deleting the sorting makes those issues moot, the args are no longer
processed, hence can be anything.
An alternative would be to sort the results - but that would separate
the -v output from the real output (-v stuff is not rationally sortable)
and also makes it much more difficult to get the error code for an
unknown component (like one containing an embedded \n !) as the pipe
to strt that would be used would cause the while loop to run in a sub-shell
(effectively.)
CVS's $ Date $ expansion to calculate the date, whilst being more
accurate, runs into issues with reproducible builds, and alternate
repository software. Simplicity wins here.
Add yacc to the list of utilities to report on
Add -L and -P flags to allow the library/cmd search paths to be set.
Add support for getting vers info from sh, dhcpcd, and userland (/etc/release).
Stop abusing "sh -x" to support -v - do it properly. Get rid of the duplicate
list of components used when there are no args, instead make better use of sh
capabilities to just process everything. Better use of what sh can do for us
other places too. Add a (more or less random) set of libraries to include
in output when no args are given.
OK agc (well, earlier version...)
+ get rid of -a argument, which was superfluous since no arguments
means provide information on everything known
+ add the shell function to check for the path of a program. Taken
from pkgsrc bootstrap script, modified for return values, and "not
found" action
+ use this shell function for tcsh and unbound, both of which may not
exist on systems
+ go back to using standard shell construct for parsing options now,
since there is only 1 option with no optargs
+ from a suggestion from Paul Goyette, run the provided arguments
through sort | uniq
+ add sys_info itself to the list of programs to report
script from othersrc to usr.bin/sys_info
The sys_info script is a small script which will show the version
information for installed utilities. It also works on the kernel, and
on most libraries.
Its use is as follow:
[19:41:13] agc@netbsd-002 ...external/bsd/sys_info [4568] > ./sys_info -a
awk-20121220
bind-9.10.3pl3
bzip2-1.0.6
calendar-20160601
ftpd-20110904
g++-4.8.5
gcc-4.8.5
grep-2.5.1anb1
gzip-20150113
bozohttpd-20151231
NetBSD-7.99.26
netpgp-3.99.17
netpgpverify-20160214
ntp-4.2.8pl5
openssl-1.0.1r
sqlite3-3.12.2
openssh-7.1
opensshd-7.1
tcsh-6.19.00
xz-5.2.1
[19:41:20] agc@netbsd-002 ...external/bsd/sys_info [4569] > ./sys_info ntp ssh netpgp
ntp-4.2.8pl5
openssh-7.1
netpgp-3.99.17
[19:41:31] agc@netbsd-002 ...external/bsd/sys_info [4570] > ./sys_info ntp ssh netbsd
ntp-4.2.8pl5
openssh-7.1
NetBSD-7.99.26
[19:41:38] agc@netbsd-002 ...external/bsd/sys_info [4571] >
The -a option can be given to the script to print out the information
on all known components.
The sys_info script also works on libraries, returning their
"versions" as given by the shared object version numbers.
[19:45:06] agc@netbsd-002 ...external/bsd/sys_info [4572] > ./sys_info libevent libXfont libc netbsd
libevent-4.0
libXfont-3.0
libc-12.200
NetBSD-7.99.26
[19:45:27] agc@netbsd-002 ...external/bsd/sys_info [4573] >
Alistair Crooks
Wed Jun 1 19:44:01 PDT 2016