跳转到内容

发布与元数据

Wine runtime artifact 会同时生成运行时目录、tarball、checksum 和 sidecar JSON。

artifacts/wine-$BUILD_NAME/
wine-$BUILD_NAME-build/
wine-$BUILD_NAME-install/
wine-$BUILD_NAME/
wine-$BUILD_NAME.tar.gz
wine-$BUILD_NAME.tar.gz.sha256
wine-$BUILD_NAME.json

当前基准名称如下。

BUILD_NAME发布名称
winehq-11.11wine-winehq-11.11
winehq-11wine-winehq-11
crossover-26.1.0wine-crossover-26.1.0

DXMT runtime 作为独立 artifact 管理。

artifacts/dxmt-v0.80-builtin.tar.gz
artifacts/dxmt-v0.80-builtin.tar.gz.sha256

Wine package 阶段会把启动器读取的 metadata 同时写入 runtime 内部和 artifact 旁边。

<WINE_ROOT>/share/bdhi/launcher-options.json
artifacts/wine-$BUILD_NAME/wine-$BUILD_NAME.json

metadata 文件选择顺序如下。

BDHI_LAUNCHER_OPTIONS_FILE
metadata/bdhi-launcher-options.$BUILD_NAME.json
metadata/bdhi-launcher-options.$PATCH_SET.json
metadata/bdhi-launcher-options.json

启动器应优先使用解包后 runtime 内部的 manifest。 下载前展示列表信息时,可以使用 artifact 旁边的 sidecar JSON。 添加新的 runtime flavor 时,默认应新增独立 metadata 文件,除非它有意共享现有 patch-set manifest。

metadata 中的 capabilities 是启动器内部契约。 它不应作为普通用户设置显示。

process telemetry capability 描述用于发送 Wine server process table 事件的 prefix-scoped FIFO。

{
"protocol": 1,
"transport": "fifo",
"activationEnvironment": "WINE_BDIH_PROCESS_TELEMETRY",
"pipeEnvironment": "WINE_BDIH_PROCESS_PIPE"
}

Wine 只报告 process lifecycle fact。 判断某个进程是安装程序、启动器、游戏还是 helper,是 Bob-Ddong-Iri-Hoyo 启动器的职责。

WineHQ 系列 metadata 还会声明 HoYoPlay proxy capability。 如果 artifact 中缺少已声明的 helper,应将该 runtime 视为不完整并清晰失败。

process telemetry 不是 Steam 或 HoYoPlay 专用功能。 它报告整个 prefix 的 Wine process lifecycle。

启用时使用以下环境变量。

WINE_BDIH_PROCESS_TELEMETRY=1
WINE_BDIH_PROCESS_PIPE=/absolute/native/path/to/process-events.fifo

FIFO 应以 0600 权限创建。 command line 中可能包含 token 或用户路径,因此不建议原样记录 raw payload。 如果没有 reader、pipe 已满或写入失败,Wine 应丢弃事件。 telemetry 绝不能导致 Wine process 或 wineserver 延迟或失败。

Wine runtime archive 包含 third-party binary。 仓库自身许可证和 runtime 发布义务需要分开处理。

package 阶段会在 runtime 内写入以下 license bundle。

<WINE_ROOT>/share/licenses/
README.md
BUILD-PROVENANCE.txt
source/
homebrew/
dwproton/
dxmt/

dwproton/ 用于 WineHQ Proton extras 被打包时。 dxmt/ 只在明确 bundle DXMT 时使用。 GStreamer、FFmpeg、x264、x265 等 multimedia component 会随 Homebrew 更新发生依赖和许可证变化,因此发布前需要重新检查。

发布前请确认以下项目:

  • clean.sh 后相同 patch set 可以重新应用。
  • 临时 debug counter、tracing、本地专用 patch 没有留在 release source 中。
  • tarball、.sha256、sidecar JSON 指向同一个构建结果。
  • runtime 内部的 share/bdhi/launcher-options.json 与 sidecar JSON 一致。
  • share/licenses/ 与实际包含的 binary 一致。
  • 重新确认该 runtime 声明的 workload,例如 Steam、Eternal Return、HoYoPlay backend。