The Windows build of zixl gives identical output #15

Closed
opened 2026-10-14 01:26:57 -05:00 by jeff · 1 comment
Owner

Parent

Part of #1

What to build

Proof that zixl on Windows is the same program as zixl on Linux. The VM tests cross-compile zixl.exe, run it under Wine on every fixture with the same SOURCE_DATE_EPOCH and arguments, and require its installer packages to be byte-identical to the Linux build's. This covers Windows path handling, \ separators, line endings and the command line's file source on Windows in one comparison.

Acceptance criteria

  • VM test: for every fixture and architecture, cmp finds the Windows build's installer package identical to the Linux build's.
  • VM test: the same holds for zixl -E output and for external cabinets.
  • A difference, when there is one, is reported naming the fixture and the first differing offset.
## Parent Part of #1 ## What to build Proof that zixl on Windows is the same program as zixl on Linux. The VM tests cross-compile `zixl.exe`, run it under Wine on every fixture with the same `SOURCE_DATE_EPOCH` and arguments, and require its installer packages to be byte-identical to the Linux build's. This covers Windows path handling, `\` separators, line endings and the command line's file source on Windows in one comparison. ## Acceptance criteria - [ ] VM test: for every fixture and architecture, `cmp` finds the Windows build's installer package identical to the Linux build's. - [ ] VM test: the same holds for `zixl -E` output and for external cabinets. - [ ] A difference, when there is one, is reported naming the fixture and the first differing offset.
jeff self-assigned this 2026-10-14 04:15:59 -05:00
Author
Owner

Done in 9ada014; CI run 9 is green.

  • The check: tests/e2e/windows.sh, run by the flake's windows check, cross-compiles zixl.exe in Nix and runs it under Wine. For every fixture on x86, x64 and arm64, and every preprocessor fixture with -E, it requires the bytes the Linux build writes. A difference is reported with the fixture and cmp's first differing byte.
  • Windows paths: a fixture of its own, tests/e2e/windows/backslashes.wxs, writes its source paths and an include with backslashes. wixl can't read that form at all.
  • Excluded: only $(sys.SOURCEFILEPATH), which is an absolute path in each platform's own form (/home/… against Z:\home\…), is left out of the -E comparison.
  • No zixl changes were needed: once both builds were given the same SOURCE_DATE_EPOCH, everything matched.
Done in 9ada014; CI run 9 is green. - **The check:** `tests/e2e/windows.sh`, run by the flake's `windows` check, cross-compiles `zixl.exe` in Nix and runs it under Wine. For every fixture on x86, x64 and arm64, and every preprocessor fixture with `-E`, it requires the bytes the Linux build writes. A difference is reported with the fixture and `cmp`'s first differing byte. - **Windows paths:** a fixture of its own, `tests/e2e/windows/backslashes.wxs`, writes its source paths and an include with backslashes. wixl can't read that form at all. - **Excluded:** only `$(sys.SOURCEFILEPATH)`, which is an absolute path in each platform's own form (`/home/…` against `Z:\home\…`), is left out of the `-E` comparison. - **No zixl changes were needed:** once both builds were given the same `SOURCE_DATE_EPOCH`, everything matched.
jeff closed this issue 2026-10-14 05:03:54 -05:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
jeff/zixl#15
No description provided.