From: Leonid Krivoshein <klark.devel@gmail.com> To: make-initrd@lists.altlinux.org Subject: Re: [make-initrd] [PATCH v1 29/41] fork pipeline: bootchain-sh-functions: resolve_target modified Date: Sun, 26 Sep 2021 15:29:11 +0300 Message-ID: <a949a784-9944-0977-5a53-2ef0f26b4181@gmail.com> (raw) In-Reply-To: <dc08ee53-0f86-6953-5fee-02f74260a06c@gmail.com> [-- Attachment #1: Type: text/plain, Size: 648 bytes --] Алексей, привет! Поздно заметил, что сильно налажал с resolve_target() даже в части адресации при перегрузке шагов, в следующей итерации исправлю, а пока прилагаю текущий патч. Можно ссылаться на результаты пройденных шагов, нумеруя от нуля слева направо: pipe0[/что-то-там], pipe1[/что-то-ещё], ..., а также в обратную сторону: step-1[/что-то-там] (предыдущий шаг), step-2[/что-то-ещё] (перед предыдущим), ..., при этом адресация работает в отношении шагов, полученных на старте или после перегрузки шагов через bc_nextchain(). Поскольку данный кейс нигде не использовался, заметил слишком поздно, когда продолжил работать над кодом... [-- Attachment #2: fix-resolve_target.patch --] [-- Type: text/x-patch, Size: 2546 bytes --] commit 3827df94d66c75873c53f0949960a294d7a7f88a Author: Leonid Krivoshein <klark@altlinux.org> Date: Sun Sep 26 04:48:04 2021 +0300 fixed resolve_target(), reverse addressation added diff --git a/bootchain-core/data/bin/bootchain-sh-functions b/bootchain-core/data/bin/bootchain-sh-functions index 086d698..4f416d2 100644 --- a/bootchain-core/data/bin/bootchain-sh-functions +++ b/bootchain-core/data/bin/bootchain-sh-functions @@ -49,25 +49,33 @@ get_parameter() resolve_target() { local target="$1" + local where="${target%%/*}" + local n="${#where}" - case "${target%%/*}" in + target="${target:$n}" + + case "$where" in '') ;; pipe[0-9]|pipe[0-9][0-9]|pipe[0-9][0-9][0-9]) - target="$mntdir/dst/step${target:4}" + n="$(( ${basestep:-0} + ${where:4} ))" + [ ! -d "$mntdir/dst/step$n" ] && return 0 || + target="$mntdir/dst/step${n}${target}" ;; - step[0-9]|step[0-9][0-9]|step[0-9][0-9][0-9]) - target="$mntdir/dst/$target" + step-[1-9]|step-[1-9][0-9]|step-[1-9][0-9][0-9]) + n="$(( ${stepnum:-0} - ${where:5} ))" + [ "${basestep:-0}" -le "$n" ] && [ -d "$mntdir/dst/step$n" ] && + target="$mntdir/dst/step${n}${target}" || return 0 ;; *) if [ -z "${prevdir-}" ]; then - message "no previous step results to use with $PROG" + message "no previous step results to use with $name" return 0 fi - if [ "$target" = DEVNAME ] && [ -s "$prevdir/DEVNAME" ]; then - read -r target <"$prevdir/DEVNAME" ||: + if [ "$where" = DEVNAME ] && [ -s "$prevdir/DEVNAME" ]; then + read -r target <"$prevdir/DEVNAME" 2>/dev/null ||: else - target="$prevdir/${target#/}" + target="$prevdir/${where#/}${target}" fi ;; esac diff --git a/bootchain-core/data/sbin/bootchain-loop b/bootchain-core/data/sbin/bootchain-loop index 1cf00d3..59c2ac7 100755 --- a/bootchain-core/data/sbin/bootchain-loop +++ b/bootchain-core/data/sbin/bootchain-loop @@ -6,6 +6,7 @@ bcretry="${bcretry:-1}" stepnum="${stepnum:-0}" chainsteps="${chainsteps-}" prevdir="${prevdir-}" +basestep="$stepnum" BC_IM_supported= @@ -83,7 +84,8 @@ while [ -n "$chainsteps" ]; do else message "[$callnum] Handler: $exe" - export name callnum datadir destdir prevdir + export name callnum datadir destdir + export basestep stepnum prevdir for try in 1 2 3 4 5; do [ -z "$BC_DEBUG" ] || @@ -128,6 +130,7 @@ while [ -n "$chainsteps" ]; do debug "chain will be reloaded by $BC_NEXTCHAIN:" fdump "$BC_NEXTCHAIN" . "$BC_NEXTCHAIN" + basestep="$stepnum" run rm -f -- "$BC_NEXTCHAIN" fi
prev parent reply other threads:[~2021-09-26 12:29 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-09-24 15:58 Leonid Krivoshein 2021-09-26 12:29 ` Leonid Krivoshein [this message]
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=a949a784-9944-0977-5a53-2ef0f26b4181@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