firebase-ios-sdk icon indicating copy to clipboard operation
firebase-ios-sdk copied to clipboard

Add Firebase Source Distribution for visionOS into existing Xcode Cloud Support for iOS & macOS

Open arthurschiller opened this issue 1 year ago • 6 comments

Description

I have a working Xcode Cloud setup for iOS and macOS, and I'm trying to add visionOS support. Following Firebase's documentation for visionOS, I need to use the source distribution of Firestore instead of the binary distribution.

I've added a ci_post_clone.sh script that sets the required environment variable for visionOS builds:

#!/bin/bash

if [[ $CI_PRODUCT_PLATFORM == "xrOS" ]]; then
    echo "Running setup for visionOS..."
    export FIREBASE_SOURCE_FIRESTORE=1
fi

(this apparently still requires 'xrOS' instead of 'visionOS')

However, this results in the following error during the build:

an out-of-date resolved file was detected at /.../project.xcworkspace/xcshareddata/swiftpm/Package.resolved, which is not allowed when automatic dependency resolution is disabled; please make sure to update the file to reflect the changes in dependencies.

So since setting FIREBASE_SOURCE_FIRESTORE=1 changes which dependencies are required:

  • Normal setup uses: abseil-cpp-binary, grpc-binary
  • Source distribution needs: abseil-cpp-swiftpm, grpc-ios, boringssl-swiftpm

What's the recommended way to handle this in Xcode Cloud when you want to maintain builds for all platforms? Any guidance would be appreciated!

Reproducing the issue

No response

Firebase SDK Version

10.29.0

Xcode Version

16.2

Installation Method

Swift Package Manager

Firebase Product(s)

Firestore

Targeted Platforms

visionOS

Relevant Log Output


If using Swift Package Manager, the project's Package.resolved

