Skip to content

fix(mcpplibs-xpkg): name the generated module in the source list - #16

Merged
Sunrisepeak merged 1 commit into
mainfrom
fix/xpkg-generated-module-in-source-list
Aug 13, 2026
Merged

fix(mcpplibs-xpkg): name the generated module in the source list#16
Sunrisepeak merged 1 commit into
mainfrom
fix/xpkg-generated-module-in-source-list

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

#15 补出来的 xmake.lua 用一个 add_files("src/*.cppm") glob 收所有模块,但
src/xpkg-lua-stdlib.cppmbefore_build 生成的 —— glob 在读描述时求值,那一刻
文件还不存在
,生成物因此不在源码列表里:

error: <mcpplibs-xpkg> missing mcpplibs.xpkg.lua_stdlib dependency for
       module mcpplibs.xpkg.executor

报错点名的是消费者,不是那个没被编译的文件。libxpkg 自己的 xmake.lua 正是把这个
文件显式列名的(而不是交给 glob),这里照它做。

实测:#15 合入后 0.0.57 已能下载,构建就卡在这一条。

补出来的 xmake.lua 用 `add_files("src/*.cppm")` 一个 glob 收所有模块,但
`src/xpkg-lua-stdlib.cppm` 是 `before_build` 生成的 —— **glob 在读描述时就求值,
那一刻文件还不存在**,于是生成物根本不在源码列表里,构建失败于

    missing mcpplibs.xpkg.lua_stdlib dependency for module mcpplibs.xpkg.executor

报错点名的是消费者,而不是那个没被编译的文件。libxpkg 自己的 xmake.lua 就是把它
显式列名的,这里照做。
@Sunrisepeak
Sunrisepeak merged commit 62447d7 into main Aug 13, 2026
1 of 4 checks passed
Sunrisepeak added a commit that referenced this pull request Aug 13, 2026
#17)

* fix(mcpplibs-xpkg): generate lua_stdlib before the description is read

#16 把生成物显式列进了源码列表,但它仍然由 `before_build` 生成 —— **而
before_build 比模块扫描还晚**。扫描 xpkg-executor.cppm 时 `import
mcpplibs.xpkg.lua_stdlib` 找不到提供者,构建在 before_build 触发之前就停了:

    missing mcpplibs.xpkg.lua_stdlib dependency for module mcpplibs.xpkg.executor

libxpkg 老版本能用 before_build,是因为它把生成物放在**独立 target** 里、由
`add_deps` 保证先构建;0.0.42 起布局扁平化,没有这层时序可依。

改为在 `on_install` 里**先生成、再写 xmake.lua**:文件在描述被读取时就已经是
一个普通源文件,`src/*.cppm` 那个 glob 自然收得到,时序问题整个消失。

实测:改前 `install mcpplibs-xpkg 0.0.57 .. failed`,改后 `.. ok`。

* fix(mcpplibs-tinyhttps): bound mbedtls below 4.0

`mbedtls >=3.6.1` 会解析到 4.2.0,而 mbedtls 4.x 重排了头文件目录 ——
`<mbedtls/entropy.h>` 变成了 `<mbedtls/private/entropy.h>`。于是 tinyhttps
根本编不过:

    src/tls.cppm:4:10: fatal error: mbedtls/entropy.h: No such file or directory

只要机器上能拿到 mbedtls 4.x,这个包就装不上。加上界 `<4.0`。
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