Fix clean-build release pipeline + null-return interface getters #5

Merged
gabrielgad merged 13 commits from fix/missing-interface-null-return into dev 2026-06-17 16:14:37 -04:00
gabrielgad commented 2026-06-17 14:43:12 -04:00 (Migrated from github.com)

Summary

Restores a working clean Windows release build (it had been impossible for months — warm per-runner deps caches masked the breakage, so the nightly only ever shipped Steam.dll), and makes the interface getters non-fatal so the "Missing interface" class of games (e.g. Voidigo) no longer hard-exits.

Verified end-to-end: a from-scratch deps rebuild + build on the self-hosted runners now produces all four steam_api(64).dll (regular + experimental, x64 + x32) plus Steam.dll, gated by a real verify step.

Emulator behaviour

  • Interface getters return null instead of exiting. All 35 getters in steam_client_interface_getter.cpp now log + return nullptr (matching real steamclient on unknown versions) instead of report_missing_impl_and_exit. Dropped the blocking "Missing interface" MessageBox (it could fatally stall under Proton); report_missing_impl is now a pure file logger.

Clean-build pipeline (all latent, surfaced once a true clean build ran)

  • CI loop bug: echo ... (%%A, release) closed the do( block early -> only lib_steam_old ever built. Parens -> brackets.
  • deps: drop curl CURL_CA_FALLBACK (OpenSSL-only; hard-errors with MbedTLS); mirror zlib zs.lib -> zlibstatic.lib (protobuf/curl link); BUILD_TESTING=OFF + best-effort long paths (abseil test-helper MAX_PATH / MSB3491); force_rebuild input + stronger cache-completeness check.
  • lib_steam_old: define dbg_logger unconditionally (the GSE_FORCE_LOG refactor left it #ifndef EMU_RELEASE_BUILD).
  • abseil link list: reconcile premake5.lua with current abseil (drop absl_bad_any_cast_impl/bad_optional_access/bad_variant_access/log_entry; pool_urbg -> entropy_pool).
  • clean:true checkout: stop linking/shipping stale artifacts (a removed base_gcmessages.pb.obj was dragging in full-protobuf symbols; old DLLs were being shipped).
  • ImGui 1.92 / InGameOverlay port: GlyphExtraSpacing -> GlyphExtraAdvanceX; remove RendererResource_t::SetAutoLoad; remove ImFontAtlas::Build(); link ntdll for NtQueryInformation*. (Upstream Detanup01/gbe_fork has the identical skew.)
  • build hygiene: drop the crashing --dosstub/--winsign post-build; harden the release gate (real if defined check, correct x32 paths, wipe stale output).

Notes

  • The deps cache check now self-heals partial caches; force_rebuild is available for a full refresh.
  • splitux uses the experimental variant; the experimental DLLs build and ship.
## Summary Restores a working **clean** Windows release build (it had been impossible for months — warm per-runner deps caches masked the breakage, so the nightly only ever shipped `Steam.dll`), and makes the interface getters non-fatal so the "Missing interface" class of games (e.g. Voidigo) no longer hard-exits. Verified end-to-end: a from-scratch deps rebuild + build on the self-hosted runners now produces all four `steam_api(64).dll` (regular + experimental, x64 + x32) plus `Steam.dll`, gated by a real verify step. ## Emulator behaviour - **Interface getters return null instead of exiting.** All 35 getters in `steam_client_interface_getter.cpp` now log + `return nullptr` (matching real steamclient on unknown versions) instead of `report_missing_impl_and_exit`. Dropped the blocking "Missing interface" MessageBox (it could fatally stall under Proton); `report_missing_impl` is now a pure file logger. ## Clean-build pipeline (all latent, surfaced once a true clean build ran) - **CI loop bug:** `echo ... (%%A, release)` closed the `do(` block early -> only `lib_steam_old` ever built. Parens -> brackets. - **deps:** drop curl `CURL_CA_FALLBACK` (OpenSSL-only; hard-errors with MbedTLS); mirror zlib `zs.lib` -> `zlibstatic.lib` (protobuf/curl link); `BUILD_TESTING=OFF` + best-effort long paths (abseil test-helper MAX_PATH / MSB3491); `force_rebuild` input + stronger cache-completeness check. - **lib_steam_old:** define `dbg_logger` unconditionally (the GSE_FORCE_LOG refactor left it `#ifndef EMU_RELEASE_BUILD`). - **abseil link list:** reconcile premake5.lua with current abseil (drop `absl_bad_any_cast_impl`/`bad_optional_access`/`bad_variant_access`/`log_entry`; `pool_urbg` -> `entropy_pool`). - **clean:true checkout:** stop linking/shipping stale artifacts (a removed `base_gcmessages.pb.obj` was dragging in full-protobuf symbols; old DLLs were being shipped). - **ImGui 1.92 / InGameOverlay port:** `GlyphExtraSpacing` -> `GlyphExtraAdvanceX`; remove `RendererResource_t::SetAutoLoad`; remove `ImFontAtlas::Build()`; link `ntdll` for `NtQueryInformation*`. (Upstream Detanup01/gbe_fork has the identical skew.) - **build hygiene:** drop the crashing `--dosstub/--winsign` post-build; harden the release gate (real `if defined` check, correct `x32` paths, wipe stale output). ## Notes - The deps cache check now self-heals partial caches; `force_rebuild` is available for a full refresh. - splitux uses the experimental variant; the experimental DLLs build and ship.
Sign in to join this conversation.
No description provided.