From 9428b496adcaaffc4bb1ff54de666f119a87179e Mon Sep 17 00:00:00 2001 From: Aaron Murgatroyd Date: Tue, 15 Apr 2025 03:24:20 +1000 Subject: [PATCH] Fixed MACOS build issues with ._ files and signing --- .gitignore | 4 +++ distribution/macos/bundle_fix_up.py | 35 ++++++++++++++----------- distribution/macos/create_app_bundle.sh | 9 +++++-- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index 9a192926f..8357033e6 100644 --- a/.gitignore +++ b/.gitignore @@ -178,3 +178,7 @@ PublishProfiles/ # Ignore MacOS Attribute Files ._* + +# Ignore distribution build files +distribution/macos/temp/ +distribution/macos/output/ diff --git a/distribution/macos/bundle_fix_up.py b/distribution/macos/bundle_fix_up.py index 273d7455d..1c0f67bbf 100644 --- a/distribution/macos/bundle_fix_up.py +++ b/distribution/macos/bundle_fix_up.py @@ -562,26 +562,29 @@ search_path = [ for path in content_directory.rglob("**/*.dylib"): - current_search_path = [path.parent] - current_search_path.extend(search_path) + if not path.name.startswith("._"): + current_search_path = [path.parent] + current_search_path.extend(search_path) - fixup_dylib( - path, - get_path_related_to_target_exec(content_directory, path), - current_search_path, - content_directory, - ) + print(f"Fixing path '{path}' using search path of '{current_search_path}' for context of '{content_directory}'.") + fixup_dylib( + path, + get_path_related_to_target_exec(content_directory, path), + current_search_path, + content_directory, + ) for path in content_directory.rglob("**/*.so"): - current_search_path = [path.parent] - current_search_path.extend(search_path) + if not path.name.startswith("._"): + current_search_path = [path.parent] + current_search_path.extend(search_path) - fixup_dylib( - path, - get_path_related_to_target_exec(content_directory, path), - current_search_path, - content_directory, - ) + fixup_dylib( + path, + get_path_related_to_target_exec(content_directory, path), + current_search_path, + content_directory, + ) with open(executable_path, "rb") as input: diff --git a/distribution/macos/create_app_bundle.sh b/distribution/macos/create_app_bundle.sh index e4397da84..4d217a1e8 100755 --- a/distribution/macos/create_app_bundle.sh +++ b/distribution/macos/create_app_bundle.sh @@ -30,9 +30,14 @@ cp -r "$PUBLISH_DIRECTORY/THIRDPARTY.md" "$APP_BUNDLE_DIRECTORY/Contents/Resourc echo -n "APPL????" > "$APP_BUNDLE_DIRECTORY/Contents/PkgInfo" # Fixup libraries and executable +echo "Running budle fix up python script" python3 bundle_fix_up.py "$APP_BUNDLE_DIRECTORY" MacOS/Ryujinx +# Resign all dyplib files as ad-hoc after changing them +find "$APP_BUNDLE_DIRECTORY/Contents/Frameworks" -type f -name "*.dylib" -exec codesign --force --sign - {} \; + # Now sign it +echo "Starting signing process" if ! [ -x "$(command -v codesign)" ]; then if ! [ -x "$(command -v rcodesign)" ]; @@ -42,9 +47,9 @@ then fi # cargo install apple-codesign - echo "Usign rcodesign for ad-hoc signing" + echo "Using rcodesign for ad-hoc signing" rcodesign sign --entitlements-xml-path "$ENTITLEMENTS_FILE_PATH" "$APP_BUNDLE_DIRECTORY" else - echo "Usign codesign for ad-hoc signing" + echo "Using codesign for ad-hoc signing" codesign --entitlements "$ENTITLEMENTS_FILE_PATH" -f -s - "$APP_BUNDLE_DIRECTORY" fi