Converting CocoaPods dependencies

This document provides high-level guidelines for converting CocoaPods dependencies to Bazel packages that are compatible with Tulsi. CocoaPods is a third-party dependency management system for Apple application development.

Note: CocoaPods conversion is a manual process with many variables. CocoaPods integration with Bazel has not been fully verified and is not officially supported.

Analyze your CocoaPods dependencies

If you’re using CocoaPods, you need to:

  1. Examine the Podfile files to determine the hierarchy of the Podspecs.

  2. Take note of the version numbers in the corresponding Podfile.lock files to ensure that you are pulling the correct Podspecs.

  3. Document the dependency tree, including the hierarchy of the Podspecs, resource URLs, filenames, and version numbers.

Converting a Podspec to a Bazel package

To convert a Podspec dependency to a Bazel package, do the following:

  1. Download each Podspec and decompress it into its own directory within the Bazel workspace. All Podspecs must reside within the same Bazel workspace for Tulsi to be aware of them for inclusion in the Xcode project.

  2. Within the Podspec directory, create a BUILD file that specifies the library target(s) referencing the source and header files on which your project depends.

  3. Based on your project’s dependency tree, add the Podspecs target(s) as dependencies to the appropriate targets in the project’s BUILD file(s).

  4. In the project’s BUILD files, configure package visibility as desired.