Repository navigation
fix(libc): provide ASOBI_ROOT environment variable for title path resolution - #7715
renzipego-cpu wants to merge 1 commit into
Conversation
…olution ASTRO BOT builds paths with %ASOBI_ROOT% tokens and expands them via getenv. Without the variable the title's expansion leaves the literal token, stat calls fail, and the sound config never loads. Set ASOBI_ROOT=app0 in the guest environment at startup. Titles can override it with setenv if needed. The /host/ mount already maps to the run directory, and /host/app0/target/data symlinks to the title's data directory. Tested: ASTRO BOT (PPSA21564) boots without requiring a user-set ASOBI_ROOT environment variable. The sound config loads and the title runs stable for 60+ seconds. Tests: asobi_root_environment verifies getenv returns app0 by default and respects setenv overrides. All tests pass except linux_guest_stack (host quirk) and agc_driver_pixel_interlock (unrelated).
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
Rebase handoff — rebased onto current Verified on Linux (CachyOS, kernel 7.2.9, GCC 16.2.1, Ninja, Release, To pick it up: Head is |
|
Correction to the handoff above: the first push had a malformed CMakeLists merge (an unterminated |
adriadam10
left a comment
There was a problem hiding this comment.
Thanks for carrying this. Two problems before it can land:
- The root cause in #3480 says the opposite of what this PR assumes: "Serving
ASOBI_ROOTthrough the guest environment alone does not help: the title does not expand the token itself", and the title passes/host/%ASOBI_ROOT%/target/data/...literally to the file API. The PR body says the title readsASOBI_ROOTthroughgetenv, with no source, and the title was not rerun with this build. Please show the title getting pastSoundManager.cpp:306with this change (log), or evidence (disassembly/import trace) that it callsgetenv("ASOBI_ROOT"). - The test only checks that
getenvreturns the value the PR seeds, so it would not catch the fix being ineffective. Theapp0value comes from a homebrew convention and is not measured on the console (as the debt line itself says).
If the real behaviour is %VAR% handling at the /host translation layer, as #3480 suggests, that is a different change. Also core/libs/prx/libc/CMakeLists.txt conflicts with main (test registration); please rebase when you update.
|
Rebase handoff — rebased onto current Verified on Linux (CachyOS, kernel 7.2.9, GCC 16.2.1, Ninja, Release, To pick it up: Head is |
adriadam10
left a comment
There was a problem hiding this comment.
Still blocked on the same point, now that the rebase is in:
- The premise is unproven. #3480's root cause says serving
ASOBI_ROOTthrough the guest environment alone does not help (the title passes/host/%ASOBI_ROOT%/target/data/...literally to the file API), and nothing in this PR or its thread shows the title callinggetenv("ASOBI_ROOT"). Please attach either a log of the title getting pastSoundManager.cpp:306with this change, or an import trace/disassembly of thegetenvcall. core/libs/tests/AsobiRootEnvironment.cpponly reads back the value the PR seeds, so it passes whether or not the fix helps the title. Theapp0value follows a homebrew convention and is not measured on the console.core/libs/prx/libc/CMakeLists.txtconflicts with main again (test registration); rebase when you update.
If the real behaviour is %VAR% handling at the /host translation layer, that is a different change.
|
The generic There is a real source overlap with #7715's initializer: your current patch seeds the older private vector, while the coherence change replaces that store with the shared table. If this proposal proceeds, its initialization changes will need to compose with that table rather than restore the separate vector. The title/default concerns raised in review remain separate. I have not run the combination or established a runtime prerequisite. Do you have a preferred order? I can adapt the coherence change if yours lands first. No order is agreed at present. AI-assisted: yes |
Carries the rework of #4274 (
StarMrGamer:fix/astrobot-asobi-root-env@0528bae8), pushed by its author after the verification request in #3480, rebased onto current main.What
ASTRO BOT (PPSA21564) reads
ASOBI_ROOTthroughgetenvto build its asset paths; without it the sound configuration never loads and start-up stops at the title's own assertion:(reproduced on Windows in #3480; the issue was closed with the author's private stack, none of which is on main). The guest environment starts empty by design (70ef371, docs/dev/debt/libc.md: never reads the host's), so the title has no way to see the variable. This seeds one console-provided default,
ASOBI_ROOT=app0, into the guest environment - the value follows the homebrew payload convention. The host-seeding half of the carried branch was dropped in the rebase: main's empty-environment decision postdates the branch base and takes precedence. The debt entry is updated accordingly.Tested
Windows 11, MinGW-w64 GCC 15.2.0 (WinLibs r7), Ninja, Release,
BUILD_TESTING=ON, full build includinglibs:asobi_root_environment(default value,setenvoverride, absent variable) andguest_environmentpass.python tools/check_conventions.py --base origin/mainpasses;tools/pr_overlap.pywas run against the branch (only closed predecessors #4274/#3959/#4565; no open PR provides this). The title itself was not rerun with this build.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)