Isolate modern and Win7 workspaces (T-604)
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
| UI 框架 | Gio(纯 Go 立即模式 GUI) | 已定 | 无 CGO、单 EXE、跨版本可锁定;仅限 UI 层 |
|
||||
| 现代版工具链 | Go 1.25(锁定已验证版本) + Gio v0.10.1 | 已定 | 当前受支持工具链;支持 Win10/Win11 x64 |
|
||||
| Win7 版工具链 | Go 1.20.14(最终补丁) + Gio v0.6.0 | 已定 | Go 1.20 是最后支持 Win7 的版本;Gio v0.6.0 可由 Go 1.20 构建 |
|
||||
| 模块结构 | go.work + 三个 go.mod(core / app-modern / app-win7) | 已定 | 共享核心,双构建互不污染工具链要求 |
|
||||
| 模块结构 | 两个 go.work + 三个 go.mod(core / app-modern / app-win7) | 已定 | 根 workspace 只含 modern/core;嵌套 Win7 workspace 只含 win7/core |
|
||||
| 依赖管理 | 版本锁定 + vendor(Gio 及相关依赖) | 已定 | 防止 Win7 构建被隐式升级到要求 Go 1.21+ 的依赖 |
|
||||
| 存储 | JSON 文件 + 临时文件原子替换 | 已定 | 数百款软件规模足够;SQLite 仅在历史/搜索/事务需求出现后评估 |
|
||||
| 软件包格式 | ZIP(标准软件包协议 v1) | 已定 | 避免 UnRAR.dll;协议见 [api.md](api.md) |
|
||||
@@ -41,14 +41,17 @@
|
||||
| --- | --- |
|
||||
| Phase 0 完整闸门(Unix) | `bash scripts/verify_phase0.sh` |
|
||||
| Phase 0 完整闸门(Windows) | `./scripts/verify_phase0.ps1` |
|
||||
| 同步工作区依赖 | `go work sync` |
|
||||
| 同步根 workspace | `GOTOOLCHAIN=go1.25.0 GOWORK=<repo>/go.work go work sync` |
|
||||
| 同步 Win7 workspace | `GOTOOLCHAIN=go1.25.0 GOWORK=<repo>/app-win7/go.work go work sync`(同步元数据后仍由 Go 1.20.14 校验/构建) |
|
||||
| core 测试 | `cd core && go test -count=1 ./...` |
|
||||
| core 静态检查 | `cd core && go vet ./...` |
|
||||
| 现代版构建 | `cd app-modern && GOTOOLCHAIN=go1.25.0 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -trimpath -ldflags="-H=windowsgui" -o ../dist/SoftBox.exe ./cmd/softbox` |
|
||||
| Win7 版构建 | `cd app-win7 && GOTOOLCHAIN=go1.20.14 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -trimpath -ldflags="-H=windowsgui" -o ../dist/SoftBox-win7.exe ./cmd/softbox` |
|
||||
| 现代版构建 | `GOTOOLCHAIN=go1.25.0 GOWORK=<repo>/go.work CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go -C app-modern build -trimpath -ldflags="-H=windowsgui" -o ../dist/SoftBox.exe ./cmd/softbox` |
|
||||
| Win7 版构建 | `GOTOOLCHAIN=go1.20.14 GOWORK=<repo>/app-win7/go.work CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go -C app-win7 build -trimpath -ldflags="-H=windowsgui" -o ../dist/SoftBox-win7.exe ./cmd/softbox` |
|
||||
| 本地运行(开发) | Windows 下直接 `go run ./cmd/softbox`(WSL 中构建 EXE 后到 Windows 侧运行) |
|
||||
|
||||
根 `go.work` 纳入三个模块并使用 modern 所需的 Go 1.25 workspace 版本;`app-win7/go.work` 是就近的 Go 1.20 workspace,只纳入 `app-win7` 与 `core`,确保 Go 1.20.14 不需要解析 modern 模块。
|
||||
根 `go.work` 使用 Go 1.25.0,只纳入 `app-modern` 与 `core`;`app-win7/go.work` 使用 Go 1.20,只纳入 `app-win7` 与 `core`。同步、测试和构建始终显式指定对应 `GOWORK`,任何 workspace 都不会同时解析 Gio v0.10.1 与 v0.6.0。
|
||||
|
||||
两个 workspace 的元数据同步统一使用 Go 1.25.0。原因是 Go 1.20.14 的 `go work sync` 会忽略 workspace 级本地 replace 并尝试联网解析占位模块 `softbox.local/core@v0.0.0`;不为规避该工具缺陷把本机相对路径写进 go.mod。Win7 的依赖图、测试和构建仍全部强制使用 Go 1.20.14,并由版本检查拒绝 Go 1.21+ 依赖。
|
||||
|
||||
工具链矩阵:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user