Skip to content

feat: add linux riscv64 package support - #112

Draft
xiwangly2 wants to merge 3 commits into
GSManagerXZ:mainfrom
xiwangly2:feat/linux-riscv64-package-support
Draft

xiwangly2 wants to merge 3 commits into
GSManagerXZ:mainfrom
xiwangly2:feat/linux-riscv64-package-support

Conversation

@xiwangly2

Copy link
Copy Markdown
Contributor

Summary

  • Add a linux-riscv64 package target and release artifact wiring.
  • Treat riscv64 as a degraded portable package that uses system Node.js and system unzip/zip/7z tools instead of unavailable bundled native assets.
  • Document the support boundary and update contributor guidance so new architectures do not overstate unsupported PTY, ZipTools, 7z, SteamCMD, or game-server assets.

Validation

  • npm run package:linux:riscv64:no-zip
  • cd server && npm test -- --runTestsByPath src/__tests__/7z-extract-compress.test.ts src/__tests__/7z-binary-name.test.ts src/__tests__/7z-property.test.ts
  • RevyOS / Lichee Pi 4A (10.31.0.225, riscv64): installed distro Node.js 20.18.0 plus zip/7z tools, started the generated linux-riscv64 package on port 39031, and verified the web UI returned HTML over HTTP. Logs showed expected PTY degradation and system ZIP/7z fallback.

Notes

Docker is intentionally left at amd64/arm64 because the current Dockerfile still depends on architecture-specific SteamCMD, Java, PTY, ZipTools, and 7z assumptions that are not ready for riscv64.

@xiwangly2
xiwangly2 marked this pull request as draft September 26, 2026 06:39
@xiwangly2

Copy link
Copy Markdown
Contributor Author

追加了一轮 Java/包管理器架构边界修正:

  • 后端 Java 下载产物判断抽到 javaDownloadArtifacts,riscv64、macOS 和未知 Linux 架构不再回退到 Linux x64 JDK。
  • 前端 Java 卡片按真实平台/架构禁用下载式安装,并提示改用系统 OpenJDK。
  • Linux 包管理器在非 x86 架构隐藏 :i386 包,避免 riscv64/arm64 打开包列表时尝试启用错误架构;同时加入 OpenJDK headless 包候选。

验证:

  • cd server; npm test -- --runTestsByPath src/__tests__/java-download-artifacts.test.ts src/__tests__/7z-extract-compress.test.ts src/__tests__/7z-binary-name.test.ts src/__tests__/7z-property.test.ts:4 suites / 33 tests passed。
  • npm run package:linux:riscv64:no-zip:通过,仍按预期跳过内置 Node.js、PTY、Zip-Tools 和 7z。
  • RevyOS Lichee Pi 4A (10.31.0.225, riscv64):打包产物导入 javaDownloadArtifacts 后 linux/riscv64 返回 UnsupportedJavaDownloadError;APT 包列表 APT_I386_VISIBLE 0,可见 default-jre-headless,openjdk-11-jre-headless,openjdk-17-jre-headless,openjdk-21-jre-headless;启动打包面板后 HTTP_OK,日志显示预期的 PTY 不支持和系统 /usr/bin/7z 降级。

@xiwangly2

Copy link
Copy Markdown
Contributor Author

追加更新:已继续收敛 x64-only 游戏部署路径,当前 Draft PR 分支更新到 a6978ae。

本次新增:

  • 后端新增统一架构守卫,SteamCMD 相关安装、分支查询、更新入口在非 x64 平台会提前返回明确的 400 错误。
  • Factorio headless 自动部署也加了平台/架构保护,只允许 Linux x86_64;非 x86_64 建议走手动文件部署。
  • 前端从原来的 ARM-only 判断泛化为 non-x64 limited architecture,riscv64/arm64 等特殊架构会隐藏 SteamCMD/市场/在线部署等不适用入口,并在安装向导中跳过 SteamCMD 在线安装。
  • docs/多架构支持说明.md 补充 SteamCMD 和 Factorio 的限制说明。

验证:

  • git diff --check
  • cd server; npm test -- --runTestsByPath src/__tests__/architecture-support.test.ts src/__tests__/java-download-artifacts.test.ts src/__tests__/7z-extract-compress.test.ts src/__tests__/7z-binary-name.test.ts src/__tests__/7z-property.test.ts
  • cd server; npm run build
  • cd client; npm run build
  • npm run package:linux:riscv64:no-zip
  • RevyOS Lichee Pi 4A / riscv64 (10.31.0.225) 解包运行验证:服务 HTTP OK,SteamCMD/Factorio 守卫均返回 UnsupportedArchitectureError,7z 走系统 /usr/bin/7z 降级,PTY 不可用仍为预期降级行为。

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