diff --git a/Yattee.xcodeproj/project.pbxproj b/Yattee.xcodeproj/project.pbxproj index f5ffc40e..79ce3f3f 100644 --- a/Yattee.xcodeproj/project.pbxproj +++ b/Yattee.xcodeproj/project.pbxproj @@ -3014,7 +3014,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#!/bin/bash\n\n# Clean module caches for macOS builds\nif [ \"$PLATFORM_NAME\" = \"macosx\" ]; then\n echo \"Cleaning Swift module caches...\"\n rm -rf \"$DERIVED_FILE_DIR/SwiftExplicitPrecompiledModules\"\n rm -rf \"$BUILD_DIR/../../Intermediates.noindex/SwiftExplicitPrecompiledModules\"\nfi\n\n# Fix framework bundle structure for macOS\n# Converts shallow bundles (iOS-style) to versioned bundles (macOS-style)\n\nset -e\n\nif [ \"$PLATFORM_NAME\" != \"macosx\" ]; then\n echo \"Skipping framework conversion - not building for macOS\"\n exit 0\nfi\n\nFRAMEWORKS_DIR=\"$BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH/Frameworks\"\n\nif [ ! -d \"$FRAMEWORKS_DIR\" ]; then\n echo \"No Frameworks directory found at $FRAMEWORKS_DIR\"\n exit 0\nfi\n\necho \"Converting frameworks to versioned bundle structure...\"\n\nfor framework in \"$FRAMEWORKS_DIR\"/*.framework; do\n if [ ! -d \"$framework\" ]; then\n continue\n fi\n \n FRAMEWORK_NAME=$(basename \"$framework\" .framework)\n \n # Check if it's already a versioned bundle\n if [ -d \"$framework/Versions/Current\" ]; then\n echo \"✓ $FRAMEWORK_NAME is already a versioned bundle\"\n continue\n fi\n \n # Check if it's a shallow bundle (has Info.plist at root and no Versions folder)\n if [ -f \"$framework/Info.plist\" ] && [ ! -d \"$framework/Versions\" ]; then\n echo \"→ Converting $FRAMEWORK_NAME to versioned bundle...\"\n \n # Create versioned structure\n mkdir -p \"$framework/Versions/A\"\n \n # Move the binary if it exists\n if [ -f \"$framework/$FRAMEWORK_NAME\" ]; then\n mv \"$framework/$FRAMEWORK_NAME\" \"$framework/Versions/A/\"\n fi\n \n # Create Resources directory and move appropriate files\n mkdir -p \"$framework/Versions/A/Resources\"\n \n # Move Info.plist\n if [ -f \"$framework/Info.plist\" ]; then\n mv \"$framework/Info.plist\" \"$framework/Versions/A/Resources/\"\n fi\n \n # Move Headers if they exist\n if [ -d \"$framework/Headers\" ]; then\n mv \"$framework/Headers\" \"$framework/Versions/A/\"\n fi\n \n # Move Modules if they exist\n if [ -d \"$framework/Modules\" ]; then\n mv \"$framework/Modules\" \"$framework/Versions/A/\"\n fi\n \n # Move any other resource files/folders\n for item in \"$framework\"/*; do\n ITEM_NAME=$(basename \"$item\")\n # Skip if it's the Versions directory or _CodeSignature\n if [ \"$ITEM_NAME\" != \"Versions\" ] && [ \"$ITEM_NAME\" != \"_CodeSignature\" ]; then\n if [ -e \"$item\" ]; then\n mv \"$item\" \"$framework/Versions/A/Resources/\"\n fi\n fi\n done\n \n # Create symlinks\n cd \"$framework/Versions\"\n ln -sf \"A\" \"Current\"\n cd \"$framework\"\n ln -sf \"Versions/Current/Resources/Info.plist\" \"Info.plist\"\n ln -sf \"Versions/Current/$FRAMEWORK_NAME\" \"$FRAMEWORK_NAME\"\n ln -sf \"Versions/Current/Resources\" \"Resources\"\n \n # Recreate Headers and Modules symlinks if they exist\n if [ -d \"Versions/A/Headers\" ]; then\n ln -sf \"Versions/Current/Headers\" \"Headers\"\n fi\n \n if [ -d \"Versions/A/Modules\" ]; then\n ln -sf \"Versions/Current/Modules\" \"Modules\"\n fi\n \n echo \"✓ Successfully converted $FRAMEWORK_NAME\"\n else\n echo \"⚠ $FRAMEWORK_NAME has unknown structure, skipping\"\n fi\ndone\n\necho \"Framework conversion complete!\"\n"; + shellScript = "#!/bin/bash\nset -e\n\n[ \"$PLATFORM_NAME\" != \"macosx\" ] && exit 0\n\nconvert_fw() {\n [ ! -d \"$1\" ] && return\n shopt -s nullglob\n for fw in \"$1\"/*.framework; do\n [ ! -d \"$fw\" ] && continue\n [ -d \"$fw/Versions/Current\" ] && continue\n n=$(basename \"$fw\" .framework)\n [ -f \"$fw/Info.plist\" ] && [ ! -d \"$fw/Versions\" ] || continue\n \n mkdir -p \"$fw/Versions/A/Resources\"\n [ -f \"$fw/$n\" ] && mv \"$fw/$n\" \"$fw/Versions/A/\"\n [ -f \"$fw/Info.plist\" ] && mv \"$fw/Info.plist\" \"$fw/Versions/A/Resources/\"\n [ -d \"$fw/Headers\" ] && mv \"$fw/Headers\" \"$fw/Versions/A/\"\n [ -d \"$fw/Modules\" ] && mv \"$fw/Modules\" \"$fw/Versions/A/\"\n \n for i in \"$fw\"/*; do\n b=$(basename \"$i\")\n [ \"$b\" != \"Versions\" ] && [ \"$b\" != \"_CodeSignature\" ] && [ -e \"$i\" ] && mv \"$i\" \"$fw/Versions/A/Resources/\"\n done\n \n (cd \"$fw/Versions\" && ln -sf A Current)\n (cd \"$fw\" && ln -sf Versions/Current/Resources/Info.plist Info.plist && ln -sf Versions/Current/$n $n && ln -sf Versions/Current/Resources Resources)\n [ -d \"$fw/Versions/A/Headers\" ] && (cd \"$fw\" && ln -sf Versions/Current/Headers Headers)\n [ -d \"$fw/Versions/A/Modules\" ] && (cd \"$fw\" && ln -sf Versions/Current/Modules Modules)\n \n # Re-sign the framework after conversion\n codesign --force --sign \"$EXPANDED_CODE_SIGN_IDENTITY\" --timestamp --options runtime \"$fw\" || true\n done\n shopt -u nullglob\n}\n\nconvert_fw \"$BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH/Frameworks\"\n"; }; 37FD43EA2704A2350073EE42 /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -4205,7 +4205,7 @@ CURRENT_PROJECT_VERSION = 204; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 14.0; - MACOSX_DEPLOYMENT_TARGET = 11.0; + MACOSX_DEPLOYMENT_TARGET = 14.0; MARKETING_VERSION = 1.5.2; PRODUCT_BUNDLE_IDENTIFIER = "net.arekf.Shared-Tests"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4225,7 +4225,7 @@ CURRENT_PROJECT_VERSION = 204; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 14.0; - MACOSX_DEPLOYMENT_TARGET = 11.0; + MACOSX_DEPLOYMENT_TARGET = 14.0; MARKETING_VERSION = 1.5.2; PRODUCT_BUNDLE_IDENTIFIER = "net.arekf.Shared-Tests"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -4507,7 +4507,7 @@ "@executable_path/../Frameworks", ); LIBRARY_SEARCH_PATHS = "$(inherited)"; - MACOSX_DEPLOYMENT_TARGET = 11.0; + MACOSX_DEPLOYMENT_TARGET = 14.0; MARKETING_VERSION = 1.5.2; OTHER_LDFLAGS = "-Wl,-no_compact_unwind"; PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app; @@ -4548,7 +4548,7 @@ "@executable_path/../Frameworks", ); LIBRARY_SEARCH_PATHS = "$(inherited)"; - MACOSX_DEPLOYMENT_TARGET = 11.0; + MACOSX_DEPLOYMENT_TARGET = 14.0; MARKETING_VERSION = 1.5.2; OTHER_LDFLAGS = "-Wl,-no_compact_unwind"; PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app; @@ -5077,8 +5077,8 @@ isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/mpvkit/MPVKit.git"; requirement = { - kind = upToNextMajorVersion; - minimumVersion = 0.39.0; + branch = main; + kind = branch; }; }; /* End XCRemoteSwiftPackageReference section */ diff --git a/Yattee.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Yattee.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index b94aacfd..cbd7d649 100644 --- a/Yattee.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Yattee.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -60,8 +60,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/mpvkit/MPVKit.git", "state" : { - "revision" : "839dfa34b96029daef10b32d401c98edf17f04ae", - "version" : "0.39.0" + "branch" : "main", + "revision" : "e7e914a70e943f0d4f050c9ede793af8f6e74ad7" } }, { diff --git a/fastlane/Fastfile b/fastlane/Fastfile index ecbe0550..3f7023c5 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -254,20 +254,28 @@ platform :mac do api_key: api_key ) - build_mac_app( + # Build and archive, but skip export to avoid extended attribute issues + gym( scheme: "#{APP_NAME} (macOS)", - output_directory: "fastlane/builds/#{version}-#{build}/macOS", - output_name: "#{APP_NAME}", - export_method: "developer-id", - export_options: { - provisioningProfiles: { - "#{DEVELOPER_APP_IDENTIFIER}" => "match Direct #{DEVELOPER_APP_IDENTIFIER} macos" - } - } + skip_package_pkg: true, + skip_archive: false ) + # Get the app from the archive's InstallationBuildProductsLocation + archive_path = lane_context[SharedValues::XCODEBUILD_ARCHIVE] + app_path = "#{archive_path}/Products/Applications/#{APP_NAME}.app" + + UI.message("Archive path: #{archive_path}") + UI.message("App path: #{app_path}") + + # Create PKG directly from the archived app (before any export processing) + pkg_path = File.expand_path("builds/#{version}-#{build}/macOS/#{APP_NAME}.pkg", File.dirname(__FILE__)) + UI.message("Creating PKG installer from archived app...") + sh("productbuild --component '#{app_path}' /Applications --sign 'Developer ID Installer: Arkadiusz Fal (78Z5H3M6RJ)' '#{pkg_path}'") + UI.success("Created PKG: #{pkg_path}") + notarize( - package: "fastlane/builds/#{version}-#{build}/macOS/#{APP_NAME}.app", + package: pkg_path, bundle_id: "#{DEVELOPER_APP_IDENTIFIER}", api_key: api_key, print_log: true