blob: fb037d4f02963b2c318068b55f10c7c77a6955e2 [file] [log] [blame] [view]
---
layout: documentation
title: Converting CocoaPods dependencies
---
# Converting CocoaPods dependencies
This document provides high-level guidelines for converting [CocoaPods](https://www.cocoapods.org/)
dependencies to Bazel packages that are compatible with [Tulsi](https://tulsi.bazel.build/).
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 `Podspec`s 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 `Podspec`s 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.