* [make-initrd] [PATCH v1 06/41] fork pipeline: bootchained is a 100% copy of pipelined
@ 2021-09-24 15:55 Leonid Krivoshein
0 siblings, 0 replies; only message in thread
From: Leonid Krivoshein @ 2021-09-24 15:55 UTC (permalink / raw)
To: make-initrd
---
.../bootchain-core/data/sbin/bootchained | 87 +++++++++++++++++++
1 file changed, 87 insertions(+)
create mode 100755
make-initrd/features/bootchain-core/data/sbin/bootchained
diff --git a/make-initrd/features/bootchain-core/data/sbin/bootchained
b/make-initrd/features/bootchain-core/data/sbin/bootchained
new file mode 100755
index 0000000..1d30061
--- /dev/null
+++ b/make-initrd/features/bootchain-core/data/sbin/bootchained
@@ -0,0 +1,87 @@
+#!/bin/bash -efu
+
+. shell-error
+. shell-signal
+
+message_time=1
+pidfile="/var/run/$PROG.pid"
+logfile="/var/log/$PROG.log"
+
+exit_handler()
+{
+ local rc="$?"
+ trap - EXIT
+ rm -f -- "$pidfile"
+ exit $rc
+}
+
+[ ! -f "$pidfile" ] ||
+ fatal "already running"
+
+set_cleanup_handler exit_handler
+echo "$$" >"$pidfile"
+
+. pipeline-sh-functions
+
+
+[ "${RDLOG-}" != 'console' ] ||
+ logfile=/dev/console
+
+exec >"$logfile" 2>&1
+message "Starting server ..."
+
+mkdir -p -- "$mntdir"
+
+mountpoint -q "$mntdir" ||
+ mount -t tmpfs tmpfs "$mntdir" ||:
+
+pipenum=0
+pipe="$PIPELINE"
+datadir=
+destdir=
+
+while [ -n "$pipe" ]; do
+ name="${pipe%%,*}"
+ exe="$handlerdir/$name"
+
+ if [ -x "$exe" ]; then
+ eval "callnum=\"\${callnum_$name:-0}\""
+
+ datadir="$mntdir/src/pipe$pipenum"
+ destdir="$mntdir/dst/pipe$pipenum"
+
+ [ "$pipenum" != 0 ] ||
+ prevdir=""
+
+ mkdir -p -- "$datadir" "$destdir"
+
+ if ! mountpoint -q "$destdir"; then
+ message "[$callnum] Handler: $exe"
+
+ export name callnum datadir destdir prevdir
+
+ rc=0
+ "$exe" || rc=$?
+
+ if [ "$rc" != 0 ]; then
+ [ "$rc" != 2 ] ||
+ break
+ message "[$callnum] Handler failed (rc=$rc)"
+ sleep 1
+ continue
+ fi
+ else
+ message "[$callnum] Handler: $exe skipped"
+ fi
+
+ prevdir="$destdir"
+
+ callnum=$(($callnum + 1))
+ eval "callnum_$name=\"\$callnum\""
+ fi
+
+ pipe="${pipe#$name}"
+ pipe="${pipe#,}"
+
+ pipenum=$(($pipenum + 1))
+done
--
2.21.0
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-09-24 15:55 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-24 15:55 [make-initrd] [PATCH v1 06/41] fork pipeline: bootchained is a 100% copy of pipelined Leonid Krivoshein
Make-initrd development discussion
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/make-initrd/0 make-initrd/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 make-initrd make-initrd/ http://lore.altlinux.org/make-initrd \
make-initrd@lists.altlinux.org make-initrd@lists.altlinux.ru make-initrd@lists.altlinux.com
public-inbox-index make-initrd
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.make-initrd
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git