From 37e2ce118ce7f3f1f456c85ed616deb3f73b1d6f Mon Sep 17 00:00:00 2001 From: v0lumehi Date: Wed, 28 Oct 2026 22:58:44 +0100 Subject: [PATCH] Patch queue: drop 0025, #174 already carries the #171 change Both #173 and #174 absorbed the xcode_projects.py change, so 0025 applies empty on the pin and check fails. --- dm/fork_patches.txt | 1 - patches/0025-ios-xcode-projects-prune.patch | 69 --------------------- patches/series | 1 - 3 files changed, 71 deletions(-) delete mode 100644 patches/0025-ios-xcode-projects-prune.patch diff --git a/dm/fork_patches.txt b/dm/fork_patches.txt index 13033f43..89b4b693 100644 --- a/dm/fork_patches.txt +++ b/dm/fork_patches.txt @@ -17,4 +17,3 @@ ref-hle-hid-d2r fork-patches-stamp nsp-dotnet-root-verify games-md-gallery -ios-xcode-projects-prune diff --git a/patches/0025-ios-xcode-projects-prune.patch b/patches/0025-ios-xcode-projects-prune.patch deleted file mode 100644 index d69b22d4..00000000 --- a/patches/0025-ios-xcode-projects-prune.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: LNPANDY -Date: Thu, 29 Oct 2026 04:42:13 +0800 -Subject: [PATCH] Xcode projects: a bundle-ID check must not crash on a project - another macOS user owns -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The workspace records absolute paths, and the launcher's saved state crosses accounts on a shared Mac. A new user running the same build hits PermissionError when check_bundle_id stats a project registered by the first user — the build dies with a Python traceback instead of a message. Skip unreadable projects: if this user cannot read them, they cannot be using the bundle ID either. - -The report: a new macOS user building Hades II hit PermissionError on /Users/hejie/... paths inside xcode_projects.py:38 — the workspace file inherited the first user's absolute paths. - -Upstream-Status: pending -Reason: General fix for a PermissionError on a workspace shared between macOS users (#171), belongs upstream at seedds/nxnative -Issue: LNPANDY/NX2Apple#171 - ---- - dm/ios/tools/xcode_projects.py | 34 +++++++++++++++++++++++++++++++++- - 1 file changed, 33 insertions(+), 1 deletion(-) - -diff --git a/dm/ios/tools/xcode_projects.py b/dm/ios/tools/xcode_projects.py -index a832ad5a..0f5485df 100644 ---- a/dm/ios/tools/xcode_projects.py -+++ b/dm/ios/tools/xcode_projects.py -@@ -33,10 +33,42 @@ def workspace_projects(workspace): - if kind == 'absolute': yield Path(path).resolve() - - -+def prune_unreadable(workspace): -+ """Remove workspace entries the current user cannot access, and save the file. -+ -+ The workspace records absolute paths, and the launcher's saved state crosses accounts on a -+ shared Mac: a new user's build inherits the first user's entries and dies with PermissionError -+ when it stats them. A project this user cannot read is not this user's project — removing the -+ entry is the fix, not a message telling them to edit XML.""" -+ path = Path(workspace) / 'contents.xcworkspacedata' -+ if not path.exists(): return 0 -+ tree = workspace_tree(workspace) -+ removed = 0 -+ for group in tree.iter('Group'): -+ for ref in list(group.findall('FileRef')): -+ kind, _, loc = ref.get('location', '').partition(':') -+ if kind != 'absolute': continue -+ try: -+ Path(loc).exists() -+ continue # the current user can read it: a real project, not a stale entry -+ except (PermissionError, OSError): -+ pass -+ group.remove(ref) -+ removed += 1 -+ if removed: -+ tree.write(str(path), xml_declaration=True, encoding='unicode') -+ print(f'[NOTE] removed {removed} workspace entr{"y" if removed == 1 else "ies"} the current user cannot read (registered by another macOS user)') -+ return removed -+ -+ - def check_bundle_id(workspace, project, bundle_id): -+ prune_unreadable(workspace) - for other in workspace_projects(workspace): - if other == Path(project).resolve() or not other.exists(): continue -- used = signing_settings(other).get('PRODUCT_BUNDLE_IDENTIFIER', '') -+ try: -+ used = signing_settings(other).get('PRODUCT_BUNDLE_IDENTIFIER', '') -+ except (PermissionError, OSError): -+ continue - if used.lower() == bundle_id.lower(): - raise ValueError(f'bundle ID {bundle_id} is already used by {other}; choose a different --bundle-id for this game') - diff --git a/patches/series b/patches/series index 45287381..01b3b121 100644 --- a/patches/series +++ b/patches/series @@ -18,4 +18,3 @@ 0017-fork-patches-stamp.patch 0018-nsp-dotnet-root-verify.patch 0024-games-md-gallery.patch -0025-ios-xcode-projects-prune.patch