Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
463 changes: 463 additions & 0 deletions .agents/docs/2026-07-22-issue267-269-impl-plan.md

Large diffs are not rendered by default.

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .github/workflows/ci-linux-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ jobs:

- name: Bootstrap xlings + released mcpp
run: |
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v0.4.67
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v0.4.68
export PATH="$HOME/.xlings/subos/current/bin:$PATH"
xlings update
xlings install mcpp -y -g
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/cross-build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,17 +92,17 @@ jobs:
- name: Bootstrap mcpp via xlings
env:
XLINGS_NON_INTERACTIVE: '1'
# 0.4.67 (current) — kept in lock-step with the xlings the release
# is built/bundled against (release.yml). Bumped 0.4.62 -> 0.4.67 for
# mcpp#238: xlings 0.4.67 carries the multi-index_repo install fix
# (openxlings/xlings#374, commit cf9b60d5) so a workspace member with
# >=2 inherited index_repos installs uncached packages instead of
# failing silently. A past 0.4.61 "download 404
# 0.4.68 (current) — kept in lock-step with the xlings the release
# is built/bundled against (release.yml). 0.4.67 carried the
# multi-index_repo install fix (openxlings/xlings#374); 0.4.68 adds
# per-repo index artifact sources (openxlings/xlings#377) so the
# mcpplibs index syncs via artifact with git as fallback (mcpp#269).
# A past 0.4.61 "download 404
# for mcpp@<pin>" was NOT a version bug — the xlings-res/mcpp GitHub
# release assets were uploaded in a broken state (records present,
# blobs missing → 404 on GET); re-uploaded clean. The stale-INDEX
# half is handled by the marker-clear below.
XLINGS_VERSION: '0.4.67'
XLINGS_VERSION: '0.4.68'
run: |
tarball="xlings-${XLINGS_VERSION}-linux-x86_64.tar.gz"
curl -fsSL -o "/tmp/${tarball}" \
Expand Down Expand Up @@ -215,7 +215,7 @@ jobs:
- name: Bootstrap mcpp via xlings
env:
XLINGS_NON_INTERACTIVE: '1'
XLINGS_VERSION: '0.4.67'
XLINGS_VERSION: '0.4.68'
run: |
tarball="xlings-${XLINGS_VERSION}-linux-x86_64.tar.gz"
curl -fsSL -o "/tmp/${tarball}" \
Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ jobs:
# Pin xlings to a known-good version. The upstream install
# script always grabs `latest` (no version override), so we
# download + self-install manually to avoid broken releases.
XLINGS_VERSION: '0.4.67'
XLINGS_VERSION: '0.4.68'
run: |
if [ ! -x "$HOME/.xlings/subos/default/bin/xlings" ]; then
tarball="xlings-${XLINGS_VERSION}-linux-x86_64.tar.gz"
Expand Down Expand Up @@ -278,10 +278,10 @@ jobs:
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "tag=v$VERSION" >> "$GITHUB_OUTPUT"

