You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 094195f
Browse filesBrowse the repository at this point in the historyBrowse files
Bounded tool-build paths: owner-relative object addresses, a short sub-build scratch, extended-length opens on Windows (#641 item 3; M7, M8, M9)
M7. A source outside the package that declares it (a build program's
mcpp::source under a dependency's root) is addressed as
obj/<declaring>/__pkg/<owning package>/<path inside it>, or
obj/<declaring>/__ext/<8-hex hash of its directory>/ when no package contains
it. The mirror of the declaring-package-relative path, with one __up per
level, is gone for these sources; sources inside their declaring package,
root-owned flat addresses, the #233 census and backstop, and the cache address
(packageRel) are unchanged. In the root census branch the escaping form
applies only where the mirrored prefix was used (a basename collision), so the
flat obj/<name> of a generated OUT_DIR source (#239) is unchanged.
M8. The host-tool sub-build scratch moves from <entry>/build-<hash> to
<cache>/tool/.build/<hash of entry and consuming work root>
(tool_store::scratch_dir), keeping per-consumer isolation, re-run reuse and
removal after publish; the entry layout is unchanged.
M9. mcpp::platform::fs::extended_length (identity outside Windows; absolute,
normal, backslash, \\?\ or \\?\UNC\ form on Windows, idempotent) with the pure
spelling rule windows_extended_length_spelling. Call sites, enumerated from the
$mcpp rules of ninja_backend.cppm and the __action-stamp wrapper:
src/cli/cmd_build.cppm cmd_dyndep: --output; the --expect-* ddi read;
emit_dyndep_single input; emit_dyndep_from_files inputs
src/cli/cmd_build.cppm cmd_stage: source and --output (stage_file)
src/cli/cmd_build.cppm cmd_bmi_equal: both paths (bmi_equivalent)
src/cli/cmd_build.cppm cmd_coff_def: each object read; the .def write
src/cli/cmd_build.cppm cmd_bmi_compile: --bmi --slot --sem --command-file
--dep-from --dep-to (not --self, an executable)
src/cli/cmd_build.cppm cmd_bmi_supervise: --slot --token --command-file
src/cli/cmd_build.cppm cmd_bmi_await: --slot --object
src/cli.cppm __action-stamp: each stamp
Downstream opens receive the converted paths. Two follow-ons: the detached
compile's log opens with CreateFileW (CreateFileA does not honour the prefix
past MAX_PATH), and CompileRequest::bmiTarget keeps ninja's spelling of the
BMI for the copied depfile's target, which must not change.
Tests: unit ObjectAddress.ASourceUnderAnotherPackageIsAddressedByThatPackage,
ObjectAddress.AnUnownedEscapingSourceIsAddressedByAHashOfItsDirectory (both
fail on the previous object_for), ToolStoreScratch.IsShortPerConsumerAndStable,
PlatformFs.ExtendedLength* (four); e2e 698 (leg A fails on 2026.9.15.1 with
obj/installer/__up/__up/dep/platform/impl/helper.o). Docs: 30-build-mcpp and
its Chinese mirror.
0 commit comments