LoginSignup
0
3

More than 5 years have passed since last update.

Carthageでどの依存ライブラリはソースからビルドするかを管理するラッパーツールを書いた

Posted at

Carthageでつらい事

Swiftのバージョンが頻繁に上がる時期だったり、
何らかの理由で特定のライブラリだけバイナリから上手く使えなかったりするときに、
それらのライブラリだけは、ソースからビルドしてもらうために--no-use-binariesをつけてupdateしなければならない時が結構あります。

個人で開発しているときは、あまりインストールすることがなかったり、情報伝達のコストは当然かからないので楽なのですが、チームで開発しているときには、それを周知するコストが掛かったりします。

なので、できれば公式にCarthageがCartfileに依存ライブラリごとのオプションを何らか記録できたら良いのですが、現在はサポートされていません。同じことで困っている人もいるようです。

Cartfile support for --no-use-binaries per dependency

Barca

なので、Carthageをラップして、サポートした設定ファイルを扱うツールを自作しました。

Barca

Barcafile

BarcaはCarthageと同様に、カレントディレクトリにBarcafileを設置して使います
BarcafileはCarthageと同じ限定されたOGDL形式で、Carthageと異なるのは、リポジトリにオリジンの末尾にno-use-binをつけられるようになっているところです。コレをつけておくと、その依存ライブラリはソースからビルドされるようになります。

github "ishkawa/APIKit" ~> 3.0
github "SnapKit/SnapKit" ~> 3.0.2
github "cbpowell/MarqueeLabel"
github "ikesyo/Himotoki" == 3.0.0
github "pubnub/objective-c" ~> 4.5
github-no-use-bin "robrix/Either" "master"
github "ReactiveX/RxSwift" ~> 3.0
github "intercom/intercom-ios" ~> 3.0
github "MoZhouqi/KMPlaceholderTextView" ~> 1.3
github "marketplacer/swift-badge" ~> 3.0
github "mixpanel/mixpanel-swift" ~> 2.1
github "realm/realm-cocoa" "v2.1.2"

Barcaの挙動

Barcaはcarthageのupdatebootstrapコマンドをラップしています。
起動時にBarcafileを開きパースした後、Cartfileをカレントディレクトリに吐き出します。(Cartfileが上書きされるので気をつけて下さい)
そして、パースした結果から、ソースでビルドしなくてはならないものと、そうでないライブラリとに対象ライブラリを分け、それぞれのグループについてcarthageのコマンドを実行します。

例えば、上のBarcafileならば
carthage update [...それ以外のライブラリ...]

carthage update Either --no-use-binaries
が順番に実行されます。

また、依存ライブラリ名以外に与えたフラグはそのまま実行されるコマンドの最後に追加されます。
また、ラップしていないupdate,bootstrap以外のコマンドやフラグは直接carthageに渡されるので透過的に使うことができます。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3