fix(linux): the AppImage carries zbic's zstd sources, so a build with NVIDIA DLSS compiles #4
No reviewers
Labels
No labels
area/accessibility
area/audio
area/input
area/install
area/menu
area/renderer
area/saves
area/upscaling
good first issue
gpu/amd
gpu/igpu
gpu/intel
gpu/nvidia
help wanted
kind
bug
kind
chore
kind
docs
kind
feature
kind
performance
kind
question
needs measurements
platform/linux
platform/macos
platform/steam-deck
platform/windows
preview
priority
critical
priority
high
priority
low
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
testing wanted
ci: approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!4
Loading…
Reference in a new issue
No description provided.
Delete branch "HumanBean/Longshot:fix-appimage-zbic-sources"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Every Linux build with NVIDIA DLSS ticked in the builder stops before the link with
FileNotFoundError: .../third_party/zbic/zstd.h, because the AppImage leaves out the zstd sources that build compiles. A player hit it on v2.2.0-rc.1.Why
The AppImage's prebuilt Vulkan back end has no DLSS, so with
LONGSHOT_NGX_SDKset,prebuilt_renderer()returns""andnx2/build.pycompilesgpu/vkfrom the AppImage's own tree. That compile buildsthird_party/zbic/zstd.cand readszstd.handzstd_errors.h(nx2/build.py, the program cache's zstd;vk_progcache.cppincludeszstd.h). Butscripts/linux/appimage.shcopied onlyzbic.so,LICENSEandPROVENANCE.mdfromthird_party/zbic.check_player_build.shandtests/test_appimage_player_build.pyonly covered the prebuilt path, so CI stayed green. #1567 slipped through the same way.Change
scripts/linux/appimage.sh: also copieszstd.c,zstd.handzstd_errors.h.tests/test_appimage_player_build.py: a new dry run from the packaged tree withLONGSHOT_NGX_SDKset (a stand-in SDK and header folders), so the from-source back end is checked as the prebuilt one is. A stand-inclang++joins the stand-inclang.Tested
Ran 6 tests ... OK.python -I -B tests/run_all.py(Linux): 450 passed, 7 failed, 71 skipped. The same 7 fail onmainwithout this change (test_control,test_program_cache_*,test_longshot_ctl, …; this machine's sandbox).check_player_build.shpasses, and with DLSS on the dry run from the image finds 0 of 400 files missing; with the three zstd files removed it fails with the player's error (details in the comment below). Not run: a full DLSS build with a game dump and NVIDIA's SDK, or the game itself.🤖 Generated with Claude Code
Tested on a real AppImage built from this branch
I built the AppImage with
scripts/linux/docker.sh(Ubuntu 22.04 container, as CI; host networking because this PC's Docker bridge has no DNS). It finished withLongshot-...-gd2eb8a72-x86_64.AppImage: 234M. The back end compiled in 153 s with 0 failed,zstd.cincluded. The image'susr/share/longshot/third_party/zbic/now holdszstd.c,zstd.h,zstd_errors.h,zbic.so,LICENSEandPROVENANCE.md.1. A normal player's build,
scripts/linux/check_player_build.sh(as CI runs it): passes.2. The player's case: the same image, AppRun's environment, NVIDIA DLSS on (
LONGSHOT_NGX_SDK, a stand-in SDK folder; Vulkan, SPIR-V and VMA headers are the image's owncpm/): the back end is compiled from the image's tree, and nothing is missing.Control: the same run after moving the three zstd files out of the extracted image (what v2.2.0-rc.1 shipped) fails with the reported error:
Still not done: a full DLSS build with a game dump and NVIDIA's real SDK, then running it in the game. The dry run stops where the lifted game is first needed. Leaving this as a draft until someone with an NVIDIA card does that.
WIP: fix(linux): the AppImage carries zbic's zstd sources, so a build with NVIDIA DLSS compilesto fix(linux): the AppImage carries zbic's zstd sources, so a build with NVIDIA DLSS compiles