Repository navigation
fix(relinker): allow explicit module directories without standard folders - #6231
oneandonlydean merged 2 commits into
Conversation
|
Independent Linux host conversion verification at exact head Ubuntu 24.04, kernel 7.0.0-38, Ryzen 9 9950X, GCC 13.3, Ninja Release,
These are the PR's synthetic conversion fixtures and the full Linux host relinker suite. No new Mari0/package conversion, native homebrew runtime, Windows execution, GPU or title result is claimed. |
|
Windows check of head Windows 11 Pro 26220, Ryzen 7 5700X, RTX 4070 (driver 596.21), WinLibs MinGW-w64 GCC 15.2.0 r7, Ninja, Release.
Bundles without
The PR's RetroArch output (exe, three Regression relinks with the catalog flags, every output file hashed: PPSA28319 ( Side note: the core registries this produces use plain names ( Verdict: confirmed. An explicit AI-assisted (Claude Code). |
|
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.
|
karimibrahim07
left a comment
There was a problem hiding this comment.
A real bundle for this case: the websrv Quake homebrew (#6698) ships quake.elf and libOSMesa.so.8 side by side, with no sce_module, sce_modules or prx folder. Windows 11 Pro (26300), WinLibs GCC 15.2.0 r7, head 1800d3892 merged onto main 5d9dcc42d (clean merge).
main's relinker with--windows --to-intel --trap-sdk-syscall-stubs --module-dir .:FAIL: sce_module/*.prx was not found in: …, exit 2.- With this PR, the same command converts the bundle (
Converted modules: 1) toapp0/libOSMesa.so.8.guest.prx. Nosce_modulefolder is created in the input, and the inputs are unchanged.
When I prototyped that title before this PR I had to create an empty sce_module folder to get past this error, so this removes a real workaround. The one-line condition keeps the old error when no --module-dir is given, and that is what I see on main.
AI-assisted: yes. I ran the conversions above.
What
An explicit
--module-dirstill failed when a bundle had nosce_module,sce_modulesorprxdirectory. Accept validated explicit directories without requiring an empty standard directory. Preserve the missing-directory error when no explicit directory is supplied, and retain path, duplicate and incompatible-option validation.Tested
Windows 11 x64 (build 26200), WinLibs MinGW-w64 GCC 15.2.0 r7, CMake 4.3.1, Ninja 1.13.2, Python 3.13.7. Baseline:
d92a8dad390af1807cc91622b924252141816a5a. Branch:fix/explicit-homebrew-module-directories. Commit:1800d3892bec857b254ca8c55e912e325e1c6711. Committed-object conventions check passed.The modified
test_guest_module_dir.pyfails on unchanged main withsce_module/*.prx was not foundand passes fixed. It covers root and nested explicit directories without a standard directory, Linux/Windows output, missing and escaping directories, and unchanged no-option rejection. The full relinker CTest directory has 126 passes and onelong_pathsskip. Another 26 root-level checks pass. Fourteen root checks that create temporary commits were excluded under the personal commit quota; the targeted regression creates none.input_magicand other Python-backed tests were registered. Native Linux/macOS and full-library tests were not run locally.Homebrew evidence
The original extracted Mari0 archive layout was used, with no empty directory, renamed input, substituted library or patched input.
Baseline: exit 2 before writing an executable (0.026 s), reporting the missing standard directory. Fixed: exit 0 (11.847 s), producing a PE executable and
app0/libOSMesa.so.8.guest.prx. A baseline control with an added emptysce_modulealso converts successfully, isolating the directory gate. The trap flag remains required: it replaces recognized SDK syscall wrappers with traps and does not implement those syscalls. Timings describe these runs, not a performance claim.Package: Mari0 1.6.2 from websrv v0.34. Original layout and input hashes were checked before and after conversion; all inputs remained unchanged.
e0331ed5a22e7fe72843d268cd2c8b297d761a75b7c83d828f5cc58a82a72ce354bcc91670fd759bbd3488284dce351b6421cb83016e9ad8da6b5186da067a39128d2ab20b980b96decb1f20a9ed57d10cc922605259666b63efa52963920f0aNo generated homebrew executable was run. No game startup, gameplay, GPU, commercial-title, or physical-PS5 result is claimed. Synthetic regression tests additionally execute their existing small Windows fixtures; that is separate from homebrew conversion evidence.
Baseline relinker SHA-256:
a249e5a38abe9f338f09d6ea09182b5a39cd156dada6771984b85e315fda67c5. Tested fixed relinker SHA-256:854ebbdbdac8c4fe18d17d4bf4253ac9e3efa9063c6b1c7e81e82e4b0cafba23.Local logs, exact argv, per-file hashes, source patches, before/after failures and JSON results:
C:/Users/arjen/AppData/Local/Temp/anyps5-three-homebrew-20261014(homebrew-report.json, regression logs and CTest logs). The commands and decisive results are included above so this report does not depend on access to that local folder.Open PR comparison
Complete paginated inventory: 537 open PRs; main
d92a8dad390af1807cc91622b924252141816a5a. Complete changed-file lists and tree-only merge previews used that main as the explicit common base. This change merges with main and both other proposed changes. 16 relevant comparisons merge cleanly; 23 remain inconclusive because the other PR already conflicts with main. No conflict-free claim is made for those PRs.Exact compared heads and shared-file results
09afe38730d7b9d40d57b8aa9e13777012d170a3docs/user/USAGE.md657f16ea286035a8615e2d56614a354cd4559e31docs/user/USAGE.md006e1768128d23f491e78d51c709ecf58d97ed2ccore/relinker/cli/src/NativeModules.cpp,core/relinker/relinker/tests/test_guest_module_dir.pyc690012ce1b6f73ab985c061509e7cbfb41127c2docs/user/USAGE.md78b906fb67a8edff3969f60d26ced129f981139ecore/relinker/relinker/tests/test_guest_module_dir.py62022e9362a27432e007cea132ecd9ca0909bb2bdocs/user/USAGE.md1f98703dd07a6257c84ea485594d92f5a8e84fbadocs/user/USAGE.md3339ddd3af77cfc336148966657c0d14e87b6ae1docs/user/USAGE.md569ff84ea2589a9c886dca37b5c9ddcea70049bddocs/user/USAGE.mde4036135ed0823b866969e6e7e688712b0f57fccdocs/user/USAGE.md9acd5dcc07d8149020bf50fbd5e09f7633a2613fdocs/user/USAGE.mdacc228ab4a54fbdc0c816c22b52b82968e42649bdocs/user/USAGE.md2d14128a29ec22d25e0cb308777dd46894a73170docs/user/USAGE.mdd4fa8367daa0fd826853f440d23c3a604af43449docs/user/USAGE.md01f2073d06385ca2adb537d4996ad61e8255bd2edocs/user/USAGE.mdab0e383aca0fd9c8d873293ec0ffa170d750baa4docs/user/USAGE.md82de94cbedc5461de6af731b2a5a9838aca66e48docs/user/USAGE.mdb05e5cf8ecf4f410750c38a6f281f273babb816ddocs/user/USAGE.md2d6b8ef4341e21d78686bfba9da9a5c6bb14d629docs/user/USAGE.md1263d7065489fd6b7a15ebbecb1fcf0ee72d21f9docs/user/USAGE.md07713af3078fcb4e24a15c96bf15c3df4e2b071adocs/user/USAGE.mdbeb1ba79f2b3a2fc3882bf9d65553e4e754fc03ddocs/user/USAGE.mde4b37aa2e22c15e0e07341a7d8c18100cbae55c2docs/user/USAGE.md8c49e6d6960021ef72e1382d78b9b83914cc7f31docs/user/USAGE.md16b602cbfb29dcf3fc89b4ed67f228d65a27b20bdocs/user/USAGE.md66c8f11a47d64c2db6f514e409e94e91f5ac5309docs/user/USAGE.md92b12559c64489b556179b651ab4d966c29314ecdocs/user/USAGE.md67f9e72d1c663dbc8811cdb6c85753844be02381docs/user/USAGE.mdb339b4f6ca25b1b274555394e73a26f8c8d98347docs/user/USAGE.mdb447062d71dc1748d60edfdc0ec437aa597a5b7ddocs/user/USAGE.mdbad53434ecca2bf92ee67c43952598c6a108941edocs/user/USAGE.mdf9b136024e27d1463a70edee4952553628e5f289docs/user/USAGE.md5e296b79d94a6312c385890352d7f76e9a0d4380docs/user/USAGE.mdeb34b754de4b65b11c1f7d9beafe58a0d057c45ddocs/user/USAGE.mda6cb0cb5f277da258a661bb11792e04941f4c790docs/user/USAGE.md48bc3322b68ee855d9188f4eefd701e8007dd21bdocs/user/USAGE.md2636a486c2f71d880b69cadb706eac719f9cc670docs/user/USAGE.md67f94df827623df9210738a5ba3275b9a59f1c8bdocs/user/USAGE.md7b75adc8685edbffaa771e0d436543eaae694b8fdocs/user/USAGE.mdSource comparisons: #6156 adds filesystem-identity checks and #6106 changes startup dependency selection; neither removes the standard-directory requirement for explicit directories. Both merge cleanly. Shared documentation changes describe other features.
Checklist
main; no other open PR implements the same fix (overlapping changes listed above)