Skip to content

2026.11.14.1: MCPP_TARGET_SDK; a planned row served by the chosen platform; Windows runner lookup; test discovery skips a package below tests/; release publishes GitHub, index PR, then optional GitCode - #935

Merged
Sunrisepeak merged 4 commits into
mainfrom
docs/2026.11.14-release-and-macos-sdk
Nov 14, 2026

Conversation

@Sunrisepeak

@Sunrisepeak Sunrisepeak commented Nov 14, 2026 •

Copy link
Copy Markdown
Member

Design: .agents/docs/2026-11-14-release-publication-and-macos-sdk-design.md (supplements the 2026-11-14 CI and release time-cost design).

The SDK a link names (M1)

  • A build program reads MCPP_TARGET_SDK: the Apple SDK directory the link names with -isysroot, empty when the link names none. mcpp::build::link_sdk(tc) answers both the link line (flags.cppm) and the build-program environment (toolchain_env.cpp), so the two cannot disagree. target_sdk() in mcpp.hostprogram.
  • The variable is in the build program's re-run key (the contract env vector).
  • Cause it serves: since 2026.8.25.2 every Mach-O link on a macOS host carries -isysroot, while build_program.cppm still said a requested target puts no SDK on the link. openkal-macos supplied its three-name libSystem stub on MCPP_TARGET_REQUESTED, which shadowed the SDK's complete one (undefined symbol: strlen, canary cxx aarch64-macos test, every run since it was added). The openkal-macos change (M2: stub only when MCPP_TARGET_SDK is empty) is a separate patch release; an older mcpp gives no variable, which reads as empty and keeps today's behaviour.
  • Tests: LinkLineGolden/TheLinkAndTheBuildProgramsNameOneSdk. Docs: docs/30-build-mcpp.md (en, zh).

Publication (B1-B4)

  • publish-ecosystem: GitHub mirror (MIRROR_HOSTS=gh, 10 min) -> index PR -> GitCode mirror (MIRROR_HOSTS=gtc, 45 min) only when dispatched with gitcode (default false; a tag push mirrors GitHub only). v2026.11.13.1 spent 713 s on GitCode, 604 s per archive, against 64 s for all GitHub assets.
  • .github/tools/index_pr.py writes the xim-pkgindex entry from the sealed mcpp-release.json artifact (no download, no recomputed digest), body starting with the updater's marker, branch auto/bump-xim-mcpp; an existing PR with the marker, or a recipe that holds the version, ends it with nothing done. Applied to the pre-#1155 mcpp.lua with the real v2026.11.13.1 manifest, it produces xim-pkgindex#1155 byte for byte. bump_index.sh is removed.
  • tests/scripts/test_index_pr.py (in ci.yml): the edit, latest, marker, idempotence, and the workflow's input default and step order.
  • docs/92-release.md (en, zh): pipeline, local MIRROR_HOSTS=gtc mirroring, checklist.

A planned row served by the chosen platform (design §3)

  • A planned row is built when the platform chosen for the request lists it with a toolchain ([platform] targets beside its toolchain, or a [[platform.provider]] that names one), as when a toolchain is named for the build. The platform's statement decides (serves_with_toolchain, the provider list mcpp why platform reads); a directory platform is checked in P1, a package fetched by the pass in P4 followed by the existing platform restart. A platform that does not list the row is named in the refusal.
  • Cause: openkal-platform 0.28.0 lists i686-openkal; --target openkal was refused on that leg for every consumer.
  • Test: PlatformManifest/APlannedRowIsServedByAStatementWithAToolchain; measured locally: served (directory platform, the set), refused (a directory platform without the row; openkal-platform@0.27.1 fetched from the index). Docs: docs/20-toolchains.md (en, zh).

A runner's bare name on Windows

  • The program with the system's suffix (.exe, .cmd, .bat), never a file without one: dirun's package carries bin/dirun (a POSIX launcher) beside bin/dirun.exe, and the launcher was taken (executable format error). Unit tests on Windows.

Test discovery and a package below tests/ (design §4)

  • A directory below the package root that holds its own mcpp.toml is another package; no [test] discover glob finds its files. The default tests/**/*.cpp compiled the sources of a member suite (tests/cts/src/main.cpp, the layout mtest states for a suite with outside inputs) as tests of the root.
  • Test: TestTargets/APackageBelowTestsIsNotItsTests. Docs: docs/08-testing.md (en, zh).

Version 2026.11.14.1; CHANGELOG entry.

Local: mcpp build with 2026.11.13.1; unit/test_link_line_golden 6/6; test_index_pr.py 9/9; workflow assertions, docs style/structure, version pins.

…out GitCode

A build program reads MCPP_TARGET_SDK, the Apple SDK the link names with
-isysroot (empty when it names none), from the same function as the link
line. A package that supplies a libSystem stub for a link without an SDK
asks this instead of MCPP_TARGET_REQUESTED, which on a Mac with --target
said the SDK was absent while the link carried it.

The release mirrors GitHub, then opens the xim-pkgindex pull request from
the sealed mcpp-release.json (index_pr.py, with the updater's marker), and
mirrors GitCode last and only when dispatched with `gitcode`. bump_index.sh
is removed. Design: .agents/docs/2026-11-14-release-publication-and-macos-sdk-design.md
@Sunrisepeak Sunrisepeak changed the title 2026.11.14.1: MCPP_TARGET_SDK for build programs; release publishes GitHub, index PR, then optional GitCode 2026.11.14.1: MCPP_TARGET_SDK; a planned row served by the chosen platform; Windows runner lookup; release publishes GitHub, index PR, then optional GitCode Nov 14, 2026
@Sunrisepeak Sunrisepeak changed the title 2026.11.14.1: MCPP_TARGET_SDK; a planned row served by the chosen platform; Windows runner lookup; release publishes GitHub, index PR, then optional GitCode 2026.11.14.1: MCPP_TARGET_SDK; a planned row served by the chosen platform; Windows runner lookup; test discovery skips a package below tests/; release publishes GitHub, index PR, then optional GitCode Nov 14, 2026
@Sunrisepeak
Sunrisepeak marked this pull request as ready for review November 14, 2026 17:33
@Sunrisepeak
Sunrisepeak merged commit 978cfcd into main Nov 14, 2026
87 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.

1 participant