test: retarget Pattern-A combined-feed gates to sep .sepwork layout (M4 E3, #94)

94a of the C-mig2 split (rob rule-11): 13 Pattern-A gates that fed a
.combined.ww to w6c/w6c_ww now drive two --sep builds (ww / ww_ww) and
byte-diff the concatenated per-package .sepwork/*.s, mirroring #93's
convention. Lands pre-flip while combined.ww still exists as the
reversible safety net. Test-only; all 5 binary pins HOLD.

989_enumcap_run deferred to 94b (its decisive assertion is a combined.ww
content diff, not a .s diff).
This commit is contained in:
2026-06-18 16:44:41 +09:00
parent 7b6f24adea
commit bbd2ad390a
14 changed files with 377 additions and 391 deletions

View File

@@ -122,19 +122,23 @@ positive(const char *bin, const char *cwd, const char *pkg, int idx)
goto out;
}
/* Drive the package file as the build target → its decls are the
* PRIMARY module (imported==0) of the resolved unit; the producer's
* primary filter then yields exactly this package's interface. The
* library has no main, so the build's link step fails — the
* `.combined.ww` is written before codegen (cf 989_lib_byteid), and
* only it matters here, so the exit code is deliberately ignored. */
/* #94 sep layout: drive the package file as the --sep build target →
* its decls are the PRIMARY module of the resolved ROOT unit, which the
* producer's primary filter narrows to exactly this package's
* interface. The root unit's amalgamated source is composed at
* <stem>.sepwork/__root.unit.ww BEFORE codegen; the library has no
* main so the link step fails, but the unit (the only thing that
* matters here) is already written, so the exit code is deliberately
* ignored. WW_PKGCACHE is pinned under td so out/.pkgcache is
* untouched. */
snprintf(cmd, sizeof cmd,
"cd %s && timeout 180 %s/ww build -I %s/lib %s.ww >/dev/null 2>&1",
td, bin, cwd, pkg);
"cd %s && WW_PKGCACHE=%s/pkgc timeout 180 %s/ww build --sep "
"-I %s/lib -o %s/%s %s.ww >/dev/null 2>&1",
td, td, bin, cwd, td, pkg, pkg);
runwait(cmd);
char comb[1100], cs[1100], ws[1100];
snprintf(comb, sizeof comb, "%s/%s.combined.ww", td, pkg);
snprintf(comb, sizeof comb, "%s/%s.sepwork/__root.unit.ww", td, pkg);
snprintf(cs, sizeof cs, "%s/cs.wwi", td);
snprintf(ws, sizeof ws, "%s/ww.wwi", td);
if (access(comb, 0) != 0) {