SwiftyLab / MetaCodable

Supercharge Swift's Codable implementations with macros meta-programming.
https://swiftpackageindex.com/SwiftyLab/MetaCodable/main/documentation/metacodable
MIT License
604 stars 22 forks source link

Xcode build archive fails #79

Open danthorpe opened 5 months ago

danthorpe commented 5 months ago

Describe the bug xcodebuild archive fails in the following scenario.

To Reproduce Steps to reproduce the behavior:

  1. Create a Swift Package, which depends on MetaCodable
  2. Create a Target which depends on MetaCodable, HelperCoders and uses the MetaProtocolCodable plugin.
  3. Include this target as a product of the package
  4. Add types into the target which make use of dynamic data variations, in particular Step 9 from the tutorial: https://swiftpackageindex.com/swiftylab/metacodable/v1.3.0/tutorials/metacodable/dynamic
  5. Create an Xcode project for an iOS app which imports the product from the package.
  6. Add code-signing for your app
  7. Build and Archive from Xcode Product menu (or using xcodebuild archive)

Expected behavior I should be able to archive the product.

Actual behaviour Build script fails because build tools cannot find the executable tool ProtocolGen.

Showing All Issues sandbox-exec: execvp() of '//Users/daniel/Library/Developer/Xcode/DerivedData/Posts-aaxhnzolyyfxrgcsibzfeeijakbj/Build/Intermediates.noindex/ArchiveIntermediates/Posts/BuildProductsPath/Release/ProtocolGen' failed: No such file or directory

Screenshots

Screenshot 2024-05-01 at 11 17 44

Environment (please complete the following information, remove ones not applicable):

Additional context I have created a small project to demonstrate this issue: https://github.com/danthorpe/metacodable_demo

A possible solution, would be to export ProtocolGen as a Swift artefact bundle, and reference this as a binary target in your Package.swift. e.g. how SwiftLint is packaged. In this project, on macOS, the dependency is a binary target instead of the source code executable.

soumyamahunt commented 5 months ago

@danthorpe this seems more like a bug in Xcode as mentioned here.

913868456 commented 2 months ago

i got the same warnngs in xcode 15.4, macbook pro M3, swift version 5.10, i search a workaround is

 #if compiler(>= 5.10)
private import XXX
#else
@_implementationOnly import XXX
#endif

so when i can resolve these warnings in future release versions of the MetaCodable?

soumyamahunt commented 1 week ago

What warnings are you getting @913868456?