Переглянути джерело

build: fix framework structure for macOS

osy 4 роки тому
батько
коміт
910887d561
2 змінених файлів з 20 додано та 7 видалено
  1. 19 6
      scripts/build_dependencies.sh
  2. 1 1
      scripts/package_mac.sh

+ 19 - 6
scripts/build_dependencies.sh

@@ -311,19 +311,32 @@ fixup () {
     LIBNAME=${BASEFILENAME#lib*}
     BUNDLE_ID="com.utmapp.${LIBNAME//_/-}"
     FRAMEWORKNAME="$LIBNAME.framework"
-    FRAMEWORKPATH="$PREFIX/Frameworks/$FRAMEWORKNAME"
+    BASEFRAMEWORKPATH="$PREFIX/Frameworks/$FRAMEWORKNAME"
+    if [ "$PLATFORM" == "macos" ]; then
+        FRAMEWORKPATH="$BASEFRAMEWORKPATH/Versions/A"
+        INFOPATH="$FRAMEWORKPATH/Resources"
+    else
+        FRAMEWORKPATH="$BASEFRAMEWORKPATH"
+        INFOPATH="$FRAMEWORKPATH"
+    fi
     NEWFILE="$FRAMEWORKPATH/$LIBNAME"
     LIST=$(otool -L "$FILE" | tail -n +2 | cut -d ' ' -f 1 | awk '{$1=$1};1')
     OLDIFS=$IFS
     IFS=$'\n'
     echo "${GREEN}Fixing up $FILE...${NC}"
     mkdir -p "$FRAMEWORKPATH"
+    mkdir -p "$INFOPATH"
     cp -a "$FILE" "$NEWFILE"
-    /usr/libexec/PlistBuddy -c "Add :CFBundleExecutable string $LIBNAME" "$FRAMEWORKPATH/Info.plist"
-    /usr/libexec/PlistBuddy -c "Add :CFBundleIdentifier string $BUNDLE_ID" "$FRAMEWORKPATH/Info.plist"
-    /usr/libexec/PlistBuddy -c "Add :MinimumOSVersion string $SDKMINVER" "$FRAMEWORKPATH/Info.plist"
-    /usr/libexec/PlistBuddy -c "Add :CFBundleVersion string 1" "$FRAMEWORKPATH/Info.plist"
-    /usr/libexec/PlistBuddy -c "Add :CFBundleShortVersionString string 1.0" "$FRAMEWORKPATH/Info.plist"
+    /usr/libexec/PlistBuddy -c "Add :CFBundleExecutable string $LIBNAME" "$INFOPATH/Info.plist"
+    /usr/libexec/PlistBuddy -c "Add :CFBundleIdentifier string $BUNDLE_ID" "$INFOPATH/Info.plist"
+    /usr/libexec/PlistBuddy -c "Add :MinimumOSVersion string $SDKMINVER" "$INFOPATH/Info.plist"
+    /usr/libexec/PlistBuddy -c "Add :CFBundleVersion string 1" "$INFOPATH/Info.plist"
+    /usr/libexec/PlistBuddy -c "Add :CFBundleShortVersionString string 1.0" "$INFOPATH/Info.plist"
+    if [ "$PLATFORM" == "macos" ]; then
+        ln -sf "A" "$BASEFRAMEWORKPATH/Versions/Current"
+        ln -sf "Versions/Current/Resources" "$BASEFRAMEWORKPATH/Resources"
+        ln -sf "Versions/Current/$LIBNAME" "$BASEFRAMEWORKPATH/$LIBNAME"
+    fi
     newname="@rpath/$FRAMEWORKNAME/$LIBNAME"
     install_name_tool -id "$newname" "$NEWFILE"
     for g in $LIST

+ 1 - 1
scripts/package_mac.sh

@@ -78,7 +78,7 @@ fi
 rm -rf "$INPUT_COPY"
 cp -r "$INPUT" "$INPUT_COPY"
 find "$INPUT_COPY/Products/Applications/UTM.app" -type f \( -path '*/Contents/MacOS/*' -or \( -path '*/Frameworks/*.framework/*' -and -not -name 'Info.plist' \) \) -exec chmod +x \{\} \;
-find "$INPUT_COPY/Products/Applications/UTM.app" \( -path '*/Frameworks/*.framework/*' -and -not -name 'Info.plist' \) -exec codesign --force --sign - --timestamp=none \{\} \;
+find "$INPUT_COPY/Products/Applications/UTM.app" -type d -path '*/Frameworks/*.framework' -exec codesign --force --sign - --timestamp=none \{\} \;
 codesign --force --sign - --entitlements "$LAUNCHER_ENTITLEMENTS" --timestamp=none --options runtime "$INPUT_COPY/Products/Applications/UTM.app/Contents/XPCServices/QEMUHelper.xpc/Contents/MacOS/QEMULauncher"
 codesign --force --sign - --entitlements "$HELPER_ENTITLEMENTS" --timestamp=none --options runtime "$INPUT_COPY/Products/Applications/UTM.app/Contents/XPCServices/QEMUHelper.xpc/Contents/MacOS/QEMUHelper"
 codesign --force --sign - --entitlements "$UTM_ENTITLEMENTS" --timestamp=none --options runtime "$INPUT_COPY/Products/Applications/UTM.app/Contents/MacOS/UTM"