Make-initrd development discussion
 help / color / mirror / Atom feed
From: Leonid Krivoshein <klark.devel@gmail.com>
To: make-initrd@lists.altlinux.org
Subject: [make-initrd] [PATCH v1 06/41] fork pipeline: bootchained is a 100% copy of pipelined
Date: Fri, 24 Sep 2021 18:55:59 +0300
Message-ID: <9eec5115-bc86-feb9-2a65-d5a3aed444ed@gmail.com> (raw)

---
  .../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




                 reply	other threads:[~2021-09-24 15:55 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9eec5115-bc86-feb9-2a65-d5a3aed444ed@gmail.com \
    --to=klark.devel@gmail.com \
    --cc=make-initrd@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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