2
0
Эх сурвалжийг харах

[iOS] ensure that all RPATH entries of dependencies point to real files

AltStore has issues with symlinks to dylibs
Andrey Filipenkov 1 долоо хоног өмнө
parent
commit
b7aefc198c

+ 25 - 5
ios/rpath_remove_symlinks.sh

@@ -1,7 +1,27 @@
 #!/usr/bin/env bash
 
-cd "$CODESIGNING_FOLDER_PATH/Frameworks"
-tbbFilename=$(otool -L libNullkiller.dylib | egrep --only-matching 'libtbb\S+')
-if [[ -L "$tbbFilename" ]]; then
-	mv -f "$(readlink "$tbbFilename")" "$tbbFilename"
-fi
+# AltStore has issues with symlinks to dylibs
+
+cd "$CODESIGNING_FOLDER_PATH/$BUNDLE_FRAMEWORKS_FOLDER_PATH"
+
+# find rpath entries that point to symlinks
+rpathSymlinks=()
+for binary in "../$EXECUTABLE_NAME" $(find . -type f -iname '*.dylib'); do
+	echo "checking $binary"
+	# dyld_info sample output: @rpath/libogg.0.dylib
+	for lib in $(dyld_info -linked_dylibs "$binary" | awk -F / '/@rpath/ {print $2}'); do
+		if [ -L "$lib" ]; then
+			echo "- symlink: $lib"
+			rpathSymlinks+=("$lib")
+		fi
+	done
+done
+
+# move real files to symlinks location
+echo
+for symlink in "${rpathSymlinks[@]}"; do
+	mv -fv "$(readlink "$symlink")" "$symlink"
+done
+
+# remove the rest of the useless symlinks
+find . -type l -delete