Expand Package.resolved for iOS/macOS snippet
{
  "originHash" : "caa7602a4f2bc52fa7deda56872a290d759a149b7585392847863d82e2c124b8",
  "pins" : [
    {
      "identity" : "abseil-cpp-binary",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/abseil-cpp-binary.git",
      "state" : {
        "revision" : "194a6706acbd25e4ef639bcaddea16e8758a3e27",
        "version" : "1.2024011602.0"
      }
    },
    {
      "identity" : "algoliasearch-client-swift",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/algolia/algoliasearch-client-swift",
      "state" : {
        "revision" : "4322ab2dc8cdb7acb6d06a019fd56f84dc998f25",
        "version" : "8.21.0"
      }
    },
    {
      "identity" : "amplitude-ios",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/amplitude/Amplitude-iOS",
      "state" : {
        "revision" : "4471ff73fffdff9a9b256422a0a0b9233582f33d",
        "version" : "8.22.0"
      }
    },
    {
      "identity" : "analytics-connector-ios",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/amplitude/analytics-connector-ios.git",
      "state" : {
        "revision" : "e2ca17ac735bcbc48b13062484541702ef45153d",
        "version" : "1.0.3"
      }
    },
    {
      "identity" : "app-check",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/app-check.git",
      "state" : {
        "revision" : "3b62f154d00019ae29a71e9738800bb6f18b236d",
        "version" : "10.19.2"
      }
    },
    {
      "identity" : "arcore-ios-sdk",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google-ar/arcore-ios-sdk",
      "state" : {
        "revision" : "686fe380b672b9eb6a9ae37c2013a4382e25dc54",
        "version" : "1.45.0"
      }
    },
    {
      "identity" : "firebase-ios-sdk",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/firebase/firebase-ios-sdk.git",
      "state" : {
        "revision" : "eca84fd638116dd6adb633b5a3f31cc7befcbb7d",
        "version" : "10.29.0"
      }
    },
    {
      "identity" : "giphy-ios-sdk",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/Giphy/giphy-ios-sdk",
      "state" : {
        "revision" : "cdefbedc9f99d40cc64667a2bfaae67a1cf36fbb",
        "version" : "2.2.12"
      }
    },
    {
      "identity" : "googleappmeasurement",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/GoogleAppMeasurement.git",
      "state" : {
        "revision" : "fe727587518729046fc1465625b9afd80b5ab361",
        "version" : "10.28.0"
      }
    },
    {
      "identity" : "googledatatransport",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/GoogleDataTransport.git",
      "state" : {
        "revision" : "a637d318ae7ae246b02d7305121275bc75ed5565",
        "version" : "9.4.0"
      }
    },
    {
      "identity" : "googleutilities",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/GoogleUtilities.git",
      "state" : {
        "revision" : "57a1d307f42df690fdef2637f3e5b776da02aad6",
        "version" : "7.13.3"
      }
    },
    {
      "identity" : "grpc-binary",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/grpc-binary.git",
      "state" : {
        "revision" : "e9fad491d0673bdda7063a0341fb6b47a30c5359",
        "version" : "1.62.2"
      }
    },
    {
      "identity" : "gtm-session-fetcher",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/gtm-session-fetcher.git",
      "state" : {
        "revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b",
        "version" : "3.5.0"
      }
    },
    {
      "identity" : "interop-ios-for-google-sdks",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/interop-ios-for-google-sdks.git",
      "state" : {
        "revision" : "2d12673670417654f08f5f90fdd62926dc3a2648",
        "version" : "100.0.0"
      }
    },
    {
      "identity" : "ios-branch-sdk-spm",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/BranchMetrics/ios-branch-sdk-spm",
      "state" : {
        "revision" : "13de0ad975dc317e568d5430adedfd1f56ec081d",
        "version" : "3.6.4"
      }
    },
    {
      "identity" : "leveldb",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/firebase/leveldb.git",
      "state" : {
        "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1",
        "version" : "1.22.5"
      }
    },
    {
      "identity" : "libwebp-xcode",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/SDWebImage/libwebp-Xcode",
      "state" : {
        "revision" : "b2b1d20a90b14d11f6ef4241da6b81c1d3f171e4",
        "version" : "1.3.2"
      }
    },
    {
      "identity" : "lifetimetracker",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/krzysztofzablocki/LifetimeTracker.git",
      "state" : {
        "revision" : "fccc98aae719f6615d1f0cfd8f5e60f3888bdf62",
        "version" : "1.8.4"
      }
    },
    {
      "identity" : "mapbox-common-ios",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/mapbox/mapbox-common-ios.git",
      "state" : {
        "revision" : "c2aa7022afdcf5a070ace4e3b608562101a04690",
        "version" : "23.10.1"
      }
    },
    {
      "identity" : "mapbox-core-maps-ios",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/mapbox/mapbox-core-maps-ios.git",
      "state" : {
        "revision" : "51f776b11bcff34ced88fcf14e4ed9c568257232",
        "version" : "10.18.0"
      }
    },
    {
      "identity" : "mapbox-maps-ios",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/mapbox/mapbox-maps-ios.git",
      "state" : {
        "revision" : "8ef49bb140bbd5d51917f1e69d4c3949a176c009",
        "version" : "10.18.2"
      }
    },
    {
      "identity" : "nanopb",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/firebase/nanopb.git",
      "state" : {
        "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1",
        "version" : "2.30910.0"
      }
    },
    {
      "identity" : "nuke",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/kean/Nuke.git",
      "state" : {
        "branch" : "12.2.0-beta.2",
        "revision" : "f8e1035e887fe4fe50b0a2c2759527d261645062"
      }
    },
    {
      "identity" : "onesignal-ios-sdk",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/OneSignal/OneSignal-iOS-SDK",
      "state" : {
        "revision" : "02ede33062016cd948ba1e4f157e2f5617e12c8e",
        "version" : "5.2.9"
      }
    },
    {
      "identity" : "promises",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/promises.git",
      "state" : {
        "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac",
        "version" : "2.4.0"
      }
    },
    {
      "identity" : "purchases-ios-spm",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/RevenueCat/purchases-ios-spm.git",
      "state" : {
        "revision" : "7f0b552b4d9b446a12740192fe0174dd6d77c6b2",
        "version" : "5.7.1"
      }
    },
    {
      "identity" : "skeletonview",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/Juanpe/SkeletonView.git",
      "state" : {
        "revision" : "2f5274827d310e32c09325dd3e0007120940988e",
        "version" : "1.31.0"
      }
    },
    {
      "identity" : "swift-protobuf",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/apple/swift-protobuf.git",
      "state" : {
        "revision" : "ebc7251dd5b37f627c93698e4374084d98409633",
        "version" : "1.28.2"
      }
    },
    {
      "identity" : "tocropviewcontroller",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/TimOliver/TOCropViewController.git",
      "state" : {
        "revision" : "a634cb7cdfd580006e79a6e74e64417fe9e9783b",
        "version" : "2.7.4"
      }
    },
    {
      "identity" : "turf-swift",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/mapbox/turf-swift.git",
      "state" : {
        "revision" : "213050191cfcb3d5aa76e1fa90c6ff1e182a42ca",
        "version" : "2.8.0"
      }
    }
  ],
  "version" : 3
}
Expand Package.resolved for iOS/macOS snippet
{
  "originHash" : "caa7602a4f2bc52fa7deda56872a290d759a149b7585392847863d82e2c124b8",
  "pins" : [
    {
      "identity" : "abseil-cpp-swiftpm",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/firebase/abseil-cpp-SwiftPM.git",
      "state" : {
        "revision" : "140793ccfa916fe62f965249669e59ef325ae33c",
        "version" : "0.20240116.1"
      }
    },
    {
      "identity" : "algoliasearch-client-swift",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/algolia/algoliasearch-client-swift",
      "state" : {
        "revision" : "4322ab2dc8cdb7acb6d06a019fd56f84dc998f25",
        "version" : "8.21.0"
      }
    },
    {
      "identity" : "amplitude-ios",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/amplitude/Amplitude-iOS",
      "state" : {
        "revision" : "4471ff73fffdff9a9b256422a0a0b9233582f33d",
        "version" : "8.22.0"
      }
    },
    {
      "identity" : "analytics-connector-ios",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/amplitude/analytics-connector-ios.git",
      "state" : {
        "revision" : "e2ca17ac735bcbc48b13062484541702ef45153d",
        "version" : "1.0.3"
      }
    },
    {
      "identity" : "app-check",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/app-check.git",
      "state" : {
        "revision" : "3b62f154d00019ae29a71e9738800bb6f18b236d",
        "version" : "10.19.2"
      }
    },
    {
      "identity" : "arcore-ios-sdk",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google-ar/arcore-ios-sdk",
      "state" : {
        "revision" : "686fe380b672b9eb6a9ae37c2013a4382e25dc54",
        "version" : "1.45.0"
      }
    },
    {
      "identity" : "boringssl-swiftpm",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/firebase/boringssl-SwiftPM.git",
      "state" : {
        "revision" : "38b03401110f03bde32bc7e86ff4f815238ed2d3",
        "version" : "0.32.1"
      }
    },
    {
      "identity" : "firebase-ios-sdk",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/firebase/firebase-ios-sdk.git",
      "state" : {
        "revision" : "eca84fd638116dd6adb633b5a3f31cc7befcbb7d",
        "version" : "10.29.0"
      }
    },
    {
      "identity" : "giphy-ios-sdk",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/Giphy/giphy-ios-sdk",
      "state" : {
        "revision" : "cdefbedc9f99d40cc64667a2bfaae67a1cf36fbb",
        "version" : "2.2.12"
      }
    },
    {
      "identity" : "googleappmeasurement",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/GoogleAppMeasurement.git",
      "state" : {
        "revision" : "fe727587518729046fc1465625b9afd80b5ab361",
        "version" : "10.28.0"
      }
    },
    {
      "identity" : "googledatatransport",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/GoogleDataTransport.git",
      "state" : {
        "revision" : "a637d318ae7ae246b02d7305121275bc75ed5565",
        "version" : "9.4.0"
      }
    },
    {
      "identity" : "googleutilities",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/GoogleUtilities.git",
      "state" : {
        "revision" : "57a1d307f42df690fdef2637f3e5b776da02aad6",
        "version" : "7.13.3"
      }
    },
    {
      "identity" : "grpc-ios",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/grpc/grpc-ios.git",
      "state" : {
        "revision" : "2adbb0708f53823e670e940f3a8d0a5d4b5ee145",
        "version" : "1.62.5"
      }
    },
    {
      "identity" : "gtm-session-fetcher",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/gtm-session-fetcher.git",
      "state" : {
        "revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b",
        "version" : "3.5.0"
      }
    },
    {
      "identity" : "interop-ios-for-google-sdks",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/interop-ios-for-google-sdks.git",
      "state" : {
        "revision" : "2d12673670417654f08f5f90fdd62926dc3a2648",
        "version" : "100.0.0"
      }
    },
    {
      "identity" : "ios-branch-sdk-spm",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/BranchMetrics/ios-branch-sdk-spm",
      "state" : {
        "revision" : "13de0ad975dc317e568d5430adedfd1f56ec081d",
        "version" : "3.6.4"
      }
    },
    {
      "identity" : "leveldb",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/firebase/leveldb.git",
      "state" : {
        "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1",
        "version" : "1.22.5"
      }
    },
    {
      "identity" : "libwebp-xcode",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/SDWebImage/libwebp-Xcode",
      "state" : {
        "revision" : "b2b1d20a90b14d11f6ef4241da6b81c1d3f171e4",
        "version" : "1.3.2"
      }
    },
    {
      "identity" : "lifetimetracker",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/krzysztofzablocki/LifetimeTracker.git",
      "state" : {
        "revision" : "fccc98aae719f6615d1f0cfd8f5e60f3888bdf62",
        "version" : "1.8.4"
      }
    },
    {
      "identity" : "mapbox-common-ios",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/mapbox/mapbox-common-ios.git",
      "state" : {
        "revision" : "c2aa7022afdcf5a070ace4e3b608562101a04690",
        "version" : "23.10.1"
      }
    },
    {
      "identity" : "mapbox-core-maps-ios",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/mapbox/mapbox-core-maps-ios.git",
      "state" : {
        "revision" : "51f776b11bcff34ced88fcf14e4ed9c568257232",
        "version" : "10.18.0"
      }
    },
    {
      "identity" : "mapbox-maps-ios",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/mapbox/mapbox-maps-ios.git",
      "state" : {
        "revision" : "8ef49bb140bbd5d51917f1e69d4c3949a176c009",
        "version" : "10.18.2"
      }
    },
    {
      "identity" : "nanopb",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/firebase/nanopb.git",
      "state" : {
        "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1",
        "version" : "2.30910.0"
      }
    },
    {
      "identity" : "nuke",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/kean/Nuke.git",
      "state" : {
        "branch" : "12.2.0-beta.2",
        "revision" : "f8e1035e887fe4fe50b0a2c2759527d261645062"
      }
    },
    {
      "identity" : "onesignal-ios-sdk",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/OneSignal/OneSignal-iOS-SDK",
      "state" : {
        "revision" : "02ede33062016cd948ba1e4f157e2f5617e12c8e",
        "version" : "5.2.9"
      }
    },
    {
      "identity" : "promises",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/google/promises.git",
      "state" : {
        "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac",
        "version" : "2.4.0"
      }
    },
    {
      "identity" : "purchases-ios-spm",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/RevenueCat/purchases-ios-spm.git",
      "state" : {
        "revision" : "7f0b552b4d9b446a12740192fe0174dd6d77c6b2",
        "version" : "5.7.1"
      }
    },
    {
      "identity" : "skeletonview",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/Juanpe/SkeletonView.git",
      "state" : {
        "revision" : "2f5274827d310e32c09325dd3e0007120940988e",
        "version" : "1.31.0"
      }
    },
    {
      "identity" : "swift-protobuf",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/apple/swift-protobuf.git",
      "state" : {
        "revision" : "ebc7251dd5b37f627c93698e4374084d98409633",
        "version" : "1.28.2"
      }
    },
    {
      "identity" : "tocropviewcontroller",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/TimOliver/TOCropViewController.git",
      "state" : {
        "revision" : "a634cb7cdfd580006e79a6e74e64417fe9e9783b",
        "version" : "2.7.4"
      }
    },
    {
      "identity" : "turf-swift",
      "kind" : "remoteSourceControl",
      "location" : "https://github.com/mapbox/turf-swift.git",
      "state" : {
        "revision" : "213050191cfcb3d5aa76e1fa90c6ff1e182a42ca",
        "version" : "2.8.0"
      }
    }
  ],
  "version" : 3
}

