> ℹ Please fill out this template when filing an issue.
> All lines beginning with an ℹ symbol instruct you with
> what info we expect.  
> Please remove this line and all above before submitting.

* [ ] I've read and understood the [*CONTRIBUTING guidelines and have done my best effort to follow](https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md).

# Report

## What did you do?

ℹ Please replace this with what you did.  
e.g. Run `pod install`

## What did you expected to happen?

ℹ Please replace this with what you expected to happen.  
e.g. Install all pod dependencies correctly.

## What happened instead?

ℹ Please replace this with of what happened instead.  
e.g. Pod A is missing the subspec B for target C.

## CocoaPods Environment

ℹ Please replace this with the output of `pod env`.
e.g. via `pod env | pbcopy`

## Project that demonstrates the issue

ℹ Please link to a project we can download that reproduces the issue.
You can delete this section if your issue is unrelated to build problems,
i.e. it's only an issue with CocoaPods the tool.
