From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:subject:to:message-id:date:user-agent:mime-version :content-language:content-transfer-encoding; bh=GV1GuynKxG4UArCL5jtM2an37xGp/PESW36L7mHNfe8=; b=mlAXrgTHiri77UI14HvgeP4BPRM2f7fqNpR//dNBrwBpcZ9hzKBLOIfkwX8y2TOb6e jVBdma+Q2BBEAxXWaQFNrn+j8qwukkUM3vNfag2Zh4J6uGKBxONDBlvT08jhs5oi3ZY+ wj567HbZbG8b5rWSszInx7n7BA3nwcfqD87O0KJ6nLRVt02it/oPJ+FWWjClyV6+xERE xGztFS2I7FvbBa3D4kq8m3xedU/rKqk67YWCv0JJovvDXyBzHFJy6G1QhztJ2P4X0Fsy R3YqZE5H5btW9dZwPC1PMxtgaS0bbncVmvPa6nOf6nZHXSVo77L4Fyx2rO/lNaDXHnCU DF/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:subject:to:message-id:date:user-agent :mime-version:content-language:content-transfer-encoding; bh=GV1GuynKxG4UArCL5jtM2an37xGp/PESW36L7mHNfe8=; b=GgXFSMsQeqE5pkLg7aQwJ+wuaxxXhFcLSx35wbfBvtgfYpJS4P6abB4q/O8XzZfWX9 AerR3KS453/0P2YC9GqTPNPS/znO45Nsi3D/9gw+HaBL/xpcYMnoC+jPon3xcfpILAb6 yEflxEIkiXtYlPe12ruU2v3Zt2V7k8sQ7mgRPVSMXzOG2H8sgZTIx1/p7Ni+SKDp6DiD IhswlTu/Sw+K9a9ockFsh7MDyglF9TBppLRLXhC1xikHnQv0qry1jU3lznCmf73TSbJu 1UNct6YuZFMFNfrlneR9a7jtJVyLSCwqzp76PG3CuEy0Q3Lpv7xIKUW/L+dH4RHf3vNp CDXg== X-Gm-Message-State: AOAM531L2dqPIlDVVWdX5O0S7HALXnpmpD0wY/DtMmmUlO5rA/ZzbvoR efJ5JYLgTw7d1EBNyIIjEc7mFQonbyw= X-Google-Smtp-Source: ABdhPJzXmvckhMe4439wxdr/4DKHeyKCYOPlv5L0rjeCcV+eE/hdWI5th6pxBRnDHCOg5QEuwpA9Gg== X-Received: by 2002:a05:6512:2283:: with SMTP id f3mr10186178lfu.525.1632499118829; Fri, 24 Sep 2021 08:58:38 -0700 (PDT) From: Leonid Krivoshein To: make-initrd@lists.altlinux.org Message-ID: <3c3a685a-898d-08f9-5401-0c0c52a48d58@gmail.com> Date: Fri, 24 Sep 2021 18:58:38 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 Content-Type: text/plain; charset=windows-1251; format=flowed Content-Language: ru Content-Transfer-Encoding: 7bit Subject: [make-initrd] [PATCH v1 30/41] fork pipeline: bootchain-sh-functions: API extended X-BeenThere: make-initrd@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: make-initrd@lists.altlinux.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Sep 2021 15:58:42 -0000 Archived-At: List-Archive: --- .../data/bin/bootchain-sh-functions | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/make-initrd/features/bootchain-core/data/bin/bootchain-sh-functions b/make-initrd/features/bootchain-core/data/bin/bootchain-sh-functions index 35cee1e..f8a6e30 100644 --- a/make-initrd/features/bootchain-core/data/bin/bootchain-sh-functions +++ b/make-initrd/features/bootchain-core/data/bin/bootchain-sh-functions @@ -3,14 +3,38 @@ if [ -z "${__bootchain_sh_functions-}" ]; then __bootchain_sh_functions=1 +BC_DEBUG= +BC_LOG_VT=3 + +[ ! -s /etc/sysconfig/bootchain ] || + . /etc/sysconfig/bootchain + . /.initrd/initenv . shell-signal +message_time=1 + +if [ "${ROOT-}" = pipeline ]; then + BC_LOGFILE="${BC_LOGFILE:-/var/log/pipelined.log}" + mntdir="${mntdir:-/dev/pipeline}" + pipeline_mode=1 +else + BC_LOGFILE="${BC_LOGFILE:-/var/log/bootchained.log}" + mntdir="${mntdir:-/dev/bootchain}" + pipeline_mode= +fi + +[ -n "$BC_DEBUG" ] && BC_FGVT_ACTIVATE=1 || + BC_FGVT_ACTIVATE="${BC_FGVT_ACTIVATE:-7}" +BC_NEXTCHAIN=/.initrd/bootchain/bootchain.next +BC_PASSED=/.initrd/bootchain/passed handlerdir=/lib/bootchain + check_parameter() { local _v + eval "_v=\"\${$1-}\"" [ -n "${_v}" ] || fatal "Parameter '$1' required" @@ -50,10 +74,114 @@ resolve_target() printf '%s' "$target" } +debug() +{ + [ -z "$BC_DEBUG" ] || + message "[$callnum] $*" +} + +enter() +{ + debug "ENTER: $*" +} + +leave() +{ + debug "LEAVE: $*" +} + run() { debug "RUN: $*" "$@" || return $? } +fdump() +{ + [ -n "$BC_DEBUG" ] && [ -f "$1" ] || + return 0 + { printf '============================================================\n' + cat -- "$1" ||: + printf '============================================================\n\n' + } 1>&2 +} + +assign() +{ + local _v="" _k="$1" _e="${2-}" + + eval "_v=\"${_e}\"" + eval "${_k}=\"${_e}\"" + debug "LET: ${_k}=\"${_v}\"" +} + +next_bootchain() +{ + local _v="${1-}" + + printf 'chainsteps="%s"\n' "${_v}" >>"$BC_NEXTCHAIN" + debug "BOOTCHAIN REPLACED: '${_v}'" +} + +is_step_passed() +{ + [ -f "$BC_PASSED/$PROG" ] || + return 1 +} + +launch_step_once() +{ + [ ! -f "$BC_PASSED/$PROG" ] || + fatal "this step has been already passed" +} + +break_bc_loop() +{ + enter "break_bc_loop" + + :> "$BC_PASSED/bootchain-loop" + + leave "break_bc_loop" +} + +bc_reboot() +{ + enter "bc_reboot" + + reboot -f -d +} + +bypass_results() +{ + enter "bypass_results" + + local realdir="${1-}" + local srcdir="${realdir:-$prevdir}" + + if [ -n "$srcdir" ] && [ "$srcdir" != "$destdir" ]; then + if [ -d "$realdir" ] || [ -L "$prevdir" ] || + [ "$srcdir" = "${srcdir#$mntdir/}" ] + then + run rmdir -- "$destdir" ||: + run ln -snf -- "$(readlink-e "$srcdir")" "$destdir" + elif mountpoint -q -- "$prevdir"; then + run mkdir -p -- "$destdir" + run mount --move -- "$prevdir" "$destdir" + else + run rmdir -- "$destdir" ||: + run mv -f -- "$prevdir" "$destdir" + fi + fi + + leave "bypass_results" +} + +initrd_version() +{ + [ ! -s /etc/initrd-release ] || + . /etc/initrd-release + local __version="${VERSION_ID-}" + printf '%s' "INITRAMFS${__version:+ $__version}" +} + fi # __bootchain_sh_functions -- 2.21.0