Skip to content

fix(builder): Linux keeps NVIDIA's DLSS SDK in its cache folder, and the license accepted in its settings - #2485

Merged
hckrman101 merged 1 commit into
NotRexed:mainfrom
LNDF:linux-ngx-sdk-cache
Nov 11, 2026
Merged

hckrman101 merged 1 commit into
NotRexed:mainfrom
LNDF:linux-ngx-sdk-cache

Conversation

@LNDF

@LNDF LNDF commented Nov 11, 2026

Copy link
Copy Markdown
Contributor

On Linux, an update can silently drop DLSS: the builder uses the DLSS SDK's LICENSE.txt as its record that you accepted NVIDIA's license, so when that downloaded file is gone, the next update builds without DLSS and deletes the game's runtime. The SDK (58 MB) also sits in the game's data folder rather than the builder's own.

Split out of #2317 at review.

What changed

  • The SDK goes to the builder's cache folder, ~/.cache/hookshot-builder/ngx-sdk, beside make_game.py's build files. Windows already keeps it in %LOCALAPPDATA%\HookshotBuilder.
  • License acceptance is recorded in ~/.config/hookshot/builder.ini (nvidia_license=1) when you tick DLSS. folder_has_dlss() reads that instead of the SDK's LICENSE.txt, so an emptied cache means the SDK is downloaded again, and DLSS is kept.
  • An SDK in the old place (~/.local/share/hookshot/builder/ngx-sdk) is moved once when the builder starts, and its license is recorded.
  • readme: the Linux DLSS paragraph names the new place.

Testing

  • tests/test_make_game_ngx.py: the new folder, the settings record, an emptied cache keeping DLSS, the one-time move, including an SDK in both places.
  • python -I -B tests/run_all.py on Linux: nothing new fails (the three failures there also fail on main).
  • Not run in the AppImage builder yet.

🤖 Generated with Claude Code

…the license accepted in its settings

The Linux builder kept NVIDIA's DLSS SDK (58 MB, a download) in the game's
data folder (~/.local/share/hookshot/builder/ngx-sdk), and took the SDK's
LICENSE.txt as the record that the player accepted NVIDIA's license.

- The SDK goes to the builder's own cache folder, ~/.cache/hookshot-builder
  (as make_game.py's build files; Windows keeps it in
  %LOCALAPPDATA%\HookshotBuilder already).
- The license acceptance is kept in builder.ini (nvidia_license=1). With the
  SDK's file as the record, an emptied cache made the next update build
  without DLSS and delete the game's runtime; now it downloads the SDK again.
- An SDK in the old place is moved once when the builder starts, and its
  license recorded.

Split out of NotRexed#2317 at review.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@Joey-Magnus Joey-Magnus left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

folder_has_dlss checks nvidia_license=1 in builder.ini, and builds still pass --fetch-ngx-sdk --accept-nvidia-license, so an emptied cache re-downloads the SDK and DLSS stays on. The move from the old folder is tested, including the empty-cache case. The full suite passed locally merged into main (395 passed, 0 failed); CI hasn't run here yet.

The Windows builder has the same bug: it still uses LICENSE.txt as the licence record (builder/py/hookshot_builder/window.py:1756). That could be a follow-up.

@hckrman101
hckrman101 merged commit 92552b7 into NotRexed:main Nov 11, 2026
hckrman101 pushed a commit that referenced this pull request Nov 11, 2026
…, so an update keeps DLSS without the SDK's files (#2528)

On Windows, an update can drop DLSS from a game built with it: both
builders use the DLSS SDK's `LICENSE.txt` as the record that you
accepted NVIDIA's license, so if the SDK's files are gone (deleted, a
new builder folder) and DLSS isn't ticked in the saved settings, the
update builds without DLSS and its runtime is removed. This is the
Windows side of #2485, which fixed the same for the Linux builder
(pointed out in its review).

## What changed
- `builder-settings.json` gets `DlssLicense`, set when the DLSS tick's
license is accepted. Both builders read and keep it (the file is shared
between the WPF builder and `builder/py`).
- An update keeps a folder's DLSS when its runtime is there and
`DlssLicense` is set, or, for a license accepted before this change,
when the SDK's `LICENSE.txt` is there (as before, so nobody loses DLSS
on the switch).

## Testing
- `tests/builder_dlss_update_test.cs`: new cases, the record without the
SDK keeps DLSS. Run here on .NET 10 (the PC has no .NET 8 packs; the
fixture targets 8): 63 assertions pass, and the new case fails on
`main`'s `UpdateBuild`.
- `tests/test_builder_py_dlss_update.py` (new): the Python builder's
update decision, taken from its source and run with stand-ins. Passes,
and fails on `main`'s `update_build`.
- `python -I -B tests/run_all.py` on Linux: nothing new fails (the three
failures there also fail on `main`).
- Not run in either builder's UI.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.

3 participants