Skip to content

Xcode build archive fails #79

Open
@danthorpe

Description

@danthorpe

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):

  • OS: macOS
  • Version 14.4.1 (23E224)
  • Xcode Version 15.3 (15E204a)
  • Swift $ swift -version
    swift-driver version: 1.90.11.1 Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
    Target: arm64-apple-macosx14.0
  • CocoaPods N/A

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions