diff options
Diffstat (limited to 'src/boot-env/pbs/rootfs/bin')
-rwxr-xr-x | src/boot-env/pbs/rootfs/bin/bbinit | 19 | ||||
-rwxr-xr-x | src/boot-env/pbs/rootfs/bin/handleEvents | 38 |
2 files changed, 57 insertions, 0 deletions
diff --git a/src/boot-env/pbs/rootfs/bin/bbinit b/src/boot-env/pbs/rootfs/bin/bbinit new file mode 100755 index 00000000..3fd67612 --- /dev/null +++ b/src/boot-env/pbs/rootfs/bin/bbinit @@ -0,0 +1,19 @@ +#!/bin/hush + +# create clean setup +mkdir -p /etc/events.conf +mkdir -p /etc/events.d +rm /etc/events.d/* +for f in $(ls -1 /etc/events) +do + ln -sf /etc/events/$f /etc/events.d/$f +done + +mkdir -p /tmp/event +rm /tmp/event/* +rm /tmp/events + +# start bbinit +inotifyd /bin/handleEvents /tmp/event/:n & +# initial call (executing all zero dependent scipts) +handleEvents diff --git a/src/boot-env/pbs/rootfs/bin/handleEvents b/src/boot-env/pbs/rootfs/bin/handleEvents new file mode 100755 index 00000000..9bb78951 --- /dev/null +++ b/src/boot-env/pbs/rootfs/bin/handleEvents @@ -0,0 +1,38 @@ +#!/bin/hush + +# wait for lock +while [ -f /tmp/bbinit.lock ] +do + sleep 0.1 +done + +# lock eventhandler +touch /tmp/bbinit.lock + +# source list of finished events +[ -f /tmp/events ] && . /tmp/events + +# go through all unhandled events +for f in $( ls -1 /etc/events.d/ ) +do + . /etc/events.d/$f + + # check dependencies + eval dep=\$${f}_depends + havealldeps=1 + for d in $dep + do + eval havedep=\$have${d} + [ "x$havedep" == "x1" ] || havealldeps=0 + done + + # if nothing is missing execute script + if [ "x$havealldeps" == "x1" ]; then + echo executing $f + /etc/bbinit.d/$f & + rm /etc/events.d/$f + fi +done + +# unlock eventhandler +rm /tmp/bbinit.lock |