Skip to content

spawn hook: roll the chdir translation to the 3.1–3.4 series (#152's completion) - #155

Merged
ronaldtse merged 2 commits into
mainfrom
spawn-chdir-series-roll
Nov 11, 2026
Merged

ronaldtse merged 2 commits into
mainfrom
spawn-chdir-series-roll

Conversation

@ronaldtse

Copy link
Copy Markdown
Contributor

What

#153 landed the spawn-chdir translation on the 4.0 series only. Series
3.1/3.2/3.3/3.4 never got the arm, so a 3.x runtime's
Open3.popen3(..., chdir: <in-image dir>) still dies
Errno::ENOENT — tebako-packages/metanorma#124's html-xml check fails on
both ruby-3.3 legs (macOS arm64 + windows) on exactly this
(tebako-runtime-ruby#333; the issue's minimal repro is
Open3.capture3(exe, chdir: "/pkg") on v0.17.8).

The change

#153's arm verbatim (the weak-extern discipline included — a runtime
linked against a pre-verb unit passes the chdir through) in both
tfs_spawn_prepare variants of the four 3.x series patches. Regenerated
mechanically (current patch applied to the pristine upstream, the arm
inserted, the diff regenerated) — no hand-edited hunks.

Verification

tools/apply per series on its latest version (3.1.7 / 3.2.11 / 3.3.9 /
3.4.9): each applies clean and the patched tree carries
exec_materialize_dir. The compile gate runs in CI.

…completion)

The #153 fix landed on the 4.0 series only — the 3.1/3.2/3.3/3.4 patches
never carried the chdir arm, so a 3.x runtime's spawn with chdir: into
the VFS still dies ENOENT (the metanorma 1.18.5 html-xml legs on ruby
3.3, tebako-runtime-ruby#333).

The arm is #153's own text verbatim (the weak-extern discipline
included); the regeneration is mechanical — the current patch applied to
the pristine upstream, the arm inserted, the diff regenerated — never a
hand-edited hunk. tools/apply proves each series on its latest version
(3.1.7 / 3.2.11 / 3.3.9 / 3.4.9), and each patched tree carries the verb.
The vendored stub mirrors the real c_api surface the patches use; the
verb shipped in the v2.8.74 link unit but the stub never gained it, so
the 3.x series roll's smoke legs died on the undeclared identifier.
Declared beside its exec sibling.
@ronaldtse
ronaldtse merged commit cae17c8 into main Nov 11, 2026
65 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants