* [PATCH] ver_linux: uniform output across various linux distros
@ 2015-09-28 19:42 Alexander Kapshuk
0 siblings, 0 replies; 6+ messages in thread
From: Alexander Kapshuk @ 2015-09-28 19:42 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg KH
On Mon, Sep 28, 2015 at 5:09 PM, Greg KH <gregkh@linuxfoundation.org> wrote:
> On Mon, Sep 28, 2015 at 07:50:37AM +0300, Alexander Kapshuk wrote:
>> Hello,
>
> Hi!
>
> First off, your Subject: is a bit odd, you might want to fix up your
> email client :)
>
>>
>> Having run 'scripts/ver_linux' on my Gentoo system, as well as having
>> looked through some recent bug reports on the kernel bugzilla website
>> showing the output of the script in question, I have observed that
>> the output is not accurate across various distros. While the current
>> implementation of the script expects the version info to be found in
>> particular fields, some of the utilities invoked by the script, output
>> their version information in varying formats, which results in the
>> script displaying information other than the version number.
>>
>> The proposed implementation relies mostly on sed to detect the version
>> numbers more accurately. Running the patched version of the script on
>> the distros below resulted in accurate and uniform output.
>>
>> Gentoo Linux
>> Debian 6.0.10
>> Oracle Linux Server release 7.1
>> Arch Linux
>>
>> The items left unchanged are those I did not have access to. I would
>> be willing to work on those too, if supplied the output of the affected
>> commands whose format differs based on the distro.
>
> <snip>
>
> Your patch is a bit complex, you are changing the formatting, and at the
> same time, also changing the code. Please do this in multiple patches,
> one to fix any issues you see, and the second to then clean up the
> formatting, making it easier to actually see what the difference is
> here.
>
> Also, take a look at Documentation/SubmittingPatches for the proper
> format of a kernel patch to ensure we are able to accept it (hint, your
> patch is missing the signed-off-by line in the body of the changelog
> area).
>
> thanks,
>
> greg k-h
Thanks very much for the tips you've given.
I'll go and read through 'Documentation/SubmittingPatches' again, as I
seem not to have clearly understood the things you've pointed out.
I'll get back to the list at a later time, hopefully, with a patch
that meets the requirements.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] ver_linux: uniform output across various linux distros
@ 2015-09-29 15:36 Alexander Kapshuk
2015-09-29 16:43 ` Greg KH
0 siblings, 1 reply; 6+ messages in thread
From: Alexander Kapshuk @ 2015-09-29 15:36 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg KH, Randy Dunlap
On Mon, Sep 28, 2015 at 10:42 PM, Alexander Kapshuk
<alexander.kapshuk@gmail.com> wrote:
> On Mon, Sep 28, 2015 at 5:09 PM, Greg KH <gregkh@linuxfoundation.org> wrote:
>> On Mon, Sep 28, 2015 at 07:50:37AM +0300, Alexander Kapshuk wrote:
>>> Hello,
>>
>> Hi!
>>
>> First off, your Subject: is a bit odd, you might want to fix up your
>> email client :)
>>
>>>
>>> Having run 'scripts/ver_linux' on my Gentoo system, as well as having
>>> looked through some recent bug reports on the kernel bugzilla website
>>> showing the output of the script in question, I have observed that
>>> the output is not accurate across various distros. While the current
>>> implementation of the script expects the version info to be found in
>>> particular fields, some of the utilities invoked by the script, output
>>> their version information in varying formats, which results in the
>>> script displaying information other than the version number.
>>>
>>> The proposed implementation relies mostly on sed to detect the version
>>> numbers more accurately. Running the patched version of the script on
>>> the distros below resulted in accurate and uniform output.
>>>
>>> Gentoo Linux
>>> Debian 6.0.10
>>> Oracle Linux Server release 7.1
>>> Arch Linux
>>>
>>> The items left unchanged are those I did not have access to. I would
>>> be willing to work on those too, if supplied the output of the affected
>>> commands whose format differs based on the distro.
>>
>> <snip>
>>
>> Your patch is a bit complex, you are changing the formatting, and at the
>> same time, also changing the code. Please do this in multiple patches,
>> one to fix any issues you see, and the second to then clean up the
>> formatting, making it easier to actually see what the difference is
>> here.
>>
>> Also, take a look at Documentation/SubmittingPatches for the proper
>> format of a kernel patch to ensure we are able to accept it (hint, your
>> patch is missing the signed-off-by line in the body of the changelog
>> area).
>>
>> thanks,
>>
>> greg k-h
>
> Thanks very much for the tips you've given.
>
> I'll go and read through 'Documentation/SubmittingPatches' again, as I
> seem not to have clearly understood the things you've pointed out.
> I'll get back to the list at a later time, hopefully, with a patch
> that meets the requirements.
I've reread 'Documentation/SubmittingPatches', and opted for method 1
to create the patch.
When you mentioned about the patch changing the formatting, were you
referring to the formatting of the actual script, or the output the
script generated? If it's the former, I'm not sure I'm clear on how to
keep separate the changes made to the code base from the changes in
the formatting of the new code base introduced by these changes. If
it's the latter, the overall output generated by the script is mostly
identical to that generated by the original implementation.
If the patch below is still off the mark, I apologise for that, and
would appreciate being pointed out what else needs changing, when you
have the time. I understand you having more pressing matters to attend
to.
Signed-off-by: Alexander Kapshuk <alexander.kapshuk@gmail.com>
---
--- ver_linux.orig 2015-08-30 21:34:09.000000000 +0300
+++ ver_linux 2015-09-29 17:47:35.692348337 +0300
@@ -4,54 +4,112 @@
# /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may
# differ on your system.
#
+
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 ' '
+echo
uname -a
-echo ' '
-
-gcc -dumpversion 2>&1| awk \
-'NR==1{print "Gnu C ", $1}'
-
-make --version 2>&1 | awk -F, '{print $1}' | awk \
- '/GNU Make/{print "Gnu make ",$NF}'
-
-echo "binutils $(ld -v | egrep -o '[0-9]+\.[0-9\.]+')"
-
-echo -n "util-linux "
-fdformat --version | awk '{print $NF}' | sed -e s/^util-linux-// -e s/\)$//
+echo
-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}'
+gcc -dumpversion 2>&1 |
+sed '
+ /^[0-9\.]*$/!d
+ s/^/GNU C\t\t\t/
+'
+
+make --version 2>&1 |
+sed '
+ /^\(GNU Make\)[ \t]/!d
+ s//\1\t\t/
+'
+
+ld -v 2>&1 |
+sed '
+ /[0-9]$/!d
+ s/-.*//
+ s/.*[ \t]//
+ s/^/binutils\t\t/
+'
+
+mount --version 2>&1 |
+sed '
+ /^mount/!d
+ s/.*util-linux//
+ s/lib.*//
+ s/[^0-9\.]//g
+ s/^/util-linux\t\t/
+ h
+ s/util-linux/mount\t/
+ H
+ g
+'
+
+/sbin/depmod -V 2>&1 |
+sed '
+ /[0-9]$/!d
+ s/[^0-9\.]//g
+ s/^/module-init-tools\t/
+'
+
+/sbin/tune2fs 2>&1 |
+sed '
+ /^tune2fs/!d
+ s/-.*//
+ s/[^0-9\.]*//
+ s/.*[ \t]\(.*\)[ \t].*/e2fsprogs\t\t\1/
+'
+
+fsck.jfs -V 2>&1 |
+sed '
+ /version/!d
+ s/.*version[ \t]//
+ s/[ \t].*//
+ s/[^0-9]$//
+ s/^/jfsutils\t/
+'
+
+reiserfsck -V 2>&1 |
+sed '
+ /^reiserfsck/!d
+ s/[^0-9\.]//g
+ /^$/d
+ s/^/reiserfsprogs\t/
+'
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}'
-
-pccardctl -V 2>&1| grep pcmciautils | awk '{print "pcmciautils
", $2}'
+xfs_db -V 2>&1 |
+sed '
+ /version/!d
+ s/[^0-9\.]//g
+ s/^/xfsprogs\t\t\t/
+'
+
+pccardctl -V 2>&1 |
+sed '
+ /^\(pcmciautils\)[ \t]/!d
+ s//\1\t\t/
+'
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}'
+quota -V 2>&1 |
+sed '
+ /version/!d
+ s/[^0-9\.]//g
+ s/\.$//
+ s/^/quota-tools\t\t/
+'
+
+pppd --version 2>&1 |
+sed '
+ /version/!d
+ s/[^0-9\.]//g
+ s/^/PPP\t\t\t\t/
+'
isdnctrl 2>&1 | grep version | awk \
'NR==1{print "isdn4k-utils ", $NF}'
@@ -59,40 +117,97 @@
showmount --version 2>&1 | grep nfs-utils | awk \
'NR==1{print "nfs-utils ", $NF}'
-echo -n "Linux C Library "
-sed -n -e '/^.*\/libc-\([^/]*\)\.so$/{s//\1/;p;q}' < /proc/self/maps
-
-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/libg++.so /usr/lib/libstdc++.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}'
+test -r /proc/self/maps &&
+sed '
+ /.*libc-\(.*\)\.so$/!d
+ s//Linux C Library\t\t\1/
+ q
+' /proc/self/maps
+
+lddsed='
+ /^ldd/!d
+ s/.*[ \t]\([0-9\.]*$\)/\1/
+ s/^/Dynamic linker (ldd)\t/
+'
+if ldd -v >/dev/null 2>&1
+then
+ ldd -v 2>&1 | sed "$lddsed"
+else
+ ldd --version 2>&1 | sed "$lddsed"
+fi
-# Kbd needs 'loadkeys -h',
-loadkeys -h 2>&1 | awk \
-'(NR==1 && ($3 !~ /option/)) {print "Kbd ", $3}'
+libcpp=`/sbin/ldconfig -p |
+ awk '/(libg|stdc)[+]+\.so/ {
+ print $NF
+ exit
+ }
+'`
+ls -l $libcpp |
+sed '
+ s!.*so\.!!
+ s!^!Linux C++ Library\t!
+'
+
+ps --version 2>&1 |
+sed '
+ /version/!d
+ s/[^0-9.]//g
+ s/^/Procps\t\t\t/
+'
+
+ifconfig=`whereis ifconfig | awk '{print $2}'`
+if test -n "$ifconfig"
+then
+ $ifconfig --version 2>&1 |
+ sed '
+ /net-tools/!d
+ s/\([0-9]\)-.*/\1/
+ s/[ \t]/\t\t/
+ s/_.*//
+ '
+else
+ :
+fi
-# while console-tools needs 'loadkeys -V'.
-loadkeys -V 2>&1 | awk \
-'(NR==1 && ($2 ~ /console-tools/)) {print "Console-tools ", $3}'
+loadkeys -V 2>&1 |
+sed '
+ /^loadkeys/!d
+ s/.*[ \t]\([0-9\.]*$\)/\1/
+ s/^/Kbd\t\t\t/
+ h
+ s/Kbd\t/Console-tools/
+ H
+ g
+'
oprofiled --version 2>&1 | awk \
'(NR==1 && ($2 == "oprofile")) {print "oprofile ", $3}'
-expr --v 2>&1 | awk 'NR==1{print "Sh-utils ", $NF}'
-
+expr --v 2>&1 |
+sed '
+ /^expr/!d
+ s/[^0-9.]//g
+ s/^/Sh-utils\t\t/
+'
udevinfo -V 2>&1 | grep version | awk '{print "udev ", $3}'
-iwconfig --version 2>&1 | awk \
-'(NR==1 && ($3 == "version")) {print "wireless-tools ",$4}'
-
-if [ -e /proc/modules ]; then
- X=`cat /proc/modules | sed -e "s/ .*$//"`
- echo "Modules Loaded "$X
-fi
+iwconfig --version 2>&1 |
+sed '
+ /version/!d
+ s/[^0-9\.]//g
+ s/^/wireless-tools\t\t/
+'
+
+test -e /proc/modules &&
+sort /proc/modules |
+sed '
+ s/ .*//
+ H
+${
+ g
+ s/^\n/Modules Loaded\t\t/
+ y/\n/ /
+ q
+}
+ d
+'
---
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ver_linux: uniform output across various linux distros
2015-09-29 15:36 Alexander Kapshuk
@ 2015-09-29 16:43 ` Greg KH
0 siblings, 0 replies; 6+ messages in thread
From: Greg KH @ 2015-09-29 16:43 UTC (permalink / raw)
To: Alexander Kapshuk; +Cc: linux-kernel, Randy Dunlap
On Tue, Sep 29, 2015 at 06:36:12PM +0300, Alexander Kapshuk wrote:
> I've reread 'Documentation/SubmittingPatches', and opted for method 1
> to create the patch.
>
> When you mentioned about the patch changing the formatting, were you
> referring to the formatting of the actual script, or the output the
> script generated? If it's the former, I'm not sure I'm clear on how to
> keep separate the changes made to the code base from the changes in
> the formatting of the new code base introduced by these changes. If
> it's the latter, the overall output generated by the script is mostly
> identical to that generated by the original implementation.
>
> If the patch below is still off the mark, I apologise for that, and
> would appreciate being pointed out what else needs changing, when you
> have the time. I understand you having more pressing matters to attend
> to.
>
> Signed-off-by: Alexander Kapshuk <alexander.kapshuk@gmail.com>
This is the "oddest" changelog comments I've ever seen for a patch, it
doesn't describe what it is doing at all :)
Please fix up, and resend the whole thing correctly, so we can review
that.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] ver_linux: uniform output across various linux distros
@ 2015-09-29 18:08 Alexander Kapshuk
2015-09-30 7:33 ` Greg KH
0 siblings, 1 reply; 6+ messages in thread
From: Alexander Kapshuk @ 2015-09-29 18:08 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg KH, Randy Dunlap
On Tue, Sep 29, 2015 at 7:43 PM, Greg KH <gregkh@linuxfoundation.org> wrote:
> On Tue, Sep 29, 2015 at 06:36:12PM +0300, Alexander Kapshuk wrote:
>> I've reread 'Documentation/SubmittingPatches', and opted for method 1
>> to create the patch.
>>
>> When you mentioned about the patch changing the formatting, were you
>> referring to the formatting of the actual script, or the output the
>> script generated? If it's the former, I'm not sure I'm clear on how to
>> keep separate the changes made to the code base from the changes in
>> the formatting of the new code base introduced by these changes. If
>> it's the latter, the overall output generated by the script is mostly
>> identical to that generated by the original implementation.
>>
>> If the patch below is still off the mark, I apologise for that, and
>> would appreciate being pointed out what else needs changing, when you
>> have the time. I understand you having more pressing matters to attend
>> to.
>>
>> Signed-off-by: Alexander Kapshuk <alexander.kapshuk@gmail.com>
>
> This is the "oddest" changelog comments I've ever seen for a patch, it
> doesn't describe what it is doing at all :)
>
> Please fix up, and resend the whole thing correctly, so we can review
> that.
>
> thanks,
>
> greg k-h
O, boy. Will I ever get this right :-(
Sorry for being such a nuisance.
Here we go...
Having run 'scripts/ver_linux' on my Gentoo system, as well as having
looked through some recent bug reports on the kernel bugzilla website
showing the output of the script in question, I have observed that
the output is not accurate across various distros. While the current
implementation of the script expects version numbers to be found
in particular fields, some of the utilities invoked by the script,
output their version information in varying formats, which results in
the script displaying information other than the version number.
The proposed implementation relies mostly on sed to detect the version
numbers more accurately in a more general way.
Running the patched version of the script on the distros below resulted
in accurate and uniform output.
Gentoo Linux
Debian 6.0.10
Oracle Linux Server release 7.1
Arch Linux
openSuSE 13.2
The items left unchanged are those I did not have access to. I would
be willing to work on those too, if supplied the output of the affected
commands whose format differs based on the distro.
-------------------------------------
A few comments are in order.
/usr/src/linux/scripts/ver_linux.orig:22,26
The current implementation outputs the version of 'util-linux' by
calling 'fdformat', which had not been found installed on most of the
test systems available to me. As 'mount' is a part of the 'util-linux'
package, the proposed implementation invokes 'mount' only, and unifies
the lines above into a single block.
/usr/src/linux/scripts/ver_linux.orig:77,83
'loadkeys -h' does not output the versionning number across all the
test systems available to me, while 'loadkeys -V' does. The proposed
implementation calls 'loadkeys -V' only once, and outputs the versioning
info acquired for both 'Kdb' and 'console-tools'.
/usr/src/linux/scripts/ver_linux.orig:90
None of the test systems I have access to seem to have 'udevinfo'
installed. Perhaps, 'udevinfo' is the former name for something that
could now be substituted by 'udevadm --version'.
-------------------------------------
Sample output of the current implementation on Gentoo Linux:
If some fields are empty or look unusual you may have an old version.
Compare to the current minimal requirements in Documentation/Changes.
Linux box0 4.2.1-vanilla #1 SMP Thu Sep 24 18:05:42 EEST 2015 i686
Intel(R) Pentium(R) Dual CPU T3400 @ 2.16GHz GenuineIntel GNU/Linux
Gnu C 4.8.5
Gnu make 4.1
binutils 2.25.1
1.1
2.25.1
util-linux /usr/src/linux/scripts/ver_linux.orig: line 23:
fdformat: command not found
mount debug
module-init-tools found
Linux C Library Dynamic linker (ldd) 2.20
Procps 3.3.9
Net-tools 1.60_p20130513023548
Kbd 1.15.5
Sh-utils 8.23
Modules Loaded xt_mark xt_LOG vgem v4l2_dv_timings ulpi udf
sil164 nf_nat_sip nf_nat_irc uvcvideo videobuf2_vmalloc
videobuf2_memops nf_nat_ipv4 videobuf2_core v4l2_common nf_nat_ftp
nf_nat nf_log_ipv6 nf_log_ipv4 nf_log_common lcd i2c_mux hp_wireless
gspca_main videodev cuse fuse crc_itu_t ch7006 ath5k coretemp
input_leds led_class ath
-------------------------------------
Sample output of the patched implementation on Gentoo Linux:
If some fields are empty or look unusual you may have an old version.
Compare to the current minimal requirements in Documentation/Changes.
Linux box1 4.0.5-gentoo #5 SMP Fri Sep 4 18:11:11 EEST 2015 i686
Intel(R) Core(TM)2 Duo CPU E4600 @ 2.40GHz GenuineIntel GNU/Linux
GNU C 4.8.5
GNU Make 4.1
binutils 2.25.1
util-linux 2.26.2
mount 2.26.2
module-init-tools 20
e2fsprogs 1.42.13
Linux C Library 2.20
Dynamic linker (ldd) 2.20
Linux C++ Library 6.0.19
Procps 3.3.9
net-tools 1.60
Kbd 1.15.5
Console-tools 1.15.5
Sh-utils 8.23
Modules Loaded ch7006 coretemp crc_itu_t fuse gspca_main
hwmon_vid i2c_mux it87 mii nf_log_common nf_log_ipv4 nf_log_ipv6
nf_nat nf_nat_ftp nf_nat_ipv4 nf_nat_irc nf_nat_sip r8169 sil164
snd_aloop udf uvcvideo v4l2_common v4l2_dv_timings videobuf2_core
videobuf2_memops videobuf2_vmalloc videodev xt_LOG xt_mark
-------------------------------------
The actual patch.
-------------------------------------
Signed-off-by: Alexander Kapshuk <alexander.kapshuk@gmail.com>
---
--- linux/scripts/ver_linux.orig 2015-04-13 01:12:50.000000000 +0300
+++ linux/scripts/ver_linux 2015-09-29 20:47:48.664509177 +0300
@@ -4,54 +4,112 @@
# /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may
# differ on your system.
#
+
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 ' '
+echo
uname -a
-echo ' '
-
-gcc -dumpversion 2>&1| awk \
-'NR==1{print "Gnu C ", $1}'
-
-make --version 2>&1 | awk -F, '{print $1}' | awk \
- '/GNU Make/{print "Gnu make ",$NF}'
-
-echo "binutils $(ld -v | egrep -o '[0-9]+\.[0-9\.]+')"
-
-echo -n "util-linux "
-fdformat --version | awk '{print $NF}' | sed -e s/^util-linux-// -e s/\)$//
+echo
-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}'
+gcc -dumpversion 2>&1 |
+sed '
+ /^[0-9\.]*$/!d
+ s/^/GNU C\t\t\t/
+'
+
+make --version 2>&1 |
+sed '
+ /^\(GNU Make\)[ \t]/!d
+ s//\1\t\t/
+'
+
+ld -v 2>&1 |
+sed '
+ /[0-9]$/!d
+ s/-.*//
+ s/.*[ \t]//
+ s/^/binutils\t\t/
+'
+
+mount --version 2>&1 |
+sed '
+ /^mount/!d
+ s/.*util-linux//
+ s/lib.*//
+ s/[^0-9\.]//g
+ s/^/util-linux\t\t/
+ h
+ s/util-linux/mount\t/
+ H
+ g
+'
+
+/sbin/depmod -V 2>&1 |
+sed '
+ /[0-9]$/!d
+ s/[^0-9\.]//g
+ s/^/module-init-tools\t/
+'
+
+/sbin/tune2fs 2>&1 |
+sed '
+ /^tune2fs/!d
+ s/-.*//
+ s/[^0-9\.]*//
+ s/.*[ \t]\(.*\)[ \t].*/e2fsprogs\t\t\1/
+'
+
+fsck.jfs -V 2>&1 |
+sed '
+ /version/!d
+ s/.*version[ \t]//
+ s/[ \t].*//
+ s/[^0-9]$//
+ s/^/jfsutils\t/
+'
+
+reiserfsck -V 2>&1 |
+sed '
+ /^reiserfsck/!d
+ s/[^0-9\.]//g
+ /^$/d
+ s/^/reiserfsprogs\t/
+'
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}'
-
-pccardctl -V 2>&1| grep pcmciautils | awk '{print "pcmciautils
", $2}'
+xfs_db -V 2>&1 |
+sed '
+ /version/!d
+ s/[^0-9\.]//g
+ s/^/xfsprogs\t\t\t/
+'
+
+pccardctl -V 2>&1 |
+sed '
+ /^\(pcmciautils\)[ \t]/!d
+ s//\1\t\t/
+'
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}'
+quota -V 2>&1 |
+sed '
+ /version/!d
+ s/[^0-9\.]//g
+ s/\.$//
+ s/^/quota-tools\t\t/
+'
+
+pppd --version 2>&1 |
+sed '
+ /version/!d
+ s/[^0-9\.]//g
+ s/^/PPP\t\t\t\t/
+'
isdnctrl 2>&1 | grep version | awk \
'NR==1{print "isdn4k-utils ", $NF}'
@@ -59,40 +117,97 @@
showmount --version 2>&1 | grep nfs-utils | awk \
'NR==1{print "nfs-utils ", $NF}'
-echo -n "Linux C Library "
-sed -n -e '/^.*\/libc-\([^/]*\)\.so$/{s//\1/;p;q}' < /proc/self/maps
-
-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/libg++.so /usr/lib/libstdc++.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}'
+test -r /proc/self/maps &&
+sed '
+ /.*libc-\(.*\)\.so$/!d
+ s//Linux C Library\t\t\1/
+ q
+' /proc/self/maps
+
+lddsed='
+ /^ldd/!d
+ s/.*[ \t]\([0-9\.]*$\)/\1/
+ s/^/Dynamic linker (ldd)\t/
+'
+if ldd -v >/dev/null 2>&1
+then
+ ldd -v 2>&1 | sed "$lddsed"
+else
+ ldd --version 2>&1 | sed "$lddsed"
+fi
-# Kbd needs 'loadkeys -h',
-loadkeys -h 2>&1 | awk \
-'(NR==1 && ($3 !~ /option/)) {print "Kbd ", $3}'
+libcpp=`/sbin/ldconfig -p |
+ awk '/(libg|stdc)[+]+\.so/ {
+ print $NF
+ exit
+ }
+'`
+ls -l $libcpp |
+sed '
+ s!.*so\.!!
+ s!^!Linux C++ Library\t!
+'
+
+ps --version 2>&1 |
+sed '
+ /version/!d
+ s/[^0-9.]//g
+ s/^/Procps\t\t\t/
+'
+
+ifconfig=`whereis ifconfig | awk '{print $2}'`
+if test -n "$ifconfig"
+then
+ $ifconfig --version 2>&1 |
+ sed '
+ /net-tools/!d
+ s/\([0-9]\)-.*/\1/
+ s/[ \t]/\t\t/
+ s/_.*//
+ '
+else
+ :
+fi
-# while console-tools needs 'loadkeys -V'.
-loadkeys -V 2>&1 | awk \
-'(NR==1 && ($2 ~ /console-tools/)) {print "Console-tools ", $3}'
+loadkeys -V 2>&1 |
+sed '
+ /^loadkeys/!d
+ s/.*[ \t]\([0-9\.]*$\)/\1/
+ s/^/Kbd\t\t\t/
+ h
+ s/Kbd\t/Console-tools/
+ H
+ g
+'
oprofiled --version 2>&1 | awk \
'(NR==1 && ($2 == "oprofile")) {print "oprofile ", $3}'
-expr --v 2>&1 | awk 'NR==1{print "Sh-utils ", $NF}'
-
+expr --v 2>&1 |
+sed '
+ /^expr/!d
+ s/[^0-9.]//g
+ s/^/Sh-utils\t\t/
+'
udevinfo -V 2>&1 | grep version | awk '{print "udev ", $3}'
-iwconfig --version 2>&1 | awk \
-'(NR==1 && ($3 == "version")) {print "wireless-tools ",$4}'
-
-if [ -e /proc/modules ]; then
- X=`cat /proc/modules | sed -e "s/ .*$//"`
- echo "Modules Loaded "$X
-fi
+iwconfig --version 2>&1 |
+sed '
+ /version/!d
+ s/[^0-9\.]//g
+ s/^/wireless-tools\t\t/
+'
+
+test -e /proc/modules &&
+sort /proc/modules |
+sed '
+ s/ .*//
+ H
+${
+ g
+ s/^\n/Modules Loaded\t\t/
+ y/\n/ /
+ q
+}
+ d
+'
--
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ver_linux: uniform output across various linux distros
2015-09-29 18:08 [PATCH] ver_linux: uniform output across various linux distros Alexander Kapshuk
@ 2015-09-30 7:33 ` Greg KH
2015-09-30 7:43 ` Alexander Kapshuk
0 siblings, 1 reply; 6+ messages in thread
From: Greg KH @ 2015-09-30 7:33 UTC (permalink / raw)
To: Alexander Kapshuk; +Cc: linux-kernel, Randy Dunlap
On Tue, Sep 29, 2015 at 09:08:20PM +0300, Alexander Kapshuk wrote:
> On Tue, Sep 29, 2015 at 7:43 PM, Greg KH <gregkh@linuxfoundation.org> wrote:
> > On Tue, Sep 29, 2015 at 06:36:12PM +0300, Alexander Kapshuk wrote:
> >> I've reread 'Documentation/SubmittingPatches', and opted for method 1
> >> to create the patch.
> >>
> >> When you mentioned about the patch changing the formatting, were you
> >> referring to the formatting of the actual script, or the output the
> >> script generated? If it's the former, I'm not sure I'm clear on how to
> >> keep separate the changes made to the code base from the changes in
> >> the formatting of the new code base introduced by these changes. If
> >> it's the latter, the overall output generated by the script is mostly
> >> identical to that generated by the original implementation.
> >>
> >> If the patch below is still off the mark, I apologise for that, and
> >> would appreciate being pointed out what else needs changing, when you
> >> have the time. I understand you having more pressing matters to attend
> >> to.
> >>
> >> Signed-off-by: Alexander Kapshuk <alexander.kapshuk@gmail.com>
> >
> > This is the "oddest" changelog comments I've ever seen for a patch, it
> > doesn't describe what it is doing at all :)
> >
> > Please fix up, and resend the whole thing correctly, so we can review
> > that.
> >
> > thanks,
> >
> > greg k-h
>
>
> O, boy. Will I ever get this right :-(
> Sorry for being such a nuisance.
> Here we go...
Heh, in the future, all of this above here needs to be removed, it
wouldn't look good in a changelog, right?
But anyway, comments below on your patch:
> Having run 'scripts/ver_linux' on my Gentoo system, as well as having
> looked through some recent bug reports on the kernel bugzilla website
> showing the output of the script in question, I have observed that
> the output is not accurate across various distros. While the current
> implementation of the script expects version numbers to be found
> in particular fields, some of the utilities invoked by the script,
> output their version information in varying formats, which results in
> the script displaying information other than the version number.
>
> The proposed implementation relies mostly on sed to detect the version
> numbers more accurately in a more general way.
>
> Running the patched version of the script on the distros below resulted
> in accurate and uniform output.
>
> Gentoo Linux
> Debian 6.0.10
> Oracle Linux Server release 7.1
> Arch Linux
> openSuSE 13.2
>
> The items left unchanged are those I did not have access to. I would
> be willing to work on those too, if supplied the output of the affected
> commands whose format differs based on the distro.
>
> -------------------------------------
> A few comments are in order.
>
> /usr/src/linux/scripts/ver_linux.orig:22,26
> The current implementation outputs the version of 'util-linux' by
> calling 'fdformat', which had not been found installed on most of the
> test systems available to me. As 'mount' is a part of the 'util-linux'
> package, the proposed implementation invokes 'mount' only, and unifies
> the lines above into a single block.
>
> /usr/src/linux/scripts/ver_linux.orig:77,83
> 'loadkeys -h' does not output the versionning number across all the
> test systems available to me, while 'loadkeys -V' does. The proposed
> implementation calls 'loadkeys -V' only once, and outputs the versioning
> info acquired for both 'Kdb' and 'console-tools'.
>
> /usr/src/linux/scripts/ver_linux.orig:90
> None of the test systems I have access to seem to have 'udevinfo'
> installed. Perhaps, 'udevinfo' is the former name for something that
> could now be substituted by 'udevadm --version'.
> -------------------------------------
> Sample output of the current implementation on Gentoo Linux:
>
> If some fields are empty or look unusual you may have an old version.
> Compare to the current minimal requirements in Documentation/Changes.
>
> Linux box0 4.2.1-vanilla #1 SMP Thu Sep 24 18:05:42 EEST 2015 i686
> Intel(R) Pentium(R) Dual CPU T3400 @ 2.16GHz GenuineIntel GNU/Linux
>
> Gnu C 4.8.5
> Gnu make 4.1
> binutils 2.25.1
> 1.1
> 2.25.1
> util-linux /usr/src/linux/scripts/ver_linux.orig: line 23:
> fdformat: command not found
> mount debug
> module-init-tools found
> Linux C Library Dynamic linker (ldd) 2.20
> Procps 3.3.9
> Net-tools 1.60_p20130513023548
> Kbd 1.15.5
> Sh-utils 8.23
> Modules Loaded xt_mark xt_LOG vgem v4l2_dv_timings ulpi udf
> sil164 nf_nat_sip nf_nat_irc uvcvideo videobuf2_vmalloc
> videobuf2_memops nf_nat_ipv4 videobuf2_core v4l2_common nf_nat_ftp
> nf_nat nf_log_ipv6 nf_log_ipv4 nf_log_common lcd i2c_mux hp_wireless
> gspca_main videodev cuse fuse crc_itu_t ch7006 ath5k coretemp
> input_leds led_class ath
> -------------------------------------
> Sample output of the patched implementation on Gentoo Linux:
>
> If some fields are empty or look unusual you may have an old version.
> Compare to the current minimal requirements in Documentation/Changes.
>
> Linux box1 4.0.5-gentoo #5 SMP Fri Sep 4 18:11:11 EEST 2015 i686
> Intel(R) Core(TM)2 Duo CPU E4600 @ 2.40GHz GenuineIntel GNU/Linux
>
> GNU C 4.8.5
> GNU Make 4.1
> binutils 2.25.1
> util-linux 2.26.2
> mount 2.26.2
> module-init-tools 20
> e2fsprogs 1.42.13
> Linux C Library 2.20
> Dynamic linker (ldd) 2.20
> Linux C++ Library 6.0.19
> Procps 3.3.9
> net-tools 1.60
> Kbd 1.15.5
> Console-tools 1.15.5
> Sh-utils 8.23
> Modules Loaded ch7006 coretemp crc_itu_t fuse gspca_main
> hwmon_vid i2c_mux it87 mii nf_log_common nf_log_ipv4 nf_log_ipv6
> nf_nat nf_nat_ftp nf_nat_ipv4 nf_nat_irc nf_nat_sip r8169 sil164
> snd_aloop udf uvcvideo v4l2_common v4l2_dv_timings videobuf2_core
> videobuf2_memops videobuf2_vmalloc videodev xt_LOG xt_mark
> -------------------------------------
> The actual patch.
> -------------------------------------
Why is this here?
> Signed-off-by: Alexander Kapshuk <alexander.kapshuk@gmail.com>
> ---
> --- linux/scripts/ver_linux.orig 2015-04-13 01:12:50.000000000 +0300
> +++ linux/scripts/ver_linux 2015-09-29 20:47:48.664509177 +0300
> @@ -4,54 +4,112 @@
> # /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may
> # differ on your system.
> #
> +
> 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 ' '
> +echo
>
> uname -a
> -echo ' '
You do a lot of different things in this patch, making it almost
impossible to review. Please break them all up into individual changes,
each patch only doing one thing (like changing "echo ' '", cleaning up
argument lists, etc.) and resend this as a patch series that we can
review and hopefully apply to the tree.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ver_linux: uniform output across various linux distros
2015-09-30 7:33 ` Greg KH
@ 2015-09-30 7:43 ` Alexander Kapshuk
0 siblings, 0 replies; 6+ messages in thread
From: Alexander Kapshuk @ 2015-09-30 7:43 UTC (permalink / raw)
To: Greg KH; +Cc: linux-kernel, Randy Dunlap
>> Signed-off-by: Alexander Kapshuk <alexander.kapshuk@gmail.com>
>> ---
>> --- linux/scripts/ver_linux.orig 2015-04-13 01:12:50.000000000 +0300
>> +++ linux/scripts/ver_linux 2015-09-29 20:47:48.664509177 +0300
>> @@ -4,54 +4,112 @@
>> # /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may
>> # differ on your system.
>> #
>> +
>> 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 ' '
>> +echo
>>
>> uname -a
>> -echo ' '
>
> You do a lot of different things in this patch, making it almost
> impossible to review. Please break them all up into individual changes,
> each patch only doing one thing (like changing "echo ' '", cleaning up
> argument lists, etc.) and resend this as a patch series that we can
> review and hopefully apply to the tree.
>
> thanks,
>
> greg k-h
I did think of breaking down the patch into multiple bits, which
would make it easier to see what changes are being introduced, as you
suggested
Thanks very much for being patient with me.
I'll generate multiple patches and send them in later on today.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-09-30 7:43 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-29 18:08 [PATCH] ver_linux: uniform output across various linux distros Alexander Kapshuk
2015-09-30 7:33 ` Greg KH
2015-09-30 7:43 ` Alexander Kapshuk
-- strict thread matches above, loose matches on Subject: below --
2015-09-29 15:36 Alexander Kapshuk
2015-09-29 16:43 ` Greg KH
2015-09-28 19:42 Alexander Kapshuk
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox