Tags: kaniol-lck/modmanager
Tags
CI: ubuntu 也改成自建 quazip —— 不能用 Ubuntu 的 libquazip1-qt6-dev(run #663 实…
…际翻车)
#663 里 ubuntu 仍死在 build ubuntu。这次不一样的是**加在 #663 里的
::error:: 自曝生效了**,注解直接给出真错:
/usr/include/QuaZip-Qt6-1.4/quazip/quazip_qt_compat.h:18:12:
fatal error: QtCore5Compat/QTextCodec: No such file or directory
(也就是说 #662 那次"去掉 .pc 里的 Qt6Core"确实解决了头文件混用 ——
编译已经推进到 fabricmodinfo.o 才停,只是下面还埋着第二层。)
Ubuntu 的 quazip 1.4 是带 QUAZIP_ENABLE_QTEXTCODEC=ON 编的,
quazip_qt_compat.h 会 #include <QtCore5Compat/QTextCodec>,
于是反过来要求官方 Qt 装 qt5compat(这也解释了它的 control 里为什么
Depends: qt6-base-dev + libqt6core5compat6-dev)。
与其在这条依赖链上继续打补丁,不如和 Win/macOS 用同一套配方:
自建 quazip 1.7.2 并 -DQUAZIP_ENABLE_QTEXTCODEC=OFF,装到 /usr/local。
这样三个平台的 quazip 同版本同 ABI,一个 QUAZIP_ENABLE_QTEXTCODEC=OFF
同时解决"Qt5Compat 依赖",也不再需要 Ubuntu 的 qt6-base-dev
(那正是 Qt 6.4.2 头文件的来源)。配套改动:
- apt 去掉 libquazip1-qt6-dev,加 zlib1g-dev,保留 libaria2-0-dev
- 新增 Build QuaZip 步(curl + cmake + sudo install 到 /usr/local),
继续沿用"删掉 .pc 里的 , Qt6Core"并断言;补 sudo ldconfig,
因为后面 appimagetool -s deploy 完全依赖 ldd 解析依赖
- build ubuntu 的 PKG_CONFIG_PATH 加 /usr/local/lib/pkgconfig,
并断言 cflags 里有 quazip 的 include、且不含系统 Qt 的 include
CI: ubuntu 也改成自建 quazip —— 不能用 Ubuntu 的 libquazip1-qt6-dev(run #663 实…
…际翻车)
#663 里 ubuntu 仍死在 build ubuntu。这次不一样的是**加在 #663 里的
::error:: 自曝生效了**,注解直接给出真错:
/usr/include/QuaZip-Qt6-1.4/quazip/quazip_qt_compat.h:18:12:
fatal error: QtCore5Compat/QTextCodec: No such file or directory
(也就是说 #662 那次"去掉 .pc 里的 Qt6Core"确实解决了头文件混用 ——
编译已经推进到 fabricmodinfo.o 才停,只是下面还埋着第二层。)
Ubuntu 的 quazip 1.4 是带 QUAZIP_ENABLE_QTEXTCODEC=ON 编的,
quazip_qt_compat.h 会 #include <QtCore5Compat/QTextCodec>,
于是反过来要求官方 Qt 装 qt5compat(这也解释了它的 control 里为什么
Depends: qt6-base-dev + libqt6core5compat6-dev)。
与其在这条依赖链上继续打补丁,不如和 Win/macOS 用同一套配方:
自建 quazip 1.7.2 并 -DQUAZIP_ENABLE_QTEXTCODEC=OFF,装到 /usr/local。
这样三个平台的 quazip 同版本同 ABI,一个 QUAZIP_ENABLE_QTEXTCODEC=OFF
同时解决"Qt5Compat 依赖",也不再需要 Ubuntu 的 qt6-base-dev
(那正是 Qt 6.4.2 头文件的来源)。配套改动:
- apt 去掉 libquazip1-qt6-dev,加 zlib1g-dev,保留 libaria2-0-dev
- 新增 Build QuaZip 步(curl + cmake + sudo install 到 /usr/local),
继续沿用"删掉 .pc 里的 , Qt6Core"并断言;补 sudo ldconfig,
因为后面 appimagetool -s deploy 完全依赖 ldd 解析依赖
- build ubuntu 的 PKG_CONFIG_PATH 加 /usr/local/lib/pkgconfig,
并断言 cflags 里有 quazip 的 include、且不含系统 Qt 的 include
CI: ubuntu 也改成自建 quazip —— 不能用 Ubuntu 的 libquazip1-qt6-dev(run #663 实…
…际翻车)
#663 里 ubuntu 仍死在 build ubuntu。这次不一样的是**加在 #663 里的
::error:: 自曝生效了**,注解直接给出真错:
/usr/include/QuaZip-Qt6-1.4/quazip/quazip_qt_compat.h:18:12:
fatal error: QtCore5Compat/QTextCodec: No such file or directory
(也就是说 #662 那次"去掉 .pc 里的 Qt6Core"确实解决了头文件混用 ——
编译已经推进到 fabricmodinfo.o 才停,只是下面还埋着第二层。)
Ubuntu 的 quazip 1.4 是带 QUAZIP_ENABLE_QTEXTCODEC=ON 编的,
quazip_qt_compat.h 会 #include <QtCore5Compat/QTextCodec>,
于是反过来要求官方 Qt 装 qt5compat(这也解释了它的 control 里为什么
Depends: qt6-base-dev + libqt6core5compat6-dev)。
与其在这条依赖链上继续打补丁,不如和 Win/macOS 用同一套配方:
自建 quazip 1.7.2 并 -DQUAZIP_ENABLE_QTEXTCODEC=OFF,装到 /usr/local。
这样三个平台的 quazip 同版本同 ABI,一个 QUAZIP_ENABLE_QTEXTCODEC=OFF
同时解决"Qt5Compat 依赖",也不再需要 Ubuntu 的 qt6-base-dev
(那正是 Qt 6.4.2 头文件的来源)。配套改动:
- apt 去掉 libquazip1-qt6-dev,加 zlib1g-dev,保留 libaria2-0-dev
- 新增 Build QuaZip 步(curl + cmake + sudo install 到 /usr/local),
继续沿用"删掉 .pc 里的 , Qt6Core"并断言;补 sudo ldconfig,
因为后面 appimagetool -s deploy 完全依赖 ldd 解析依赖
- build ubuntu 的 PKG_CONFIG_PATH 加 /usr/local/lib/pkgconfig,
并断言 cflags 里有 quazip 的 include、且不含系统 Qt 的 include
CI: 显式安装 NSIS —— windows-2025 镜像不再预装(run #660 实际翻车) 现象:run #660 里收集器那步**通过了**(编码修复有效),Windows 改死在 「Create installer」。这次注解通道给出了确切原因: The term 'makensis' is not recognized as a name of a cmdlet, function, script file, or executable program. 根因:`windows-latest` 正在迁到 windows-2025 镜像,而两个镜像的软件清单不同 —— windows-2022:NSIS 3.10(在 Tools 分类里) windows-2025:**没有 NSIS**(只剩 InnoSetup 6.7.1 / WiX 3.14.1) 于是 makensis 不在 PATH 上。这个故障一直存在,只是被前面步骤的失败掩盖着 (#658 死在 Build QuaZip、#659 死在收集 DLL),直到那两处修好、这步第一次 真正跑到才暴露出来。 修复:加一步显式安装(Chocolatey 2.7.4 是镜像自带的) - choco install nsis -y --no-progress,退出码断言 - makensis.exe 定位不写死:x86 与 x64 两个 Program Files 都试,找不到就 throw - 把 NSIS 目录写进 GITHUB_PATH,后面的 Create installer 才找得到它 - 跑 `makensis /VERSION` 确认可用 验证:Install NSIS 步骤的 run 体逐字抽出做 AST 语法检查 → 0 错误; .nsi 只用标准特性(!include "MUI.nsh" + English/SimpChinese/TradChinese 语言文件 + Contrib 里的标准图标),choco 的完整 NSIS 包即可满足,无需第三方插件。 rehearse-ci.sh 补了 NSIS 相关 5 项检查,并修掉一个 BOM 导致的 off-by-one (干跑汇总按 ^PASS 计数会漏掉第一条,实际 4 项被数成 3 项): PASS=81 FAIL=0 SKIP=0。
fix curseforge getFileInfo (import modpacks)
PreviousNext