yonaskolb / yonaskolb/XcodeGen

Recursive Carthage dependencies

Open
#266 5 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Swift
Stars
8.8k
Forks
908
Avg merge
17d 14h
Merged PRs (30d)
2

Description

I'm not 100% if this is within the scope of this project, but currently, when adding Carthage dependencies you also have to manually add any Carthage dependencies that they may in their turn depend on.

E.g. I might have an iOS application that depends on BioPass. I add github "LinusU/BioPass" ~> 1.1.1 to my Cartfile, and - carthage: BioPass to the dependencies in project.yml.

Now, BioPass in turns depends on PromiseKit, and Carthage will correctly pick this up and install both BioPass and PromiseKit. However, trying to run the built app will crash with: Library not loaded: @rpath/PromiseKit.framework/PromiseKit.

The current fix is to add - carthage: PromiseKit to the list in project.yml, and then all is well. However, I think it would be excellent if this could be done automatically, as Carthage does.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating XcodeGen's handling of Carthage dependencies and reproduce the BioPass/PromiseKit example described in the issue. Trace how the generated project represents direct Carthage dependencies, then verify that a transitive framework is available at runtime without adding it manually to project.yml.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
build-system
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.