From adcd73b017dacbd42efc5bc7bf921e3ffd41e10d Mon Sep 17 00:00:00 2001 From: vxtls <187420201+vxtls@users.noreply.github.com> Date: Sat, 7 Mar 2026 16:15:18 -0500 Subject: [PATCH] fix(resume): preserve stage0-image incremental continuation by remapping init entry after script regeneration --- rootfs.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/rootfs.py b/rootfs.py index ce96a427..bd6ed10d 100755 --- a/rootfs.py +++ b/rootfs.py @@ -194,14 +194,32 @@ legacy_network_block = ( ) regen_block = ( regen_marker + "\\n" + + 'resume_entry=""\\n' + + 'resume_root=""\\n' + + 'resume_pkg=""\\n' + + 'if [ -f "$0" ]; then\\n' + + 'resume_entry="$(sed -n \'s/.*bash \\\\(\\\\/steps[^ ]*\\\\/[0-9][0-9]*\\\\.sh\\\\).*/\\\\1/p\' "$0" | head -n1)"\\n' + + 'fi\\n' + + 'if [ -n "${resume_entry}" ]; then\\n' + + 'resume_root="$(dirname "${resume_entry}")"\\n' + + 'if [ -f "${resume_entry}" ]; then\\n' + + 'resume_pkg="$(sed -n \'s/^build \\\\([^ ]*\\\\) .*/\\\\1/p\' "${resume_entry}" | head -n1)"\\n' + + 'fi\\n' + + 'fi\\n' + 'if [ -x /script-generator ] && [ -f /steps/manifest ]; then\\n' + '/script-generator /steps/manifest\\n' + 'fi\\n' + 'if [ -x /script-generator ] && [ -f /steps-guix/manifest ]; then\\n' + '/script-generator /steps-guix/manifest /steps\\n' + 'fi\\n' - + 'if [ -f /steps-guix/0.sh ] && grep -Eq "/steps-guix/[1-9][0-9]*\\\\.sh" "$0"; then\\n' - + 'if ! bash /steps-guix/0.sh; then\\n' + + 'if [ -n "${resume_pkg}" ] && [ -d "${resume_root}" ]; then\\n' + + 'mapped_entry="$(grep -F -l "build ${resume_pkg} " "${resume_root}"/[0-9]*.sh 2>/dev/null | head -n1 || true)"\\n' + + 'if [ -n "${mapped_entry}" ]; then\\n' + + 'resume_entry="${mapped_entry}"\\n' + + 'fi\\n' + + 'fi\\n' + + 'if [ -n "${resume_entry}" ] && [ -f "${resume_entry}" ] && [ "${resume_entry}" != "$0" ]; then\\n' + + 'if ! bash "${resume_entry}"; then\\n' + 'status=$?\\n' + 'echo "bootstrap script failed with status ${status}; dropping to rescue shell" >&2\\n' + 'PATH=/bin:/usr/bin:/sbin:/usr/sbin:${PREFIX}/bin:${PATH}\\n'