Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
arthurschiller opened this issue Feb 2, 2025 · 6 comments
Labels

Comments

@arthurschiller
Copy link

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!
@google-oss-bot
Copy link

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

@paulb777
Copy link
Member

paulb777 commented Feb 2, 2025

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

@arthurschiller
Copy link
Author

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!

@paulb777
Copy link
Member

paulb777 commented Feb 3, 2025

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?

@google-oss-bot
Copy link

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!

@arthurschiller
Copy link
Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants