* [Xenomai-core] Porting xeno-{info|load|test} to a busybox system
@ 2006-05-25 19:34 Niklaus Giger
2006-05-26 13:52 ` Jan Kiszka
0 siblings, 1 reply; 13+ messages in thread
From: Niklaus Giger @ 2006-05-25 19:34 UTC (permalink / raw)
To: xenomai, Jim Cromie
[-- Attachment #1: Type: text/plain, Size: 2544 bytes --]
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 xenomai-data@domain.hid 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
[-- Attachment #2: scripts.patch --]
[-- Type: text/x-diff, Size: 9070 bytes --]
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 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}'
+fi
+if test -n "`which gcc`" ; then
make --version 2>&1 | awk -F, '{print $1}' | awk \
'/GNU Make/{print "Gnu make ",$NF}'
+fi
ld -v 2>&1 | 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 2>&1 | awk 'NR==1 {print "module-init-tools ",$NF}'
@@ -50,21 +70,26 @@
isdnctrl 2>&1 | 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 2>&1 && 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 2>&1 | awk 'NR==1{print "Procps ", $NF}'
+fi
ifconfig --version 2>&1 | grep tools | awk \
'NR==1{print "Net-tools ", $NF}'
+if test 0 -eq $withBusybox ; then
# Kbd needs 'loadkeys -h',
loadkeys -h 2>&1 | awk \
'(NR==1 && ($3 !~ /option/)) {print "Kbd ", $3}'
@@ -74,6 +99,7 @@
'(NR==1 && ($2 ~ /console-tools/)) {print "Console-tools ", $3}'
expr --v 2>&1 | awk 'NR==1{print "Sh-utils ", $NF}'
+fi
if [ -e /proc/modules ]; then
X=`cat /proc/modules | sed -e "s/ .*$//"`
Index: scripts/xeno-load.in
===================================================================
--- scripts/xeno-load.in (Revision 1135)
+++ scripts/xeno-load.in (Arbeitskopie)
@@ -1,7 +1,9 @@
-#! /bin/bash
+#! /bin/sh
# Xenomai application loader script.
# (Processes the .runinfo files)
# June 2004, <rpm@xenomai.org>
+# Adapted to be run also under the BusyBox. If you want to test it under the BusyBox use
+# busybox sh xeno-info
usage='usage: xeno-load [[dir:]target]'
prefix="@prefix@"
@@ -23,7 +25,7 @@
shift
fi
-if test "x$1" = x--; then
+if test -z "$1" || test "x$1" = x--; then
target_dir=`pwd`
target_name=default
else
@@ -80,7 +82,7 @@
eval $user_moddir
-if `$sudo $modprobe -nq xeno_nucleus >& /dev/null`; then
+if `$sudo $modprobe -nq xeno_nucleus > /dev/null 2>&1`; then
target_deps="${target_deps}nucleus+"
else
target_deps=
@@ -92,8 +94,8 @@
test $verbose = 1 && echo "Running $target_name from $run_info_file"
-if test \! "x`type -t sudo`" = x; then
- sudo=sudo
+if test -n "`which sudo`"; then
+ sudo=`which sudo`
fi
if test \! "x$target_mesg" = x; then
@@ -161,7 +163,7 @@
echo "ERROR: cannot load $xeno_moddir/xeno_$mod$modext"
break
fi
- elif `$sudo $modprobe -n xeno_$mod >& /dev/null`; then
+ elif `$sudo $modprobe -n xeno_$mod > /dev/null 2>&1`; then
test $verbose = 1 && echo "+ $modprobe xeno_$mod"
$sudo $modprobe xeno_$mod
inslist="xeno_$mod $inslist"
Index: scripts/xeno-test.in
===================================================================
--- scripts/xeno-test.in (Revision 1135)
+++ scripts/xeno-test.in (Arbeitskopie)
@@ -1,4 +1,6 @@
-#!/bin/bash
+#! /bin/sh
+# Adapted to be run also under the BusyBox. If you want to test it under the BusyBox use
+# busybox sh xeno-test
myusage() {
cat >&1 <<EOF
@@ -19,7 +21,7 @@
name can be full or relative pathname
-v verbose
-M <email> sends output to given addr
- -m sends output to xenotest.output@domain.hid
+ -m sends output to xenomai-data@domain.hid
-U <url> uploads output to given URL
# following options are passed thru to latency
@@ -40,6 +42,18 @@
set -o notify # see dd's finish immediately.(or not!)
+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
+echo withBusybox ist $withBusybox
+
loudly() {
[ "$1" = "" ] && return
# run task after announcing it
@@ -51,31 +65,39 @@
# defaults for cpu workload
device=/dev/zero
-typeset -a dd_jobs
-dd_jobs=()
+dd_jobs=
# used in generate-loads
mkload() { exec dd if=$device of=/dev/null $* ; }
generate_loads() {
local jobsct=$1; shift;
+ if test 0 -eq $withBusybox ; then
+ reaper() { echo something died a $! or $* ; sleep 1; }
+ trap reaper CHLD
+ else
+ echo "dummy reaper for $!"
+ reaper() { echo xx >/dev/null ; }
+ fi
+ trap cleanup_load EXIT # under all exit conditions
- reaper() { echo something died $*; }
- trap reaper CHLD
- trap cleanup_load EXIT # under all exit conditions
-
- for (( ; $jobsct ; jobsct-- )) ; do
- mkload &
- dd_jobs[${#dd_jobs[*]}]=$!
+ for _j in $jobsct ; do
+ mkload &
+ dd_jobs="$dd_jobs $!"
+ break
done;
- echo dd workload started, pids ${dd_jobs[*]}
+ echo dd workload started, pids $dd_jobs
}
cleanup_load() {
# kill the workload
- echo killing workload pids ${dd_jobs[*]}
- kill ${dd_jobs[*]};
+ echo killing workload pids ${dd_jobs}
+ for _j in ${dd_jobs}
+ do
+ kill $_j
+ done
+ killall dd
unset dd_jobs;
}
@@ -83,10 +105,9 @@
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 ?
@@ -114,7 +135,11 @@
for f in /proc/xenomai/*/*; do [ -f $f ] && loudly cat $f; done
fi
[ -n "$prepost" ] && loudly $prepost
- loudly top -bn1c | head -n $(( 12 + $workload ))
+ if test 0 -eq $withBusybox ; then
+ loudly top -bn1c | head -n $(( 12 + $workload ))
+ else
+ loudly top | head -n $(( 12 + $workload ))
+ fi
}
@@ -126,15 +151,15 @@
loudly generate_loads $workload
boxstatus
(
- cd ../testsuite/latency
+ cd `dirname $0`/../testsuite/latency
loudly ./run -- $opts -t0
loudly ./run -- $opts -t1
loudly ./run -- $opts -t2
)
- ( cd ../testsuite/switch
+ ( cd `dirname $0`/../testsuite/switch
loudly ./run -- '# switch'
)
- ( cd ../testsuite/cyclic
+ ( cd `dirname $0`/../testsuite/cyclic
loudly ./run -- -p 10 -n -l 1000 '# cyclictest'
)
@@ -167,7 +192,7 @@
logprefix=/tmp/ # someplace usually there
prepost= # command to run pre, and post test (ex ntpq -p)
-email='xenotest.output@domain.hid' # until formalized
+email='xenomai-data@domain.hid'
sentby='xenotest.sender@domain.hid'
url=
sendit= # send it by m-mail, u-url
@@ -175,15 +200,15 @@
sendit() {
local file=$1
-
- if [ "$sendit" == 'm' ]; then
+
+ if test "$sendit" = 'm' ; then
echo "mailing $file to $email"
- if [ "$file" != '' ]; then
+ if test -n "$file" ; then
mail -s 'xeno-test results' $email -- -F $sentby < $file
else
cat - | mail -s 'xeno-test results' $email -- -F $sentby
fi
- elif [ "$sendit" == 'u' ]; then
+ elif test "$sendit" = 'u' ; then
which curl && curl -T $file $url
# -x $proxy >/tmp/.submit_result
# which wget && curl -T $file $url \
@@ -263,6 +288,8 @@
fi
fi
+cleanup_load
+
exit;
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system 2006-05-25 19:34 [Xenomai-core] Porting xeno-{info|load|test} to a busybox system Niklaus Giger @ 2006-05-26 13:52 ` Jan Kiszka 2006-05-26 16:52 ` Niklaus Giger 0 siblings, 1 reply; 13+ messages in thread From: Jan Kiszka @ 2006-05-26 13:52 UTC (permalink / raw) To: niklaus.giger; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 2979 bytes --] 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 2>&1| 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 [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 250 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system 2006-05-26 13:52 ` Jan Kiszka @ 2006-05-26 16:52 ` Niklaus Giger 2006-05-27 16:42 ` Jan Kiszka 2006-06-06 20:32 ` Jim Cromie 0 siblings, 2 replies; 13+ messages in thread From: Niklaus Giger @ 2006-05-26 16:52 UTC (permalink / raw) To: Jan Kiszka; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 2586 bytes --] 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 [-- Attachment #2: scripts.patch --] [-- Type: text/x-diff, Size: 9119 bytes --] 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 2>&1| 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 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}' +fi +if test -n "`which gcc`" ; then make --version 2>&1 | awk -F, '{print $1}' | awk \ '/GNU Make/{print "Gnu make ",$NF}' +fi ld -v 2>&1 | 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 2>&1 | awk 'NR==1 {print "module-init-tools ",$NF}' @@ -50,21 +65,26 @@ isdnctrl 2>&1 | 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 2>&1 && 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 2>&1 | awk 'NR==1{print "Procps ", $NF}' +fi ifconfig --version 2>&1 | grep tools | awk \ 'NR==1{print "Net-tools ", $NF}' +if test 0 -eq $withBusybox ; then # Kbd needs 'loadkeys -h', loadkeys -h 2>&1 | awk \ '(NR==1 && ($3 !~ /option/)) {print "Kbd ", $3}' @@ -74,6 +94,7 @@ '(NR==1 && ($2 ~ /console-tools/)) {print "Console-tools ", $3}' expr --v 2>&1 | awk 'NR==1{print "Sh-utils ", $NF}' +fi if [ -e /proc/modules ]; then X=`cat /proc/modules | sed -e "s/ .*$//"` Index: scripts/xeno-load.in =================================================================== --- scripts/xeno-load.in (Revision 1137) +++ scripts/xeno-load.in (Arbeitskopie) @@ -1,7 +1,9 @@ -#! /bin/bash +#! /bin/sh # Xenomai application loader script. # (Processes the .runinfo files) # June 2004, <rpm@xenomai.org> +# Adapted to be run also under the BusyBox. If you want to test it under the BusyBox use +# busybox sh xeno-info usage='usage: xeno-load [[dir:]target]' prefix="@prefix@" @@ -23,7 +25,7 @@ shift fi -if test "x$1" = x--; then +if test -z "$1" || test "x$1" = x--; then target_dir=`pwd` target_name=default else @@ -80,7 +82,7 @@ eval $user_moddir -if `$sudo $modprobe -nq xeno_nucleus >& /dev/null`; then +if `$sudo $modprobe -nq xeno_nucleus > /dev/null 2>&1`; then target_deps="${target_deps}nucleus+" else target_deps= @@ -92,8 +94,8 @@ test $verbose = 1 && echo "Running $target_name from $run_info_file" -if test \! "x`type -t sudo`" = x; then - sudo=sudo +if test -n "`which sudo`"; then + sudo=`which sudo` fi if test \! "x$target_mesg" = x; then @@ -161,7 +163,7 @@ echo "ERROR: cannot load $xeno_moddir/xeno_$mod$modext" break fi - elif `$sudo $modprobe -n xeno_$mod >& /dev/null`; then + elif `$sudo $modprobe -n xeno_$mod > /dev/null 2>&1`; then test $verbose = 1 && echo "+ $modprobe xeno_$mod" $sudo $modprobe xeno_$mod inslist="xeno_$mod $inslist" Index: scripts/xeno-test.in =================================================================== --- scripts/xeno-test.in (Revision 1137) +++ scripts/xeno-test.in (Arbeitskopie) @@ -1,4 +1,6 @@ -#!/bin/bash +#! /bin/sh +# Adapted to be run also under the BusyBox. If you want to test it under the BusyBox use +# busybox sh xeno-test myusage() { cat >&1 <<EOF @@ -19,7 +21,7 @@ name can be full or relative pathname -v verbose -M <email> sends output to given addr - -m sends output to xenotest.output@domain.hid + -m sends output to xenomai-data@domain.hid -U <url> uploads output to given URL # following options are passed thru to latency @@ -40,6 +42,13 @@ set -o notify # see dd's finish immediately.(or not!) +withBusybox=0 +if sh --help 2>&1| grep -q BusyBox; then + withBusybox=1; +# else running a real /bin/sh (bash) shell +fi +echo withBusybox is $withBusybox + loudly() { [ "$1" = "" ] && return # run task after announcing it @@ -51,31 +60,39 @@ # defaults for cpu workload device=/dev/zero -typeset -a dd_jobs -dd_jobs=() +dd_jobs= # used in generate-loads mkload() { exec dd if=$device of=/dev/null $* ; } generate_loads() { local jobsct=$1; shift; + if test 0 -eq $withBusybox ; then + reaper() { echo something died a $! or $* ; sleep 1; } + trap reaper CHLD + else + echo "dummy reaper for $!" + reaper() { echo xx >/dev/null ; } + fi + trap cleanup_load EXIT # under all exit conditions - reaper() { echo something died $*; } - trap reaper CHLD - trap cleanup_load EXIT # under all exit conditions - - for (( ; $jobsct ; jobsct-- )) ; do - mkload & - dd_jobs[${#dd_jobs[*]}]=$! + for _j in $jobsct ; do + mkload & + dd_jobs="$dd_jobs $!" + break done; - echo dd workload started, pids ${dd_jobs[*]} + echo dd workload started, pids $dd_jobs } cleanup_load() { # kill the workload - echo killing workload pids ${dd_jobs[*]} - kill ${dd_jobs[*]}; + echo killing workload pids ${dd_jobs} + for _j in ${dd_jobs} + do + kill $_j + done + killall dd unset dd_jobs; } @@ -83,14 +100,13 @@ 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'" + local cmd="zcat | grep -E '$whatconf'" [ "$verbose" = 1 ] && cmd=cat if [ -f /proc/config.gz ]; then # get the config @@ -114,7 +130,11 @@ for f in /proc/xenomai/*/*; do [ -f $f ] && loudly cat $f; done fi [ -n "$prepost" ] && loudly $prepost - loudly top -bn1c | head -n $(( 12 + $workload )) + if test 0 -eq $withBusybox ; then + loudly top -bn1c | head -n $(( 12 + $workload )) + else + loudly top | head -n $(( 12 + $workload )) + fi } @@ -126,15 +146,15 @@ loudly generate_loads $workload boxstatus ( - cd ../testsuite/latency + cd `dirname $0`/../testsuite/latency loudly ./run -- $opts -t0 loudly ./run -- $opts -t1 loudly ./run -- $opts -t2 ) - ( cd ../testsuite/switch + ( cd `dirname $0`/../testsuite/switch loudly ./run -- '# switch' ) - ( cd ../testsuite/cyclic + ( cd `dirname $0`/../testsuite/cyclic loudly ./run -- -p 10 -n -l 1000 '# cyclictest' ) @@ -149,7 +169,7 @@ # check/warn on problem configs - eval `zgrep CONFIG_CPU_FREQ /proc/config.gz`; + eval `zcat | grep CONFIG_CPU_FREQ /proc/config.gz`; if [ ! -z "$CONFIG_CPU_FREQ" ] ; then echo "warning: CONFIG_CPU_FREQ=$CONFIG_CPU_FREQ may be problematic" fi @@ -167,7 +187,7 @@ logprefix=/tmp/ # someplace usually there prepost= # command to run pre, and post test (ex ntpq -p) -email='xenotest.output@domain.hid' # until formalized +email='xenomai-data@domain.hid' sentby='xenotest.sender@domain.hid' url= sendit= # send it by m-mail, u-url @@ -175,15 +195,15 @@ sendit() { local file=$1 - - if [ "$sendit" == 'm' ]; then + + if test "$sendit" = 'm' ; then echo "mailing $file to $email" - if [ "$file" != '' ]; then + if test -n "$file" ; then mail -s 'xeno-test results' $email -- -F $sentby < $file else cat - | mail -s 'xeno-test results' $email -- -F $sentby fi - elif [ "$sendit" == 'u' ]; then + elif test "$sendit" = 'u' ; then which curl && curl -T $file $url # -x $proxy >/tmp/.submit_result # which wget && curl -T $file $url \ @@ -263,6 +283,8 @@ fi fi +cleanup_load + exit; ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system 2006-05-26 16:52 ` Niklaus Giger @ 2006-05-27 16:42 ` Jan Kiszka 2006-05-28 10:00 ` Niklaus Giger 2006-06-06 20:32 ` Jim Cromie 1 sibling, 1 reply; 13+ messages in thread From: Jan Kiszka @ 2006-05-27 16:42 UTC (permalink / raw) To: niklaus.giger; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 4437 bytes --] 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: root@domain.hid :/root# ps PID Uid VmSize Stat Command 1 root 664 S init 2 root SWN [ksoftirqd/0] 3 root SW [watchdog/0] 4 root SW< [events/0] 5 root SW< [khelper] 6 root SW< [kthread] 8 root SW< [kblockd/0] 41 root SW< [gatekeeper/0] 76 root SW [pdflush] 77 root SW [pdflush] 79 root SW< [aio/0] 78 root SW [kswapd0] 663 root SW< [kseriod] 700 root SW< [kpsmoused] 787 root 212 S dhcpcd eth0 -t 5 -h LIRE_home -I LIRE_home 844 root 1020 S /usr/sbin/sshd -f /etc/ssh/sshd_config 874 root 648 S /sbin/getty 38400 tty1 877 root 644 S /sbin/getty 38400 tty2 880 root 648 S /sbin/getty 38400 tty3 883 root 640 S /sbin/getty 38400 tty4 886 root 644 S /sbin/getty 38400 tty5 889 root 648 S /sbin/getty 38400 tty6 890 root 644 S /sbin/getty 38400 tty7 891 root 636 S /sbin/getty 38400 tty8 898 root 2004 S sshd: root@domain.hid 902 root 820 S -sh 905 root 708 S /bin/sh /bin/xeno-test 1182 root 436 S /bin/sh /bin/xeno-test 1296 root 2004 S sshd: root@domain.hid 1300 root 884 S -sh 1321 root 272 S /bin/sh /bin/xeno-test 1322 root 632 S /bin/sh ./run -- -q -s -T 120 -t1 1323 root 680 S /bin/sh //bin/xeno-load -- -q -s -T 120 -t1 1364 root 436 S /bin/sh //bin/xeno-load -- -q -s -T 120 -t1 1426 root 1732 S ./latency -q -s -T 120 -t1 1430 root 744 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 [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 249 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system 2006-05-27 16:42 ` Jan Kiszka @ 2006-05-28 10:00 ` Niklaus Giger 2006-05-28 10:45 ` Jan Kiszka 0 siblings, 1 reply; 13+ messages in thread From: Niklaus Giger @ 2006-05-28 10:00 UTC (permalink / raw) To: Jan Kiszka; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 1950 bytes --] 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. 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. Best regards -- Niklaus Giger [-- Attachment #2: scripts.patch --] [-- Type: text/x-diff, Size: 12446 bytes --] Index: scripts/xeno-config.in =================================================================== --- scripts/xeno-config.in (Revision 1142) +++ 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 1142) +++ 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 2>&1| 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 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}' +fi +if test -n "`which gcc`" ; then make --version 2>&1 | awk -F, '{print $1}' | awk \ '/GNU Make/{print "Gnu make ",$NF}' +fi ld -v 2>&1 | 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 2>&1 | awk 'NR==1 {print "module-init-tools ",$NF}' @@ -50,21 +65,26 @@ isdnctrl 2>&1 | 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 2>&1 && 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 2>&1 | awk 'NR==1{print "Procps ", $NF}' +fi ifconfig --version 2>&1 | grep tools | awk \ 'NR==1{print "Net-tools ", $NF}' +if test 0 -eq $withBusybox ; then # Kbd needs 'loadkeys -h', loadkeys -h 2>&1 | awk \ '(NR==1 && ($3 !~ /option/)) {print "Kbd ", $3}' @@ -74,6 +94,7 @@ '(NR==1 && ($2 ~ /console-tools/)) {print "Console-tools ", $3}' expr --v 2>&1 | awk 'NR==1{print "Sh-utils ", $NF}' +fi if [ -e /proc/modules ]; then X=`cat /proc/modules | sed -e "s/ .*$//"` Index: scripts/xeno-load.in =================================================================== --- scripts/xeno-load.in (Revision 1142) +++ scripts/xeno-load.in (Arbeitskopie) @@ -1,7 +1,9 @@ -#! /bin/bash +#! /bin/sh # Xenomai application loader script. # (Processes the .runinfo files) # June 2004, <rpm@xenomai.org> +# Adapted to be run also under the BusyBox. If you want to test it under the BusyBox use +# busybox sh xeno-info usage='usage: xeno-load [[dir:]target]' prefix="@prefix@" @@ -23,7 +25,7 @@ shift fi -if test "x$1" = x--; then +if test -z "$1" || test "x$1" = x--; then target_dir=`pwd` target_name=default else @@ -80,7 +82,7 @@ eval $user_moddir -if `$sudo $modprobe -nq xeno_nucleus >& /dev/null`; then +if `$sudo $modprobe -nq xeno_nucleus > /dev/null 2>&1`; then target_deps="${target_deps}nucleus+" else target_deps= @@ -92,8 +94,8 @@ test $verbose = 1 && echo "Running $target_name from $run_info_file" -if test \! "x`type -t sudo`" = x; then - sudo=sudo +if test -n "`which sudo`"; then + sudo=`which sudo` fi if test \! "x$target_mesg" = x; then @@ -161,7 +163,7 @@ echo "ERROR: cannot load $xeno_moddir/xeno_$mod$modext" break fi - elif `$sudo $modprobe -n xeno_$mod >& /dev/null`; then + elif `$sudo $modprobe -n xeno_$mod > /dev/null 2>&1`; then test $verbose = 1 && echo "+ $modprobe xeno_$mod" $sudo $modprobe xeno_$mod inslist="xeno_$mod $inslist" Index: scripts/xeno-test.in =================================================================== --- scripts/xeno-test.in (Revision 1142) +++ scripts/xeno-test.in (Arbeitskopie) @@ -1,4 +1,7 @@ -#!/bin/bash +#! /bin/sh +# Adapted to be run also under the BusyBox. If you want to test it under the BusyBox use +# busybox sh xeno-test +# A BusyBox >= 1.1.3 with a make defconfig should provide all needed applets. myusage() { cat >&1 <<EOF @@ -19,7 +22,7 @@ name can be full or relative pathname -v verbose -M <email> sends output to given addr - -m sends output to xenotest.output@domain.hid + -m sends output to xenomai-data@domain.hid -U <url> uploads output to given URL # following options are passed thru to latency @@ -40,6 +43,46 @@ set -o notify # see dd's finish immediately.(or not!) +withBusybox=0 +if sh --help 2>&1| grep -q BusyBox; then + withBusybox=1; +# else running a real /bin/sh (bash) shell +fi +echo withBusybox is $withBusybox + +checkUtilities() { + # Check for needed helper utilities + local neededApplets="awk basename cut date dd dirname egrep grep + getopt head kill mount sleep test top uname zcat" + local foundAll=1 + for _j in $neededApplets + do + if test -z `which $_j`; then + echo "Please build busybox with support for applet $_j" + foundAll=0 + fi + done + if test $foundAll -eq 0 ; then exit 3 ; fi +} + +checkHelpers() { + local foundAll=1 + if test -z "`which script`" -a -n "$logging"; then + echo "You will not be able to log (-L option) as script is missing" + foundAll=0 + fi + if test -z "`which mail`" -a "$sendit" = 'm' ; then + echo "You will not be able send mail (-m/-M options) as mail is missing" + foundAll=0 + fi + if test -z "`which curl`" -a "$sendit" = 'm' ; then + # if test -z `which curl` -a "$sendit" = 'u' ; then + echo "You will not be able to upload (-U option) as curl is missing" + foundAll=0 + fi + if test $foundAll -eq 0 ; then exit 3 ; fi +} + loudly() { [ "$1" = "" ] && return # run task after announcing it @@ -51,31 +94,46 @@ # defaults for cpu workload device=/dev/zero -typeset -a dd_jobs -dd_jobs=() +dd_jobs= # used in generate-loads -mkload() { exec dd if=$device of=/dev/null $* ; } +mkload() { + dd if=$device of=/dev/null $* & +} generate_loads() { - local jobsct=$1; shift; + local jobsct=$1; + # if test -z "$1"; then echo Skipping generate_loads; return; fi + shift 1 + if test 0 -eq $withBusybox ; then + reaper() { echo something died a $! or $* ; sleep 1; } + trap reaper CHLD + fi + trap cleanup_load EXIT # under all exit conditions - reaper() { echo something died $*; } - trap reaper CHLD - trap cleanup_load EXIT # under all exit conditions - - for (( ; $jobsct ; jobsct-- )) ; do - mkload & - dd_jobs[${#dd_jobs[*]}]=$! + for _j in $jobsct ; do + mkload + dd_jobs="$dd_jobs $!" + break done; - echo dd workload started, pids ${dd_jobs[*]} + echo dd workload started, pids $dd_jobs } cleanup_load() { # kill the workload - echo killing workload pids ${dd_jobs[*]} - kill ${dd_jobs[*]}; + echo killing workload pids $dd_jobs + if test -z $dd_jobs ; then + echo "no dd_jobs found, calling killall dd" + killall dd + else + for _j in $dd_jobs + do + ps | grep $_j + echo kill workload pid $_j + kill $_j + done + fi unset dd_jobs; } @@ -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 + loudly zcat /proc/config.gz | $filter + elif test -f /lib/modules/`uname -r`/build/.config + then + loudly cat /lib/modules/`uname -r`/build/.config | $filter fi [ -d /proc/adeos ] && for f in /proc/adeos/*; do loudly cat $f; done @@ -104,7 +161,6 @@ } boxstatus() { # get dynamic status - loudly cat /proc/interrupts loudly cat /proc/loadavg loudly cat /proc/meminfo @@ -114,7 +170,11 @@ for f in /proc/xenomai/*/*; do [ -f $f ] && loudly cat $f; done fi [ -n "$prepost" ] && loudly $prepost - loudly top -bn1c | head -n $(( 12 + $workload )) + if test 0 -eq $withBusybox ; then + loudly top -bn1c | head -n $(( 12 + $workload )) + else + loudly top | head -n $(( 12 + $workload )) + fi } @@ -126,36 +186,36 @@ loudly generate_loads $workload boxstatus ( - cd ../testsuite/latency + cd `dirname $0`/../testsuite/latency loudly ./run -- $opts -t0 loudly ./run -- $opts -t1 loudly ./run -- $opts -t2 ) - ( cd ../testsuite/switch + ( cd `dirname $0`/../testsuite/switch loudly ./run -- '# switch' ) - ( cd ../testsuite/cyclic + ( cd `dirname $0`/../testsuite/cyclic loudly ./run -- -p 10 -n -l 1000 '# cyclictest' ) boxstatus } - ##################### # MAIN +# echo will call checkHelpers +# checkUtilities if [ -f /proc/config.gz ] ; then # check/warn on problem configs - - eval `zgrep CONFIG_CPU_FREQ /proc/config.gz`; + eval `zcat /proc/config.gz | grep CONFIG_CPU_FREQ` ; if [ ! -z "$CONFIG_CPU_FREQ" ] ; then echo "warning: CONFIG_CPU_FREQ=$CONFIG_CPU_FREQ may be problematic" fi - fi + workload=1 # default = 1 job # *pass get all legit options, except -N, -L @@ -167,7 +227,7 @@ logprefix=/tmp/ # someplace usually there prepost= # command to run pre, and post test (ex ntpq -p) -email='xenotest.output@domain.hid' # until formalized +email='xenomai-data@domain.hid sentby='xenotest.sender@domain.hid' url= sendit= # send it by m-mail, u-url @@ -175,15 +235,15 @@ sendit() { local file=$1 - - if [ "$sendit" == 'm' ]; then + + if test "$sendit" = 'm' ; then echo "mailing $file to $email" - if [ "$file" != '' ]; then + if test -n "$file" ; then mail -s 'xeno-test results' $email -- -F $sentby < $file else cat - | mail -s 'xeno-test results' $email -- -F $sentby fi - elif [ "$sendit" == 'u' ]; then + elif test "$sendit" = 'u' ; then which curl && curl -T $file $url # -x $proxy >/tmp/.submit_result # which wget && curl -T $file $url \ @@ -243,10 +303,11 @@ esac done +checkHelpers + # all args have been handled, and split into 2 passthrus shift $(($OPTIND - 1)); - if [ "$logging" != "" ]; then # restart inside a script invocation, passing appropriate args wfile=$logprefix$logfile-`date +%y%m%d.%H%M%S` @@ -263,6 +324,8 @@ fi fi +cleanup_load + exit; @@ -302,8 +365,12 @@ xeno-test -L xeno-test -N foo -T 18 -l 6 -s xeno-test -L -N foo1- +xeno-test -m +xeno-test -T 1 -M $USER@localhost xeno-test -N foo0 -w0 -l 5 -T 30 -h xeno-test -L -N foo4- -w4 xeno-test -L -N foo4W- -w4 -W 'dd if=/dev/hda1 of=/dev/null' -3. +3. Repeat the same tests under the BusyBox. + +4. Check for border cases like missing awk, curl, mail, script, /proc/config.gz ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system 2006-05-28 10:00 ` Niklaus Giger @ 2006-05-28 10:45 ` Jan Kiszka 2006-05-28 14:41 ` Niklaus Giger 0 siblings, 1 reply; 13+ messages in thread From: Jan Kiszka @ 2006-05-28 10:45 UTC (permalink / raw) To: niklaus.giger; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 3465 bytes --] 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 [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 249 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system 2006-05-28 10:45 ` Jan Kiszka @ 2006-05-28 14:41 ` Niklaus Giger 2006-05-29 11:40 ` Jan Kiszka 0 siblings, 1 reply; 13+ messages in thread From: Niklaus Giger @ 2006-05-28 14:41 UTC (permalink / raw) To: Jan Kiszka; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 1390 bytes --] 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. 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? Thanks a lot again. Best regards -- Niklaus Giger [-- Attachment #2: scripts.patch --] [-- Type: text/x-diff, Size: 12217 bytes --] Index: scripts/xeno-config.in =================================================================== --- scripts/xeno-config.in (Revision 1142) +++ 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 1142) +++ 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 2>&1| 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 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}' +fi +if test -n "`which gcc`" ; then make --version 2>&1 | awk -F, '{print $1}' | awk \ '/GNU Make/{print "Gnu make ",$NF}' +fi ld -v 2>&1 | 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 2>&1 | awk 'NR==1 {print "module-init-tools ",$NF}' @@ -50,21 +65,26 @@ isdnctrl 2>&1 | 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 2>&1 && 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 2>&1 | awk 'NR==1{print "Procps ", $NF}' +fi ifconfig --version 2>&1 | grep tools | awk \ 'NR==1{print "Net-tools ", $NF}' +if test 0 -eq $withBusybox ; then # Kbd needs 'loadkeys -h', loadkeys -h 2>&1 | awk \ '(NR==1 && ($3 !~ /option/)) {print "Kbd ", $3}' @@ -74,6 +94,7 @@ '(NR==1 && ($2 ~ /console-tools/)) {print "Console-tools ", $3}' expr --v 2>&1 | awk 'NR==1{print "Sh-utils ", $NF}' +fi if [ -e /proc/modules ]; then X=`cat /proc/modules | sed -e "s/ .*$//"` Index: scripts/xeno-load.in =================================================================== --- scripts/xeno-load.in (Revision 1142) +++ scripts/xeno-load.in (Arbeitskopie) @@ -1,7 +1,9 @@ -#! /bin/bash +#! /bin/sh # Xenomai application loader script. # (Processes the .runinfo files) # June 2004, <rpm@xenomai.org> +# Adapted to be run also under the BusyBox. If you want to test it under the BusyBox use +# busybox sh xeno-info usage='usage: xeno-load [[dir:]target]' prefix="@prefix@" @@ -23,7 +25,7 @@ shift fi -if test "x$1" = x--; then +if test -z "$1" || test "x$1" = x--; then target_dir=`pwd` target_name=default else @@ -80,7 +82,7 @@ eval $user_moddir -if `$sudo $modprobe -nq xeno_nucleus >& /dev/null`; then +if `$sudo $modprobe -nq xeno_nucleus > /dev/null 2>&1`; then target_deps="${target_deps}nucleus+" else target_deps= @@ -92,8 +94,8 @@ test $verbose = 1 && echo "Running $target_name from $run_info_file" -if test \! "x`type -t sudo`" = x; then - sudo=sudo +if test -n "`which sudo`"; then + sudo=`which sudo` fi if test \! "x$target_mesg" = x; then @@ -161,7 +163,7 @@ echo "ERROR: cannot load $xeno_moddir/xeno_$mod$modext" break fi - elif `$sudo $modprobe -n xeno_$mod >& /dev/null`; then + elif `$sudo $modprobe -n xeno_$mod > /dev/null 2>&1`; then test $verbose = 1 && echo "+ $modprobe xeno_$mod" $sudo $modprobe xeno_$mod inslist="xeno_$mod $inslist" Index: scripts/xeno-test.in =================================================================== --- scripts/xeno-test.in (Revision 1142) +++ scripts/xeno-test.in (Arbeitskopie) @@ -1,5 +1,7 @@ -#!/bin/bash - +#! /bin/sh +# Adapted to be run also under the BusyBox. If you want to test it under the BusyBox use +# busybox sh xeno-test +# A BusyBox >= 1.1.3 with a make defconfig should provide all needed applets. myusage() { cat >&1 <<EOF xeno-test [options] @@ -19,7 +21,7 @@ name can be full or relative pathname -v verbose -M <email> sends output to given addr - -m sends output to xenotest.output@domain.hid + -m sends output to xenomai-data@domain.hid -U <url> uploads output to given URL # following options are passed thru to latency @@ -40,6 +42,46 @@ set -o notify # see dd's finish immediately.(or not!) +withBusybox=0 +if sh --help 2>&1| grep -q BusyBox; then + withBusybox=1; +# else running a real /bin/sh (bash) shell +fi +echo withBusybox is $withBusybox +pidFile=/var/lock/`basename $0`.pids + +checkUtilities() { + # Check for needed helper utilities + local neededApplets="awk basename cut date dd dirname egrep grep + getopt head kill mount sleep test top uname zcat" + local foundAll=1 + for _j in $neededApplets + do + if test -z "`which $_j`"; then + echo "Please build busybox with support for applet $_j" + foundAll=0 + fi + done + if test $foundAll -eq 0 ; then exit 3 ; fi +} + +checkHelpers() { + local foundAll=1 + if test -z "`which script`" -a -n "$logging"; then + echo "You will not be able to log (-L option) as script is missing" + foundAll=0 + fi + if test -z "`which mail`" -a "$sendit" = 'm' ; then + echo "You will not be able send mail (-m/-M options) as mail is missing" + foundAll=0 + fi + if test -z "`which curl`" -a "$sendit" = 'm' ; then + echo "You will not be able to upload (-U option) as curl is missing" + foundAll=0 + fi + if test $foundAll -eq 0 ; then exit 3 ; fi +} + loudly() { [ "$1" = "" ] && return # run task after announcing it @@ -51,31 +93,49 @@ # defaults for cpu workload device=/dev/zero -typeset -a dd_jobs -dd_jobs=() +dd_jobs= # used in generate-loads -mkload() { exec dd if=$device of=/dev/null $* ; } +mkload() { dd if=$device of=/dev/null $* & } generate_loads() { - local jobsct=$1; shift; + local jobsct=$1; + # if test -z "$1"; then echo Skipping generate_loads; return; fi + shift 1 + if test 0 -eq $withBusybox ; then + reaper() { echo something died a $! or $* ; sleep 1; } + trap reaper CHLD + trap cleanup_load EXIT # under all exit conditions + fi + while test $jobsct -ge 1; do + jobsct=$((jobsct-1)); + mkload + dd_jobs="$dd_jobs $!" ; + done - reaper() { echo something died $*; } - trap reaper CHLD - trap cleanup_load EXIT # under all exit conditions - - for (( ; $jobsct ; jobsct-- )) ; do - mkload & - dd_jobs[${#dd_jobs[*]}]=$! - done; - - echo dd workload started, pids ${dd_jobs[*]} + echo dd workload started, pids $dd_jobs stored in $pidFile + echo $dd_jobs > $pidFile } cleanup_load() { # kill the workload - echo killing workload pids ${dd_jobs[*]} - kill ${dd_jobs[*]}; + echo killing workload pids $dd_jobs pidFile $pidFile + if test -z "$dd_jobs" -a -r $pidFile; then + dd_jobs=`cat $pidFile` + # echo Read pids from file $pidFile, now $dd_jobs + rm -f $pidFile + fi + + if test -z "$dd_jobs" ; then + echo "no dd_jobs found" + else + for _j in $dd_jobs + do + ps | grep $_j + echo kill workload pid $_j + kill $_j + done + fi unset dd_jobs; } @@ -83,20 +143,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 + loudly zcat /proc/config.gz | $filter + elif test -f /lib/modules/`uname -r`/build/.config + then + loudly cat /lib/modules/`uname -r`/build/.config | $filter fi [ -d /proc/adeos ] && for f in /proc/adeos/*; do loudly cat $f; done @@ -104,7 +163,6 @@ } boxstatus() { # get dynamic status - loudly cat /proc/interrupts loudly cat /proc/loadavg loudly cat /proc/meminfo @@ -114,7 +172,11 @@ for f in /proc/xenomai/*/*; do [ -f $f ] && loudly cat $f; done fi [ -n "$prepost" ] && loudly $prepost - loudly top -bn1c | head -n $(( 12 + $workload )) + if test 0 -eq $withBusybox ; then + loudly top -bn1c | head -n $(( 12 + $workload )) + else + loudly top | head -n $(( 12 + $workload )) + fi } @@ -126,36 +188,35 @@ loudly generate_loads $workload boxstatus ( - cd ../testsuite/latency + cd `dirname $0`/../testsuite/latency loudly ./run -- $opts -t0 loudly ./run -- $opts -t1 loudly ./run -- $opts -t2 ) - ( cd ../testsuite/switch + ( cd `dirname $0`/../testsuite/switch loudly ./run -- '# switch' ) - ( cd ../testsuite/cyclic + ( cd `dirname $0`/../testsuite/cyclic loudly ./run -- -p 10 -n -l 1000 '# cyclictest' ) boxstatus } - ##################### # MAIN +checkUtilities if [ -f /proc/config.gz ] ; then # check/warn on problem configs - - eval `zgrep CONFIG_CPU_FREQ /proc/config.gz`; + eval `zcat /proc/config.gz | grep CONFIG_CPU_FREQ` ; if [ ! -z "$CONFIG_CPU_FREQ" ] ; then echo "warning: CONFIG_CPU_FREQ=$CONFIG_CPU_FREQ may be problematic" fi - fi + workload=1 # default = 1 job # *pass get all legit options, except -N, -L @@ -167,7 +228,7 @@ logprefix=/tmp/ # someplace usually there prepost= # command to run pre, and post test (ex ntpq -p) -email='xenotest.output@domain.hid' # until formalized +email='xenomai-data@domain.hid' sentby='xenotest.sender@domain.hid' url= sendit= # send it by m-mail, u-url @@ -175,15 +236,15 @@ sendit() { local file=$1 - - if [ "$sendit" == 'm' ]; then + + if test "$sendit" = 'm' ; then echo "mailing $file to $email" - if [ "$file" != '' ]; then + if test -n "$file" ; then mail -s 'xeno-test results' $email -- -F $sentby < $file else cat - | mail -s 'xeno-test results' $email -- -F $sentby fi - elif [ "$sendit" == 'u' ]; then + elif test "$sendit" = 'u' ; then which curl && curl -T $file $url # -x $proxy >/tmp/.submit_result # which wget && curl -T $file $url \ @@ -243,10 +304,11 @@ esac done +checkHelpers + # all args have been handled, and split into 2 passthrus shift $(($OPTIND - 1)); - if [ "$logging" != "" ]; then # restart inside a script invocation, passing appropriate args wfile=$logprefix$logfile-`date +%y%m%d.%H%M%S` @@ -263,6 +325,8 @@ fi fi +cleanup_load + exit; @@ -302,8 +366,12 @@ xeno-test -L xeno-test -N foo -T 18 -l 6 -s xeno-test -L -N foo1- +xeno-test -m +xeno-test -T 1 -M $USER@localhost xeno-test -N foo0 -w0 -l 5 -T 30 -h xeno-test -L -N foo4- -w4 xeno-test -L -N foo4W- -w4 -W 'dd if=/dev/hda1 of=/dev/null' -3. +3. Repeat the same tests under the BusyBox. + +4. Check for border cases like missing awk, curl, mail, script, /proc/config.gz ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system 2006-05-28 14:41 ` Niklaus Giger @ 2006-05-29 11:40 ` Jan Kiszka 0 siblings, 0 replies; 13+ messages in thread From: Jan Kiszka @ 2006-05-29 11:40 UTC (permalink / raw) To: niklaus.giger; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 2058 bytes --] 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 [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 250 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system 2006-05-26 16:52 ` Niklaus Giger 2006-05-27 16:42 ` Jan Kiszka @ 2006-06-06 20:32 ` Jim Cromie 2006-06-12 20:33 ` Jan Kiszka 1 sibling, 1 reply; 13+ messages in thread From: Jim Cromie @ 2006-06-06 20:32 UTC (permalink / raw) To: niklaus.giger; +Cc: Jan Kiszka, xenomai 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) ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system 2006-06-06 20:32 ` Jim Cromie @ 2006-06-12 20:33 ` Jan Kiszka 2006-06-12 21:23 ` [Xenomai-core] " Niklaus Giger [not found] ` <448DD841.1040906@domain.hid> 0 siblings, 2 replies; 13+ messages in thread From: Jan Kiszka @ 2006-06-12 20:33 UTC (permalink / raw) To: Jim Cromie; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 1470 bytes --] 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 [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 250 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Xenomai-core] Re: Porting xeno-{info|load|test} to a busybox system 2006-06-12 20:33 ` Jan Kiszka @ 2006-06-12 21:23 ` Niklaus Giger [not found] ` <448DD841.1040906@domain.hid> 1 sibling, 0 replies; 13+ messages in thread From: Niklaus Giger @ 2006-06-12 21:23 UTC (permalink / raw) To: xenomai Jan Kiszka wrote: <..> > 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)? Yes and no. As I told there is no urgent need to apply this before 2.2. And improvement/more insight into the whole busybox would be a great idea. I am busy preparing the next step for the whole xeno-test/buildbot infrastructure, which will feature: - Small additions to my patch for xeno-test (done) - Buildbot will run automatically xeno-test on my PPC405 board as the last build step (done). But it will at the moment only show, that there are problems with my PPC405 target (see a separat thread). - Documentation rework (mostly done) - Adding a test script to test xeno-test (may be a overkill, but xeno-test accumulated a lot of options, and I like unit test). As nobody committed my patch, I will be much more confident to propose a patch as soon as the unit tests for xeno-test work. Best regards --- Niklaus Giger ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <448DD841.1040906@domain.hid>]
* Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system [not found] ` <448DD841.1040906@domain.hid> @ 2006-06-14 19:01 ` Jim Cromie 2006-06-15 15:01 ` Philippe Gerum 0 siblings, 1 reply; 13+ messages in thread From: Jim Cromie @ 2006-06-14 19:01 UTC (permalink / raw) To: Philippe Gerum; +Cc: Jan Kiszka, xenomai 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. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system 2006-06-14 19:01 ` [Xenomai-core] " Jim Cromie @ 2006-06-15 15:01 ` Philippe Gerum 0 siblings, 0 replies; 13+ messages in thread From: Philippe Gerum @ 2006-06-15 15:01 UTC (permalink / raw) To: Jim Cromie; +Cc: xenomai Jim Cromie wrote: > 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. > > Would this fit with an automated test 'bot? Niklaus? -- Philippe. ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2006-06-15 15:01 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-25 19:34 [Xenomai-core] Porting xeno-{info|load|test} to a busybox system Niklaus Giger
2006-05-26 13:52 ` Jan Kiszka
2006-05-26 16:52 ` Niklaus Giger
2006-05-27 16:42 ` Jan Kiszka
2006-05-28 10:00 ` Niklaus Giger
2006-05-28 10:45 ` Jan Kiszka
2006-05-28 14:41 ` Niklaus Giger
2006-05-29 11:40 ` Jan Kiszka
2006-06-06 20:32 ` Jim Cromie
2006-06-12 20:33 ` Jan Kiszka
2006-06-12 21:23 ` [Xenomai-core] " Niklaus Giger
[not found] ` <448DD841.1040906@domain.hid>
2006-06-14 19:01 ` [Xenomai-core] " Jim Cromie
2006-06-15 15:01 ` Philippe Gerum
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.