If using CocoaPods, the project's Podfile.lock

Expand Podfile.lock snippet

Replace this line with the contents of your Podfile.lock!

arthurschiller avatar Feb 02 '25 14:02 arthurschiller

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.

google-oss-bot avatar Feb 02 '25 14:02 google-oss-bot

You may need to either build all the platforms from the source distribution or do the VisionOS build in a clean environment.

paulb777 avatar Feb 02 '25 15:02 paulb777

You may need to either build all the platforms from the source distribution or do the VisionOS build in a clean environment.

Hmm I‘m already building the visionOS build in a separate workflow. How else would I clean it up? Remove the package resolved in a script and enforce a manual package resolve? Thanks for the reply!

arthurschiller avatar Feb 02 '25 19:02 arthurschiller

Hmm, I would think a new workflow would give a clean environment. Is there a lingering .build directory? Are you able to reproduce outside of Xcode Cloud?

paulb777 avatar Feb 03 '25 01:02 paulb777

Hey @arthurschiller. We need more information to resolve this issue but there hasn't been an update in 5 weekdays. I'm marking the issue as stale and if there are no new updates in the next 5 days I will close it automatically.

If you have more information that will help us get to the bottom of this, just add a comment!

google-oss-bot avatar Feb 10 '25 02:02 google-oss-bot

Sorry I hadn't had the time yet to loo

Hey @arthurschiller. We need more information to resolve this issue but there hasn't been an update in 5 weekdays. I'm marking the issue as stale and if there are no new updates in the next 5 days I will close it automatically.

If you have more information that will help us get to the bottom of this, just add a comment!

Sorry I hadn't had the time yet to look into it again. Will hopefully be able to on Wednesday or Thursday.

arthurschiller avatar Feb 10 '25 11:02 arthurschiller

Hey @arthurschiller. We need more information to resolve this issue but there hasn't been an update in 5 weekdays. I'm marking the issue as stale and if there are no new updates in the next 5 days I will close it automatically.

If you have more information that will help us get to the bottom of this, just add a comment!

google-oss-bot avatar Mar 28 '25 01:03 google-oss-bot

Since there haven't been any recent updates here, I am going to close this issue.

@arthurschiller if you're still experiencing this problem and want to continue the discussion just leave a comment here and we are happy to re-open this.

google-oss-bot avatar Apr 04 '25 01:04 google-oss-bot