新增 WoA (Windows ARM64) 支持#366
Conversation
- 新增 build-on-Windows-ARM64.yml: 使用 windows-11-arm runner + MSYS2 CLANGARM64 工具链编译原生 aarch64 版 chsrc-aarch64-windows.exe - 重命名 build-on-Windows.yml -> build-on-Windows-x64x86.yml 以区分 - Makefile/justfile: Windows 下 clang 的 target triple 改为按架构自适应, 不再硬编码 x86_64,使 CLANGARM64 下也能正确编译 - installer.ps1: 识别 ARM64 (架构值 12) 并映射到 aarch64 - README: 增加 ARM64/WoA 手动下载说明
chsrc_get_cpuarch() 的 Windows 分支: - 增加 PROCESSOR_ARCHITECTURE_ARM64 分支,映射为 aarch64, 避免原生 ARM64 构建走到 default 分支报错退出 - 改用 GetNativeSystemInfo,使 x64 版在 WoA 上模拟运行时 也能报告真实的原生架构,而非被模拟的 x86_64
原先只备份 mingw32/mingw64/msys,遗漏了 ucrt64/clang64/clangarm64 (clangarm64 为 WoA 上使用的环境)。sed 替换本就通过 mirrorlist* 通配 覆盖了这些文件,此处补齐备份以保证可完整还原。
|
Hi @NewbieXvwu, ❤️ 感谢你的贡献!你的 PR 当前基于 |
| with: | ||
| tag_name: pre | ||
| files: | | ||
| chsrc-aarch64-windows.exe |
There was a problem hiding this comment.
由于 Windows 的消费者面对的大部分是 Arm64 这个称呼,应该考虑直接使用 arm64 这个名称。
| # x86 | ||
| curl -L https://gitee.com/RubyMetric/chsrc/releases/download/pre/chsrc-x86-windows.exe -o chsrc.exe | ||
|
|
||
| # arm64/aarch64 (WoA, Windows on ARM) |
|
@ccmywish 已进行修改,请麻烦审阅。 |
|
代码都非常全面,没有遗漏的细节,感谢你付出的时间和精力,欢迎你成为我们30多个贡献者中的一员! Happy changing source~ ❤️ 已经预编译好了,可在 |
|
Hi, @niheaven 有没有空帮我们给 |
|
Hi, @rocascent 你是之前的 @Gn3po4g吗 ?从README中看到曾经是 @Gn3po4g 和 @niheaven 帮助在 有空帮忙给 并且, chef_register_contributor ("@Gn3po4g", "Peng Gao", "gn3po4g@outlook.com", NULL); |
|
Hi, @YU-7 好久没见,有没有空帮忙对 |
|
Hi, @MindFlowLab 刚才 @ 错你了,许多文件记录了你的贡献信息,但是我不知道你原来的 ID 叫什么了,你可统一在 |
|
好嘞,最近改了一下ID,我来添加一下
徐永祥
***@***.***
炳辉中学
学生
|
|
看到你对 并且,你可以直接提交一个PR在 README 中的 |
自 但在 |
我在 |
Scoop 那边需要同时增加 |
我转移到 macOS 了,没 Windows 系统可以测试。 |
AI 使用披露:本 PR 使用了 AIGC 技术生成相关代码。虽已尽力进行认真人工审查,但限于个人能力,仍难免有所纰漏,恳请维护者斧正。
问题描述
N/A已在 Apple Silicon 虚拟机中进行测试,可正确运行。测试系统版本为最新的 Windows 11 26H1,系近期出货的 WoA 产品预装的 Windows 版本。
方案与实现
新增
.github/workflows/build-on-Windows-ARM64.yml:使用 GitHub 官方windows-11-armrunner + MSYS2CLANGARM64原生工具链,复用现有的make build-in-ci-release-mode编译出chsrc-aarch64-windows.exe,并上传至prerelease。重命名
⚠️ 此项更改为我个人拙见,如维护者有别的方案恳请指出。
build-on-Windows.yml→build-on-Windows-x64x86.yml:为获得更好的区分度,重命名了原构建 x64/x86 Windows 的工作流文件,并将name改为「构建于 Windows x64x86」,以与新增的 ARM64 workflow 区分。Makefile/justfile:Windows 下 clang 的 target triple 不再硬编码x86_64,改为按架构自适应(Makefile 依据$MSYSTEM_CARCH,justfile 使用arch()),使CLANGARM64环境下也能正确编译,避免误建 x86_64。src/framework/core.c:chsrc_get_cpuarch()增加PROCESSOR_ARCHITECTURE_ARM64(→aarch64)分支,并改用GetNativeSystemInfo,避免原生 ARM64 构建检测失败退出,同时让 x64 版在 WoA 环境下模拟运行时也能报告真实架构。src/recipe/os/pacman/MSYS2.c:补全ucrt64/clang64/clangarm64(WoA 使用)三个 mirrorlist 的备份。tool/installer.ps1:识别 ARM64(Win32_Processor.Architecture = 12)并映射到aarch64,使一键安装脚本可用于 WoA。README.md:Windows 下载区新增 ARM64/WoA 手动下载说明。测试
chsrc运行正常(见上方截图)。build-on-Windows-ARM64.yml已在 GitHub Actions 的windows-11-armrunner 上构建通过,产物chsrc-aarch64-windows.exe正常生成并上传。仍需项目维护者审查的
build-on-Windows.yml的重命名: 为与新增的build-on-Windows-ARM64.yml区分开来,我将其进行了重命名。若有更好方案,请随时指出。