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

Select specific scheme per dependency in Cartfile #728

Closed
lukescott opened this issue Aug 31, 2015 · 5 comments
Closed

Select specific scheme per dependency in Cartfile #728

lukescott opened this issue Aug 31, 2015 · 5 comments

Comments

@lukescott
Copy link

lukescott commented Aug 31, 2015

I'm using SQLite.swift in my project. It has two targets: SQLite and SQLiteCipher. First one builds with iOS's sqlite and the ladder build it itself, both end up creating the same framework, one clobbering the other. They also take a long time to build individually, which can be frustrating. I only want to build what I'm using.

Now the immediate solution that the author is looking into is separating SQLiteCipher into another repo. But this situation can come up for any number of reasons: You only want one build scheme.

How about something like this:

github https://github.com/stephencelis/SQLite.swift "master" "SQLite"
[location] [url] [version/branch] [scheme,...]

Choosing a scheme could also be used to select platform since those are scheme based as well, right? Unless it's a universal framework, in which case the build only happens once anyway, correct?

@lukescott lukescott changed the title Select specific scheme per dependency Select specific scheme per dependency in Cartfile Aug 31, 2015
@kukushi
Copy link

kukushi commented Sep 16, 2015

+1. In most cases, we only need one of the many schemes a single framework provides.

@torstenlehmann
Copy link

+1

Especially useful if a scheme's platform is not supported. E.g. Xcode 7.0 does not support platforms of Xcode 7.1. A tvOS scheme defaults to "My Mac", which leads to failing builds even if I use --platform mac.

@mdiep
Copy link
Member

mdiep commented Oct 29, 2015

I don't think Carthage will ever add support for this. Recent platform additions notwithstanding, this isn't something you should need to do.

@mdiep mdiep closed this as completed Oct 29, 2015
@lukescott
Copy link
Author

@mdiep

this isn't something you should need to do

In most cases perhaps. But when you have different types of builds beyond platform (a different set of build flags), Carthage is impossible to use when more than one scheme build to the same location causing one to globber the other. Is it so unreasonable to specify in the Cartfile which scheme to resolve to?

It's also kind of silly to have to specify the platform on the command line every time. But I can specify it, so I just move on. But in the above case there is nothing I can do without expecting the author to split his project up.

@mdiep
Copy link
Member

mdiep commented Oct 29, 2015

In most cases perhaps. But when you have different types of builds beyond platform (a different set of build flags), Carthage is impossible to use when more than one scheme build to the same location causing one to globber the other. Is it so unreasonable to specify in the Cartfile which scheme to resolve to?

The issue is that it (a) adds complexity to Carthage and (b) encourages framework developers to make bad choices. It's easier and simpler for framework developers to use a different .framework name if they need to do something like SQLite.swift's Cipher support.

It's also kind of silly to have to specify the platform on the command line every time.

#356 is open to discuss this.

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

No branches or pull requests

4 participants