- name: Bootstrap mcpp via xlings (latest 0.4.67)
- name: Bootstrap mcpp via xlings (latest 0.4.68)
env:
XLINGS_NON_INTERACTIVE: '1'
XLINGS_VERSION: '0.4.67'
XLINGS_VERSION: '0.4.68'
run: |
tarball="xlings-${XLINGS_VERSION}-linux-x86_64.tar.gz"
curl -fsSL -o "/tmp/${tarball}" \
Expand Down Expand Up @@ -336,13 +336,13 @@ jobs:
exec "$(dirname "$0")/bin/mcpp" "$@"
LAUNCHER
chmod +x "$STAGING/$WRAPPER/mcpp"
# Bundle the aarch64 xlings (0.4.67) so install.sh consumers on aarch64
# Bundle the aarch64 xlings (0.4.68) so install.sh consumers on aarch64
# get an aarch64 xlings, not the x86_64 bootstrap one.
XLA="xlings-0.4.67-linux-aarch64.tar.gz"
XLA="xlings-0.4.68-linux-aarch64.tar.gz"
if curl -fsSL -o "/tmp/$XLA" \
"https://github.com/openxlings/xlings/releases/download/v0.4.67/$XLA"; then
"https://github.com/openxlings/xlings/releases/download/v0.4.68/$XLA"; then
tar -xzf "/tmp/$XLA" -C /tmp
XLBIN=$(find /tmp/xlings-0.4.67-linux-aarch64 -path '*/bin/xlings' -type f | head -1)
XLBIN=$(find /tmp/xlings-0.4.68-linux-aarch64 -path '*/bin/xlings' -type f | head -1)
if [ -n "$XLBIN" ]; then
mkdir -p "$STAGING/$WRAPPER/registry/bin"
cp "$XLBIN" "$STAGING/$WRAPPER/registry/bin/xlings"
Expand Down Expand Up @@ -417,7 +417,7 @@ jobs:
- name: Bootstrap mcpp via xlings
env:
XLINGS_NON_INTERACTIVE: '1'
XLINGS_VERSION: '0.4.67'
XLINGS_VERSION: '0.4.68'
run: |
if [ ! -x "$HOME/.xlings/subos/default/bin/xlings" ]; then
WORK=$(mktemp -d)
Expand Down Expand Up @@ -599,7 +599,7 @@ jobs:
shell: bash
env:
XLINGS_NON_INTERACTIVE: '1'
XLINGS_VERSION: '0.4.67'
XLINGS_VERSION: '0.4.68'
run: |
WORK=$(mktemp -d)
zipfile="xlings-${XLINGS_VERSION}-windows-x86_64.zip"
Expand Down
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,25 @@
> 本文件追踪 `mcpp-community/mcpp` 公开仓的版本演进。
> 格式参考 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/)。

## [0.0.103] — 2026-07-22

> #267/#269:索引侧健壮化一批——mcpplibs 索引 URL 组织迁移(不再依赖 GitHub 重定向)+ 采纳 xlings 0.4.68 per-repo artifact 来源(索引同步不再硬依赖可用的 git)。设计见 `.agents/docs/2026-07-22-issue267-269-index-artifact-and-org-migration-design.md`。

### 修复

