Files
nxnative-easy/scripts
seedds 26a72dd562 NSP script: DLC and iOS shaders reused across reruns, one Xcode build folder per game
A rerun after an interrupted IPA pack did a lot of the build again:

- The iOS shaders were keyed on the shader split's key, and that covers every dm/gfx/tools/*.py.
  A pull that changed only the Unity readers (shader_split.py, unityfs.py) made Monster Hunter
  Rise split again and then restore all 63,111 shaders from the cache (9 minutes). The iOS shaders
  are now keyed on the shader package's content and on what dmsh_build.py loads (the repository
  modules it imports, at any depth, and the chain lock). A split that runs again and writes the
  same package leaves them reused; hashing Rise's 510 MB package takes 0.3 s.
- The DLC was extracted on every run (Rise: 252 DLC, 16-30 s). It is now reused while the DLC NSPs
  (names, sizes, times) and nx_extract's sources are unchanged (aoc.key).
- Xcode's custom build location setting overrode -derivedDataPath, so every game's app was built
  in one shared ~/Library/Developer/Xcode/DerivedData/Build: a build after another game's compiled
  all 129 files, and two games built at once wrote the same app. build_ipa.sh sets SYMROOT and
  OBJROOT under the game's work folder; a repeat build there compiled nothing (1 s).

Checked: Celeste with its split forced to run again (same package, iOS shaders reused), Rise's DLC
twice (15.9 s, then 0.1 s), and an Xcode build into a path with spaces and an apostrophe.
Each game's next build runs its iOS shader step once more, to write the new key.
2026-10-22 11:33:33 +08:00
..