Carthage: Binaries are no longer pulled if using --no-build option

Created on 9 May 2018  路  7Comments  路  Source: Carthage/Carthage

PR Reference:

Follow up question on this change: Move binary download to build process #2342

Given this change, and use case:
carthage update --no-build --use-ssh --use-submodules $@

A mix of submodule internal/external Carthage Dependencies, plus a few additional Carthage Binary only dependencies based on those developer's project distribution preferences. This allows us to pull in dependencies and only build required architectures while developing.

Previously (0.28.0), this worked, with the issue of cached binary as referenced in PR summary.

From what I'm reading here, if we skill build via --no-build, this would prevent binary download? Any recommendations for how to approach this use case? Perhaps I'm approaching project dependency management in a way that is not optimal? Or if there is another solution of managing submodules vs binaries I had missed?

Details

  • carthage install method: [ ] .pkg, [ ] homebrew, [ ] source
  • which carthage: /usr/local/bin/carthage
  • carthage version: 0.29.0
  • xcodebuild -version: Xcode 9.3 Build version 9E145
  • Are you using --no-build? YES
  • Are you using --no-use-binaries? NO
  • Are you using --use-submodules? YES
  • Are you using --cache-builds? NO
  • Are you using --new-resolver? NO

carthage update --no-build --use-ssh --use-submodules

Cartfile

# Interanal
github "https://github.<company>.com/<group>/<project>" ~> 12.0

# Binary Only Third Party
binary "https://raw.githubusercontent.com/dmiluski/CarthageSpecs/master/AppboyFramework.json"
binary "https://raw.githubusercontent.com/dmiluski/CarthageSpecs/master/mParticle-Appboy.json"

Carthage Output

LM-SFP-21014341:DummyStage dmiluski$ carthage update --no-build --use-ssh --use-submodules
*** Fetching SwiftMessages
*** Downloading binary-only framework AppboyFramework at "https://raw.githubusercontent.com/dmiluski/CarthageSpecs/master/AppboyFramework.json"
*** Checking out SwiftMessages at "4.1.4"

// But binary-only  was not actually downloaded to folder

Actual outcome

*** Fetching SwiftMessages
*** Downloading binary-only framework AppboyFramework at "https://raw.githubusercontent.com/dmiluski/CarthageSpecs/master/AppboyFramework.json"
*** Checking out SwiftMessages at "4.1.4"

// Binary-only  IS ACTUALLY downloaded to folder

Expected outcome

Carthage should pull dependencies specified as submodules as well as pull binaries even if --no-build is passed in.

bug

Most helpful comment

In the meantime, for anyone finding this issue, carthage build BinaryDep1 BinaryDep2 in your build script is probably the best workaround.

You can also script this by grepping the binary packages that Carthage has resolved:

binary_packages=$(grep -e '^binary' Cartfile.resolved | awk '{print $$2}' | xargs basename -s.json)
carthage build $binary_packages

All 7 comments

Actually this is not related to --use-submodules but related to --no-build.

@ikesyo What is the progress of this issue? Are there any directions for solving it?

Any command to download binaries only?

Unsure what the status of this issue is - I鈥檝e tried drilling through all the linked issues and can only find rejected PRs. Is there some way to download/unpack binaries without building?

It is currently not possible. Only manifest files are downloaded

In the meantime, for anyone finding this issue, carthage build BinaryDep1 BinaryDep2 in your build script is probably the best workaround.

In the meantime, for anyone finding this issue, carthage build BinaryDep1 BinaryDep2 in your build script is probably the best workaround.

You can also script this by grepping the binary packages that Carthage has resolved:

binary_packages=$(grep -e '^binary' Cartfile.resolved | awk '{print $$2}' | xargs basename -s.json)
carthage build $binary_packages
Was this page helpful?
0 / 5 - 0 ratings