Skip to content

feat(pkgs): opencv 0.0.9 单仓库形态 + mcpp 0.0.102 floor (windows scan-deps #261 + module PCM baseline)#111

Merged
Sunrisepeak merged 4 commits into
mainfrom
feat/opencv-0.0.7-single-repo
Jul 22, 2026
Merged

feat(pkgs): opencv 0.0.9 单仓库形态 + mcpp 0.0.102 floor (windows scan-deps #261 + module PCM baseline)#111
Sunrisepeak merged 4 commits into
mainfrom
feat/opencv-0.0.7-single-repo

Conversation

@Sunrisepeak

@Sunrisepeak Sunrisepeak commented Jul 21, 2026

Copy link
Copy Markdown
Member

把 opencv 收敛为单仓库形态并升到 0.0.8,同时把索引的 mcpp 底座抬到 0.0.102

opencv 单仓库 + 0.0.8

  • pkgs/o/opencv.lua:Form A 描述符,三平台各一个 ["0.0.8"] 块,GLOBAL(github archive)与 CN(gitcode mcpp-res 资产)指向同一 tarball,sha256 0025f7a6…45cd8(两端均 11,756,053 字节,已实测一致)。退役 compat.opencv / compat.opencv-unifont 与 tools/compat-opencv/
  • 为什么是 0.0.8 而不是 0.0.7:v0.0.7 的 mcpp new --template opencv 脚手架在 import std; 下用了 std::println(stderr, …),而模块不导出 <cstdio>stderr 宏,生成代码编译不过(opencv-m#14 修复模板 + 新增模板 lint)。0.0.8 只改模板,无库源码 / ABI 变化。
  • tests/examples/opencv-module{,-dnn,-unifont}:消费者 pin → 0.0.8;删除旧的 compat.opencv 系成员(opencv / opencv-win / opencv-unifont / opencv-dnn)。

mcpp 0.0.102 底座(原 #113,已折叠进来)

windows workspace 腿把包当依赖消费时,包自己的 TU 落在 ~124 字符的 xpkgs 路径下,clang scan-deps 命令越过 cmd.exe 8191 上限(The command line is too long.)。mcpp 0.0.102(#261)clang-scan-deps -o 去掉 cmd /c 重定向 wrapper,上限回到 CreateProcess 的 32767。因此:

  • .github/workflows/validate.yml:MCPP_VERSION 与三矩阵 pin 0.0.101 → 0.0.102。
  • index.toml:min_mcpp / latest_mcpp → 0.0.102(按版本契约与 CI pin 同步)。

折叠理由:0.0.102 底座的必要性正是由 opencv 0.0.8 的 windows 腿引入,且本 PR 已删除旧 compat.opencv 成员——分开跑一遍全量只会把 windows 构建时间浪费在即将删除的旧路径上。

本地验证(对已发布 v0.0.8 tarball,mcpp 0.0.102)

  • mcpp new myvision --template opencvtemplate opencv@0.0.8:imgprocmcpp build./myvision in.png 输出灰度 PNG。
  • feature 消费者 opencv = { features = ["dnn","unifont"] }:dnn blobFromImage → NCHW 1×3×16×16Net().empty()==true;unifont FontFace("uni") + 中文 putText 落墨 1797 px。

编辑了 validate.yml → 触发全量 workspace,正好在 0.0.102 上构建新单仓库成员(含 windows 腿验证 #261 修复)。


更新 0.0.8 → 0.0.9(windows/clang 消费者修复):0.0.8 的模块接口 BMI 被 opencv 的 SSE3 baseline -msse3 打上 +sse3,baseline 消费者 TU 无法加载(clang -Wmodule-file-config-mismatch)。opencv-m v0.0.9(#15)把 -msse3 收到仅库 TU 的 per-glob,接口以 baseline 编译。sha256 → 888c45ad…768a。索引改指 0.0.9。

@Sunrisepeak

Copy link
Copy Markdown
Member Author

临时转为 draft:本 PR 删除了 tools/compat-opencv/,会命中 validate.yml 里 tools/* 的全量兜底规则,导致整个 workspace(含 ffmpeg 与 OpenCV 冷构建)在三平台重跑。已把该规则的修正拆到 #112

计划:先合 #112,本 PR rebase 后即可只跑 opencv 相关成员(opencv-moduleopencv-module-dnnopencv-module-unifont),再转回 ready。

本地已验证的内容不变:lua 语法 / check_mirror_urls.lua / mcpp xpkg parse 三项 lint 通过;CN 镜像与 GitHub tarball 字节一致;用本分支检出解析 opencv = "0.0.7" 完整构建并运行 opencv-module 成员通过(47.27s)。

opencv-m 自 0.0.7 起把 OpenCV 5.0.0 的完整源码构建收入自身仓库:上游源码
(third_party/opencv-5.0.0/,官方 tag 的裁剪导入,sha256 锁定,零补丁)与各平台
冻结的 configure 快照(gen/)随 release tarball 一并分发,消费端不执行 CMake。
索引侧因此只保留指向该 release 的 Form A 描述符。

- pkgs/o/opencv.lua:0.0.7(GLOBAL GitHub tag tarball + CN gitcode 镜像,
  两者字节一致,sha256 a896d08d…);描述符注释重写为单仓库形态。仅保留 0.0.7,
  0.0.6 及更早版本随 compat.opencv 一并移除。
- 删除 pkgs/c/compat.opencv.lua、pkgs/c/compat.opencv-unifont.lua 与
  tools/compat-opencv/(描述符生成流水线),以及两个临时快照采集 workflow
  (snapshot-{macos,windows}-opencv.yml)。
- 删除仅用于验证 compat.opencv 的 workspace 成员:opencv、opencv-win、
  opencv-unifont、opencv-dnn;模块层成员 opencv-module{,-dnn,-unifont}
  依赖上调至 0.0.7 并更新已失效的注释(不再有 feature 转发与 linux-only)。
- README 与 validate.yml 的相关描述同步更新。

opencv-m 侧五条 CI 腿(linux gcc/llvm22/musl-static、macOS llvm、windows llvm)
全部通过;本地已用本检出解析 opencv 0.0.7 并运行 opencv-module 成员验证。
@Sunrisepeak
Sunrisepeak marked this pull request as ready for review July 21, 2026 13:20
@Sunrisepeak
Sunrisepeak force-pushed the feat/opencv-0.0.7-single-repo branch from f3096ba to 5a150a5 Compare July 21, 2026 13:21
v0.0.7's --template opencv scaffold used std::println(stderr, …) under a
bare `import std;` and did not compile (modules do not export the <cstdio>
stderr macro). opencv-m v0.0.8 fixes the template and adds a CI lint for the
class. No library-source or ABI change from 0.0.7.

- pkgs/o/opencv.lua: version 0.0.7 → 0.0.8 (all three OS blocks), sha256
  re-pinned to 0025f7a6…45cd8 (GLOBAL github archive == CN gitcode asset,
  both verified 11756053 bytes). Requires-mcpp note raised to >= 0.0.102
  (windows scan-deps cmdline, mcpp#261).
- tests/examples/opencv-module{,-dnn,-unifont}: consumer pins → 0.0.8.
…261)

The windows workspace leg builds a package's own TUs from under the
registry's xpkgs path (~124 chars) rather than a ~23-char checkout, so
the clang scan-deps command — wrapped in `cmd /c` only to redirect its
P1689 JSON — crossed cmd.exe's 8191-char ceiling on the vendored-opencv
consumer (opencv-module{,-dnn}). mcpp 0.0.102 drops the wrapper via
clang-scan-deps -o and extends #247's response-file fallback to every
$local_includes rule, restoring the CreateProcess 32767 ceiling.

Bump min_mcpp/latest_mcpp together with the CI pin per the index.toml
version-contract rule. Also carries #257 (Clang purview-include depfile),
#258 (OS-conditional [build].flags) and #254 (per-OS splice on target).
@Sunrisepeak Sunrisepeak changed the title feat(pkgs): opencv 0.0.7 单仓库形态 — 内置 OpenCV 5 源码构建,退役 compat.opencv feat(pkgs): opencv 0.0.8 单仓库形态 + mcpp 0.0.102 floor (windows scan-deps #261) Jul 21, 2026
…6 re-pinned)

0.0.8 was not usable as a windows/clang dependency: opencv's SSE3 baseline
-msse3 tagged the module-interface BMIs, and a baseline consumer TU could not
load opencv.<mod>.pcm (clang -Wmodule-file-config-mismatch). opencv-m v0.0.9
moves -msse3 to a per-glob on the library TUs only, so the interfaces are
baseline-loadable. No public C++ API change.

- pkgs/o/opencv.lua: 0.0.8 → 0.0.9 (all three OS blocks), sha256 re-pinned to
  888c45ad…768a (GLOBAL github archive == CN gitcode asset, both 11756394 bytes).
- tests/examples/opencv-module{,-dnn,-unifont}: consumer pins → 0.0.9.
@Sunrisepeak Sunrisepeak changed the title feat(pkgs): opencv 0.0.8 单仓库形态 + mcpp 0.0.102 floor (windows scan-deps #261) feat(pkgs): opencv 0.0.9 单仓库形态 + mcpp 0.0.102 floor (windows scan-deps #261 + module PCM baseline) Jul 22, 2026
@Sunrisepeak
Sunrisepeak merged commit 0ef3297 into main Jul 22, 2026
5 checks passed
@Sunrisepeak
Sunrisepeak deleted the feat/opencv-0.0.7-single-repo branch July 22, 2026 02:09
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