릴리즈와 메타데이터
artifact 이름
섹션 제목: “artifact 이름”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.11 | wine-winehq-11.11 |
winehq-11 | wine-winehq-11 |
crossover-26.1.0 | wine-crossover-26.1.0 |
DXMT runtime은 별도 artifact로 관리합니다.
artifacts/dxmt-v0.80-builtin.tar.gzartifacts/dxmt-v0.80-builtin.tar.gz.sha256launcher metadata
섹션 제목: “launcher metadata”Wine package 단계에서는 launcher가 읽을 metadata를 runtime 내부와 artifact 옆에 함께 씁니다.
<WINE_ROOT>/share/bdhi/launcher-options.jsonartifacts/wine-$BUILD_NAME/wine-$BUILD_NAME.jsonmetadata 파일 선택 순서는 다음과 같습니다.
BDHI_LAUNCHER_OPTIONS_FILEmetadata/bdhi-launcher-options.$BUILD_NAME.jsonmetadata/bdhi-launcher-options.$PATCH_SET.jsonmetadata/bdhi-launcher-options.json런처는 unpack된 runtime 내부의 manifest를 우선 사용하고, 다운로드 전 목록 표시에는 artifact 옆의 sidecar JSON을 사용할 수 있습니다. 새 runtime flavor를 추가할 때는 별도 metadata 파일을 두는 것이 기본입니다.
capabilities 기준
섹션 제목: “capabilities 기준”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만 보고합니다. 어떤 프로세스가 설치 프로그램인지, 런처인지, 실제 게임인지 분류하는 책임은 밥똥이리호요 런처에 있습니다.
WineHQ 계열 metadata는 HoYoPlay proxy capability도 함께 선언합니다. 선언된 helper가 artifact 안에 없으면 불완전한 runtime으로 보고 명확하게 실패시키는 것이 좋습니다.
process telemetry 정책
섹션 제목: “process telemetry 정책”process telemetry는 Steam이나 HoYoPlay에만 묶인 기능이 아닙니다. prefix 전체의 Wine process lifecycle을 보고하는 공용 기능입니다.
활성화에는 다음 환경 변수를 사용합니다.
WINE_BDIH_PROCESS_TELEMETRY=1WINE_BDIH_PROCESS_PIPE=/absolute/native/path/to/process-events.fifoFIFO는 0600 권한으로 만들고, command line에는 token이나 사용자 경로가 포함될 수 있으므로 raw payload를 그대로 로그에 남기지 않는 것이 좋습니다.
reader가 없거나 pipe가 가득 찬 경우 Wine은 이벤트를 버려야 하며, telemetry 때문에 Wine process나 wineserver가 지연되거나 실패하면 안 됩니다.
라이선스와 배포
섹션 제목: “라이선스와 배포”Wine runtime archive에는 third-party binary가 포함됩니다. 저장소 자체의 라이선스와 runtime 배포 의무는 별개로 다루어야 합니다.
패키징 단계는 runtime 내부에 다음 license bundle을 생성합니다.
<WINE_ROOT>/share/licenses/ README.md BUILD-PROVENANCE.txt source/ homebrew/ dwproton/ dxmt/dwproton/은 WineHQ 계열의 Proton extras를 포함할 때 사용합니다.
dxmt/는 DXMT를 명시적으로 bundle할 때만 사용합니다.
GStreamer, FFmpeg, x264, x265 같은 multimedia component는 Homebrew 업데이트에 따라 의존성과 라이선스 구성이 달라질 수 있으므로 릴리즈 전에 다시 확인해야 합니다.
릴리즈 체크
섹션 제목: “릴리즈 체크”릴리즈 전에 다음 항목을 확인합니다.
clean.sh이후 같은 patch set이 다시 적용되는지 확인합니다.- 임시 debug counter, tracing, local-only patch가 release source에 남아 있지 않은지 확인합니다.
- tarball,
.sha256, sidecar JSON이 같은 빌드 결과를 가리키는지 확인합니다. - runtime 내부
share/bdhi/launcher-options.json과 sidecar JSON이 일치하는지 확인합니다. share/licenses/가 실제 포함된 binary와 맞는지 확인합니다.- Steam, 이터널리턴, HoYoPlay backend처럼 해당 runtime이 선언한 workload를 다시 확인합니다.