- **mcpplibs 索引 URL 仍指向已迁移的旧组织**(#267-A):索引仓已迁 `mcpplibs/mcpp-index`,mcpp 4 处硬编码旧 `mcpp-community` URL 全靠 GitHub 仓库重定向才能工作——旧名一旦被再次占用即静默指向错误内容。新/旧 URL 与 artifact base 收敛为 `mcpp::config` 三常量;`canonicalize_legacy_index_names` 导出并承担"URL 归一→名字迁移→artifact 填充→去重"单循环(**URL 归一先行**,老配置的名字迁移仍命中、新旧条目在去重处折叠);存量安装经既有文本迁移钩子治愈(config.toml 与 registry `.xlings.json` 的 URL 就地替换),publish Fork 提示与 docs 链接同步。

### 新增

- **采纳 xlings 0.4.68 per-repo artifact 来源**(#269,#267-B):默认 `mcpplibs` 条目(config.toml 模板 + 内存级默认)声明 `artifact = xlings-res/mcpp-index`,`source = "git"` 为显式退出口;seed 管线由 `(name,url)` pair 升级为 `SeedRepo{name,url,artifact,source}`,非空才发射——无 artifact 的仓输出逐字节不变(测试锁定)。存量 registry `.xlings.json` 唯一治愈通道是文本迁移:URL 归一后就地注入 artifact 字段,幂等闸=res base 已出现即跳过,双间距变体覆盖 mcpp/xlings 两个写者,`subos`/版本绑定等无关状态逐字节保留(**不整文件重生成**)。旧 xlings(<0.4.68)安全忽略新字段,发布端 `xlings-res/mcpp-index` 布局实测零改动。
- **项目级 `[indices]` artifact/source**(#269 可选项):`IndexSpec` 增两字段,mcpp.toml 与 config.toml `[indices]` 长格式同步解析,经项目 seed 透传;`artifact_applicable()` 编码设计规则——**rev/tag/branch pin(及本地 path)强制 git**(artifact 通道只跟 latest pointer),声明了 artifact 但不适用时告警而非静默同步错误版本。
- **捆绑 xlings pin 0.4.67 → 0.4.68**(release/cross-build/e2e 三 workflow):0.4.68 携 openxlings/xlings#377(自定义 index artifact)/#380(shim env 去重)。陈旧无消费的 `kXlingsVersion`(0.4.51)对齐至 0.4.68 并由 `mcpp self env` 打印,常量不再能静默漂移。

### 备注

- e2e 新增 151:fresh init 播种新 URL + artifact;老 org URL/无 artifact 的存量 config.toml 与 `.xlings.json`(pretty/compact 双间距)就地治愈且幂等,无关 `.xlings.json` 状态保留。
- CN region 对象形态(`{"GLOBAL":..,"CN":..}`)待 gitcode 侧 `xlings-res/mcpp-index` 镜像仓真实部署后再扩(设计文档 P5),避免声明 404 base 白付探测。

## [0.0.102] — 2026-07-22

> 四条 issue 一个批次:#261 windows 命令行长度、#257 clang 依赖跟踪缺口、#258 条件段表达力、#254 host/target 双轴不自洽。贯穿主线是**同一决策不许两处推导**,以及本批次新立的第二条不变量**失败必须响,不许静默降级**。设计见 `.agents/docs/2026-07-22-v0.0.102-batch-254-261-design.md`,issue 裁决见 `.agents/docs/2026-07-22-issue-triage-254-261.md`。
Expand Down
2 changes: 1 addition & 1 deletion docs/00-getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ Declare dependencies in `mcpp.toml`:
```

`mcpp build` automatically resolves SemVer constraints against the
[mcpp-index](https://github.com/mcpp-community/mcpp-index), fetches the source,
[mcpp-index](https://github.com/mcpplibs/mcpp-index), fetches the source,
and adds it to the build graph. For a complete example, see `02-with-deps` in
[01 — Examples](01-examples.md).

Expand Down
2 changes: 1 addition & 1 deletion docs/04-build-from-source.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,5 +93,5 @@ mcpp is in early iteration and its interfaces may change. Before submitting a PR

- [Community forum](https://forum.d2learn.org/category/20)
- Chat group QQ: 1067245099
- [mcpp-index](https://github.com/mcpp-community/mcpp-index) — the default package index
- [mcpp-index](https://github.com/mcpplibs/mcpp-index) — the default package index
- [mcpplibs](https://github.com/mcpplibs) — the companion collection of modular C++ libraries
2 changes: 1 addition & 1 deletion docs/zh/00-getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ mcpp test # 编译并运行 tests/**/*.cpp(gtest 风格)
```

`mcpp build` 将自动从
[mcpp-index](https://github.com/mcpp-community/mcpp-index) 解析 SemVer
[mcpp-index](https://github.com/mcpplibs/mcpp-index) 解析 SemVer
约束、拉取源码并加入编译图。完整示例参见
[01 — 示例项目](01-examples.md) 中的 `02-with-deps`。

Expand Down
2 changes: 1 addition & 1 deletion docs/zh/04-build-from-source.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,5 +100,5 @@ mcpp 处于早期迭代阶段,接口可能调整,提交 PR 前请注意:

- [社区论坛](https://forum.d2learn.org/category/20)
- 交流群 QQ: 1067245099
- [mcpp-index](https://github.com/mcpp-community/mcpp-index) — 默认包索引
- [mcpp-index](https://github.com/mcpplibs/mcpp-index) — 默认包索引
- [mcpplibs](https://github.com/mcpplibs) — 配套的模块化 C++ 库集合
2 changes: 1 addition & 1 deletion mcpp.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "mcpp"
version = "0.0.102"
version = "0.0.103"
description = "Modern C++ build & package management tool"
license = "Apache-2.0"
authors = ["mcpp-community"]
Expand Down
Loading
Loading