Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system
Philippe Gerum wrote: Jan Kiszka wrote: Jim Cromie wrote: Niklaus Giger wrote: Am Freitag, 26. Mai 2006 15:52 schrieb Jan Kiszka: Niklaus Giger wrote:... If anybody has a working target with a Xenomai + BusyBox combination and would be willing to test drive my changes, I would appreciate a feedback enormously. I hope this isnt waiting on my 'approval'. I think its a great idea, and has been on my (way too stagnant) list for a while. Your work has at least urged me to install busybox on my xeno-box. ;-) My only concern is whether we've sufficiently distinguished the issues: 1 - ash vs bash Its not entirely clear to me which flavors of sh busybox has: ash / dash / not-bash I gather u worked with ash, and it seems most valuable sh features work there just fine ( shell-functions, even 'job-control' of a fashion) 2 - busybox 'executables' only I coded in a lot of 'full linux' gimme's, like zgrep, script, etc. Niklaus has repaired many of these. I think a more thorough cleanup is possible, esp if things like 'script' are jettisoned for a simpler shell-functions or helper scripts. This all implies a re-write, which is on my list... (esp the job-control testing and repair) Just stumbled over this again while cleaning up my mailbox. What's the status? Waiting for improvements, or waiting for /someone/ to type svn ci (and improve the topics above later)? It's queued for now, waiting for a combined ack to merge the current patch from JimC and Niklaus. AFAIC, Niklaus is in the lead atm. Im trying to get some GPIO stuff ready for -mm. ( I'll post separately on this ..) I ran his changes once, I dont even remember what it did. (which suggests that it didnt explode ;-) IMO, take it when Niklaus says its ready. I have some local changes here, but Ill work them into shape after Niks changes go in (maybe much later :-( We should probly confer on the longer-term issues too. - a rational option-pass-thru, or a means to avoid doing so. if we assume OPTS_${TOOLNAME} exists, we could grab it out of env, and pass it into the benchmark prog. - would require no prog mods, but gives us complete control - would play nicer than assuming -T secs has meaning for all progs. ___ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core
Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system
Jim Cromie wrote: Niklaus Giger wrote: Am Freitag, 26. Mai 2006 15:52 schrieb Jan Kiszka: Niklaus Giger wrote:... If anybody has a working target with a Xenomai + BusyBox combination and would be willing to test drive my changes, I would appreciate a feedback enormously. I hope this isnt waiting on my 'approval'. I think its a great idea, and has been on my (way too stagnant) list for a while. Your work has at least urged me to install busybox on my xeno-box. ;-) My only concern is whether we've sufficiently distinguished the issues: 1 - ash vs bash Its not entirely clear to me which flavors of sh busybox has: ash / dash / not-bash I gather u worked with ash, and it seems most valuable sh features work there just fine ( shell-functions, even 'job-control' of a fashion) 2 - busybox 'executables' only I coded in a lot of 'full linux' gimme's, like zgrep, script, etc. Niklaus has repaired many of these. I think a more thorough cleanup is possible, esp if things like 'script' are jettisoned for a simpler shell-functions or helper scripts. This all implies a re-write, which is on my list... (esp the job-control testing and repair) Just stumbled over this again while cleaning up my mailbox. What's the status? Waiting for improvements, or waiting for /someone/ to type svn ci (and improve the topics above later)? Jan signature.asc Description: OpenPGP digital signature ___ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core
Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system
Niklaus Giger wrote: Am Sonntag, 28. Mai 2006 12:45 schrieb Jan Kiszka: Niklaus Giger wrote: Am Samstag, 27. Mai 2006 18:42 schrieb Jan Kiszka: .. Added a ps | grep $_j to show whether a dd job is still running before killing it. Now, at least running under the busybox. the dd jobs get killed as they should. Therefore I added a killall dd for the case the dd_jobs variable is empty. But there is still no load during the tests, correct? Yes. But now it should. The dd_jobs got killed too early, as under the BusyBox the trap exit handler got called too early. I think there are some subtle differences between the trap of the BusyBox- and the Bash-shell. Now I store the pids in a file under /var/lock. Tested it under bash and busybox, works okay for me. Options like -4-W 'dd if=/dev/hda1 of=/dev/null' should also be handled correctly. Default workload behaves as expected now, but specifying something different here via -W let the script hang on the workload startup. Options -L -m -M not tested under the BusyBox PPC405 target, as there I do not have access to curl, script and mail. .. - special characters in line 152 of xeno-test: Sorry. Corrected. I think kate did not handle a paste from your e-mail message correctly .. - the output of xeno-test contains this error: .. /bin/xeno-test: /bin/xeno-test: 325: : not found May be the result of above error? Could not reproduce it here. Could try again the attached patch? Basically, it runs fine. But I have two further suggestions: o some kind of summary of the completed rt-tests on script termination. I know what to lock for in the logs, but will the newbie do so? o a switch to control the test periods. I'm playing with a patch to control the aperiodic timer resolution. When I tune it to 1 ms e.g., having an option to push the test tool periods at this level as well would be nice. Thanks a lot for your effort! Jan signature.asc Description: OpenPGP digital signature ___ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core
Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system
Niklaus Giger wrote: Am Samstag, 27. Mai 2006 18:42 schrieb Jan Kiszka: Niklaus Giger wrote: .. Still broken: .. Sorry for not catching this part, but my kernel config did not set CONFIG_IKCONFIG. Fixed now. Resolves to zcat | grep -E '...' /proc/config.gz or to cat /proc/config.gz. Both doesn't work. I would suggest this: local filter=| grep -E '$whatconf' [ $verbose = 1 ] filter= if [ -f /proc/config.gz ]; then # get the config loudly zcat /proc/config.gz $filter elif [ -f /lib/modules/`uname -r`/build/.config ]; then loudly $cmd /lib/modules/`uname -r`/build/.config And here we need loudly cat /lib/modules/`uname -r`/build/.config $filter fi Should be fixed with the attached patch There is another occurrence of zcat | grep which needs fixing. This one too. /bin/xeno-test: /bin/xeno-test: 264: getopts: not found .. Did so, and also awk need to be switched on. What about testing for those features when bb was detected? Anyway, the latency tests work now (in my qemu box). But I do not find the workload (dd?) in the process list: Added to procedure checkUtilities and checkHelpers (after having parsed the options). Added them unconditionally as there might be even *nix systems around which are lacking coreutilities like awk, cut, curl, mail, script. Added a ps | grep $_j to show whether a dd job is still running before killing it. Now, at least running under the busybox. the dd jobs get killed as they should. Therefore I added a killall dd for the case the dd_jobs variable is empty. But there is still no load during the tests, correct? You should be able to xeno-test under the BusyBox without any parameter, I added however often a -T 1 to make them run faster. Could you give this patch another try? Thanks for your patience, but the variability is very high as both the kernel and the busybox have a lot of config options. Yeah, I know. Therefore it takes someone looking at it from different perspectives. :) Basically works now, but I found two oddities: - special characters in line 152 of xeno-test: @@ -83,20 +141,19 @@ boxinfo() { # static info, show once +loudly `dirname $0`/xeno-config --verbose +loudly `dirname $0`/xeno-info -loudly ./xeno-config --verbose -loudly ./xeno-info - loudly cat /proc/cpuinfo # bogomips changes under CPU_FREQ # how much of the config do we want ? -local cmd=zgrep -E '$whatconf' -[ $verbose = 1 ] cmd=cat - -if [ -f /proc/config.gz ]; then # get the config - loudly $cmd /proc/config.gz -elif [ -f /lib/modules/`uname -r`/build/.config ]; then - loudly $cmd /lib/modules/`uname -r`/build/.config +local filter= grep -E '$whatconf' +[ $verbose = 1 ] filter= +if test -f /proc/config.gz; then   # get the config - the output of xeno-test contains this error: running: cat /proc/cpuinfo processor : 0 [...] bogomips: 2628.76 /bin/xeno-test: /bin/xeno-test: 325: : not found # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=y CONFIG_PREEMPT_BKL=y CONFIG_IPIPE=y ??? Jan signature.asc Description: OpenPGP digital signature ___ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core
Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system
Niklaus Giger wrote: When using this variant, I get the following messages: /bin/xeno-test: /bin/xeno-test: 177: zgrep: not found What about zcat | grep instead? Moreover, I failed to find a zgrep bb applet. Did you copy that stuff on your box? Sorry. As I had segmentation faults, my run did not get so far/or I missed this error. Running it manually I confirmed your bug and the proposed solution works for me, too. Integrated in the new version (attached) of the patch. Still broken: boxinfo() { # static info, show once loudly `dirname $0`/xeno-config --verbose loudly `dirname $0`/xeno-info loudly cat /proc/cpuinfo# bogomips changes under CPU_FREQ # how much of the config do we want ? local cmd=zcat | grep -E '$whatconf' [ $verbose = 1 ] cmd=cat if [ -f /proc/config.gz ]; then # get the config loudly $cmd /proc/config.gz Resolves to zcat | grep -E '...' /proc/config.gz or to cat /proc/config.gz. Both doesn't work. I would suggest this: local filter=| grep -E '$whatconf' [ $verbose = 1 ] filter= if [ -f /proc/config.gz ]; then # get the config loudly zcat /proc/config.gz $filter elif [ -f /lib/modules/`uname -r`/build/.config ]; then loudly $cmd /lib/modules/`uname -r`/build/.config And here we need loudly cat /lib/modules/`uname -r`/build/.config $filter fi There is another occurrence of zcat | grep which needs fixing. /bin/xeno-test: /bin/xeno-test: 264: getopts: not found getopts is off by default in bb. Is this essential for xeno-test? Then you should state this requirement somewhere. I checked out BusyBox 1.13, run make defconfig, changed the cross-compiler and install path. But I verified that a make defconfig on the 1.00 version had # CONFIG_ASH_GETOPTS is not set. Could you try the attached patch using busybox with CONFIG_ASH_GETOPTS=y? Did so, and also awk need to be switched on. What about testing for those features when bb was detected? Anyway, the latency tests work now (in my qemu box). But I do not find the workload (dd?) in the process list: [EMAIL PROTECTED] :/root# ps PID Uid VmSize Stat Command 1 root664 S init 2 rootSWN [ksoftirqd/0] 3 rootSW [watchdog/0] 4 rootSW [events/0] 5 rootSW [khelper] 6 rootSW [kthread] 8 rootSW [kblockd/0] 41 rootSW [gatekeeper/0] 76 rootSW [pdflush] 77 rootSW [pdflush] 79 rootSW [aio/0] 78 rootSW [kswapd0] 663 rootSW [kseriod] 700 rootSW [kpsmoused] 787 root212 S dhcpcd eth0 -t 5 -h LIRE_home -I LIRE_home 844 root 1020 S /usr/sbin/sshd -f /etc/ssh/sshd_config 874 root648 S /sbin/getty 38400 tty1 877 root644 S /sbin/getty 38400 tty2 880 root648 S /sbin/getty 38400 tty3 883 root640 S /sbin/getty 38400 tty4 886 root644 S /sbin/getty 38400 tty5 889 root648 S /sbin/getty 38400 tty6 890 root644 S /sbin/getty 38400 tty7 891 root636 S /sbin/getty 38400 tty8 898 root 2004 S sshd: [EMAIL PROTECTED]/0 902 root820 S -sh 905 root708 S /bin/sh /bin/xeno-test 1182 root436 S /bin/sh /bin/xeno-test 1296 root 2004 S sshd: [EMAIL PROTECTED]/1 1300 root884 S -sh 1321 root272 S /bin/sh /bin/xeno-test 1322 root632 S /bin/sh ./run -- -q -s -T 120 -t1 1323 root680 S /bin/sh //bin/xeno-load -- -q -s -T 120 -t1 1364 root436 S /bin/sh //bin/xeno-load -- -q -s -T 120 -t1 1426 root 1732 S ./latency -q -s -T 120 -t1 1430 root744 R ps Instead I have this in the log: [...] Sat May 27 16:29:26 UTC 2006 running: cat /proc/ipipe/version 1.3-04 Sat May 27 16:29:26 UTC 2006 running: generate_loads 1 dummy reaper for 1039 dd workload started, pids 1048 killing workload pids 1048 killall: dd: no process killed Sat May 27 16:29:27 UTC 2006 running: cat /proc/interrupts [...] Or do I have to invoke xeno-test with some parameter (I did not pass any)? Jan signature.asc Description: OpenPGP digital signature ___ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core
Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system
Niklaus Giger wrote: ... If anybody has a working target with a Xenomai + BusyBox combination and would be willing to test drive my changes, I would appreciate a feedback enormously. Did so, and here comes the result: :) Index: scripts/xeno-info === --- scripts/xeno-info (Revision 1135) +++ scripts/xeno-info (Arbeitskopie) @@ -1,31 +1,51 @@ -#!/bin/sh +#! /bin/sh # # This file has been lifted 'as is' from linux/scripts/ver_linux. -# +# Adapted to be run also under the BusyBox. If you want to test it under the BusyBox use +# busybox sh xeno-info 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 ' ' +withBusybox=0 +if test -L $SHELL ; then # is sh a logical link to busybox +exeName=`ls -l $SHELL|cut -d\ -f2` +if test `basename $exeName` = busybox; then + withBusybox=1; else echo 2.3 +fi +elif test -n $_ -a `basename $_` = busybox; then +withBusybox=1; +# else running a real /bin/sh (bash) shell +fi This may become fragile (and it already is on my hacked system). The reason: plans exist to allow compiling bb into multiple binaries again, thus sh will not be linked to busybox, but to ash e.g. What about this: withBusybox=0 if sh --help 21| grep -q BusyBox; then withBusybox=1; # else running a real /bin/sh (bash) shell fi echo withBusybox is $withBusybox When using this variant, I get the following messages: /bin/xeno-test: /bin/xeno-test: 177: zgrep: not found What about zcat | grep instead? Moreover, I failed to find a zgrep bb applet. Did you copy that stuff on your box? /bin/xeno-test: /bin/xeno-test: 264: getopts: not found getopts is off by default in bb. Is this essential for xeno-test? Then you should state this requirement somewhere. /bin/xeno-test: shift: 267: Illegal number: -1 I guess this comes from the missing getopts... Regarding workload: I typically run the cache calibrator [1] in a look, together with some I/O load (hard disk where available, flood ping). The loop looks like while true; do calibrator box-MHz 8M /tmp/; done box-MHz should be derivable from /proc/cpuinfo with some scripting. We may just check if an inclusion of the calibrator source code is possible (license terms...). Lacking time right now, otherwise I would have hacked further to make the test run. This test could be quite interesting for us here to quickly check our processing boxes' hardware and to test new Xenomai versions for elementary regressions when upgrading production systems (fortunately only their CF-cards). Looking forward! Jan [1] http://homepages.cwi.nl/~manegold/Calibrator signature.asc Description: OpenPGP digital signature ___ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core
Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system
Am Freitag, 26. Mai 2006 15:52 schrieb Jan Kiszka: Niklaus Giger wrote: ... If anybody has a working target with a Xenomai + BusyBox combination and would be willing to test drive my changes, I would appreciate a feedback enormously. Did so, and here comes the result: :) Thanks a lot for your prompt feedback. .. This may become fragile (and it already is on my hacked system). The reason: plans exist to allow compiling bb into multiple binaries again, thus sh will not be linked to busybox, but to ash e.g. Sure. It was just my first idea. But your proposed solution is better and already .. When using this variant, I get the following messages: /bin/xeno-test: /bin/xeno-test: 177: zgrep: not found What about zcat | grep instead? Moreover, I failed to find a zgrep bb applet. Did you copy that stuff on your box? Sorry. As I had segmentation faults, my run did not get so far/or I missed this error. Running it manually I confirmed your bug and the proposed solution works for me, too. Integrated in the new version (attached) of the patch. /bin/xeno-test: /bin/xeno-test: 264: getopts: not found getopts is off by default in bb. Is this essential for xeno-test? Then you should state this requirement somewhere. I checked out BusyBox 1.13, run make defconfig, changed the cross-compiler and install path. But I verified that a make defconfig on the 1.00 version had # CONFIG_ASH_GETOPTS is not set. Could you try the attached patch using busybox with CONFIG_ASH_GETOPTS=y? /bin/xeno-test: shift: 267: Illegal number: -1 I guess this comes from the missing getopts... Regarding workload: I typically run the cache calibrator [1] in a look, together with some I/O load (hard disk where available, flood ping). The loop looks like while true; do calibrator box-MHz 8M /tmp/; done box-MHz should be derivable from /proc/cpuinfo with some scripting. We may just check if an inclusion of the calibrator source code is possible (license terms...). Didn't know this tool. But I think this is another suggestion to improve xeno-test. Lacking time right now, otherwise I would have hacked further to make the test run. This test could be quite interesting for us here to quickly check our processing boxes' hardware and to test new Xenomai versions for elementary regressions when upgrading production systems (fortunately only their CF-cards). Looking forward! Nice to hear that. So could you please give my patch a second try with a modified busybox? -- Niklaus Giger Index: scripts/xeno-config.in === --- scripts/xeno-config.in (Revision 1137) +++ scripts/xeno-config.in (Arbeitskopie) @@ -1,4 +1,4 @@ -#! /bin/bash +#! /bin/sh staging=${DESTDIR} prefix=@prefix@ Index: scripts/xeno-info === --- scripts/xeno-info (Revision 1137) +++ scripts/xeno-info (Arbeitskopie) @@ -1,31 +1,46 @@ -#!/bin/sh +#! /bin/sh # # This file has been lifted 'as is' from linux/scripts/ver_linux. -# +# Adapted to be run also under the BusyBox. If you want to test it under the BusyBox use +# busybox sh xeno-info 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 ' ' +withBusybox=0 +if sh --help 21| grep -q BusyBox; then +withBusybox=1; +# else running a real /bin/sh (bash) shell +fi + +if test $withBusybox -eq 1; then busybox | grep -i BusyBox v ; fi + uname -a echo ' ' +if test -n `which gcc` ; then gcc --version 21| head -n 1 | grep -v gcc | awk \ 'NR==1{print Gnu C , $1}' gcc --version 21| grep gcc | awk \ 'NR==1{print Gnu C , $3}' +fi +if test -n `which gcc` ; then make --version 21 | awk -F, '{print $1}' | awk \ '/GNU Make/{print Gnu make ,$NF}' +fi ld -v 21 | awk -F\) '{print $1}' | awk \ '/BFD/{print binutils ,$NF}' +if test 0 -eq $withBusybox ; then fdformat --version | awk -F\- '{print util-linux, $NF}' mount --version | awk -F\- '{print mount , $NF}' +fi depmod -V 21 | awk 'NR==1 {print module-init-tools ,$NF}' @@ -50,21 +65,26 @@ isdnctrl 21 | grep version | awk \ 'NR==1{print isdn4k-utils , $NF}' +if test -n `which ldd` ; then 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 21 ldd -v || ldd --version |head -n1 | awk \ 'NR==1{print Dynamic linker (ldd) , $NF}' +fi ls -l /usr/lib/lib{g,stdc}++.so 2/dev/null | awk -F. \ '{print Linux C++ Library $4.$5.$6}' +if test 0 -eq $withBusybox ; then ps --version 21 | awk 'NR==1{print Procps, $NF}' +fi ifconfig --version 21 | grep tools | awk \ 'NR==1{print
[Xenomai-core] Porting xeno-{info|load|test} to a busybox system
Hi For my embedded target system I installed BusyBox as it was the easiest way to get a small GNU/Linux system to boot into a working shell. (But it takes less than 16 seconds from power on till the the familiar login: prompt.) But I ran into the problem, that the xeno-*-applications did not run under the busybox environment. Here are some comment on my proposed changes. 1) To make a shell work under the busybox I had to specify #! /bin/sh instead of #! /bin/bash. 2) To make the run I run the xeno-*-applications on my Debian GNU/Linux PowerBook either as: $ xeno-info or as $ busybox sh xeno-info 3) Once all tests passed on my PowerBook, I switched to the embedded PPC405GPr board using a recent busybox (version 1.1.3). This exposed some more not supported errors, eg. fdformat: unrecognized option `--version' Also on an embedded system a lot of the usual utilites like gcc, make, etc are not present. Therefore I checked for their existence with expressions like `which make` 4) As the BSD utility script is not present on my embedded system, xeno-test -L does not work. 5) The busybox shell does not know arrays. Also for unknown reasons the dd_jobs variable got not updated outside of the function generate_loads. Therefore I added a killall dd in the cleanup. 6) trap CHLD did not work under the BusyBox. Also (to be sure) called cleanup_load manually before exit. 7) Id did not ident the not busybox parts in xeno-info. This makes the patch smaller and more readable, but should probably be corrected before applying it. 8) Using `dirname $0` relative paths to make xeno-test work also if not called in /usr/xenomai/bin 9) Changing the e-mail address to [EMAIL PROTECTED] is also included. Checking the changes between running xeno-test (as bash or as busybox) and the old one did not reveal any significant changes. On my PPC405 system I could not complete this test as there segmentation faults running the invidual tests. I would appreciate if these changes (or similar) could go -- after a review -- into the trunk (not necessarily before 2.2). I am specially interested in Jim Cromie's opinion. If anybody has a working target with a Xenomai + BusyBox combination and would be willing to test drive my changes, I would appreciate a feedback enormously. These changes are a precondition to make the buildbot run xeno-test on the only board where I can easily and automatically switch the power off and on, without risking a family crisis. Best regards -- Niklaus Giger Index: scripts/xeno-config.in === --- scripts/xeno-config.in (Revision 1135) +++ scripts/xeno-config.in (Arbeitskopie) @@ -1,4 +1,4 @@ -#! /bin/bash +#! /bin/sh staging=${DESTDIR} prefix=@prefix@ Index: scripts/xeno-info === --- scripts/xeno-info (Revision 1135) +++ scripts/xeno-info (Arbeitskopie) @@ -1,31 +1,51 @@ -#!/bin/sh +#! /bin/sh # # This file has been lifted 'as is' from linux/scripts/ver_linux. -# +# Adapted to be run also under the BusyBox. If you want to test it under the BusyBox use +# busybox sh xeno-info 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 ' ' +withBusybox=0 +if test -L $SHELL ; then # is sh a logical link to busybox +exeName=`ls -l $SHELL|cut -d\ -f2` +if test `basename $exeName` = busybox; then + withBusybox=1; else echo 2.3 +fi +elif test -n $_ -a `basename $_` = busybox; then +withBusybox=1; +# else running a real /bin/sh (bash) shell +fi + +if test $withBusybox -eq 1; then busybox | grep -i BusyBox v ; fi + uname -a echo ' ' +if test -n `which gcc` ; then gcc --version 21| head -n 1 | grep -v gcc | awk \ 'NR==1{print Gnu C , $1}' gcc --version 21| grep gcc | awk \ 'NR==1{print Gnu C , $3}' +fi +if test -n `which gcc` ; then make --version 21 | awk -F, '{print $1}' | awk \ '/GNU Make/{print Gnu make ,$NF}' +fi ld -v 21 | awk -F\) '{print $1}' | awk \ '/BFD/{print binutils ,$NF}' +if test 0 -eq $withBusybox ; then fdformat --version | awk -F\- '{print util-linux, $NF}' mount --version | awk -F\- '{print mount , $NF}' +fi depmod -V 21 | awk 'NR==1 {print module-init-tools ,$NF}' @@ -50,21 +70,26 @@ isdnctrl 21 | grep version | awk \ 'NR==1{print isdn4k-utils , $NF}' +if test -n `which ldd` ; then 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 21 ldd -v || ldd --version |head -n1 | awk \ 'NR==1{print Dynamic linker (ldd) , $NF}' +fi ls -l /usr/lib/lib{g,stdc}++.so 2/dev/null | awk -F. \ '{print