Hive Hive
Sign in

SwiftPM artifact bundles are lowered as XCFramework imports

GitHub issue · Open

Metadata
Source
tuist/once #287
Updated
Sep 18, 2026
Details

Summary

Once treats a SwiftPM binary target backed by an artifact bundle as an XCFramework import. It downloads and extracts the archive correctly, then looks for an .xcframework/Info.plist that the artifact does not contain.

Reproduction

The public package Semantical/hegel-swift declares this binary target:

.binaryTarget(
name: "CHegel",
url: "https://github.com/Semantical/hegel-swift/releases/download/artifacts-0.41.0/CHegel-0.41.0.artifactbundle.zip",
checksum: "de2ba0a4b8205475efa5815e27439e83204b106b28815a9d7707fd06d8c256b3"
)

Once lowers it to:

kind: apple_xcframework_import
bundle: .once/out/SwiftPackage_hegel-swift_CHegel_Artifact/archive/CHegel.xcframework

The extracted archive has the SwiftPM artifact-bundle layout:

CHegel.artifactbundle/
info.json
include/
arm64-apple-macosx/libhegel_c.a
x86_64-unknown-linux-gnu/libhegel_c.a
...

Building any target that uses CHegel fails during analysis:

SwiftPackage_hegel-swift_CHegel: XCFramework bundle is missing Info.plist: `.once/out/SwiftPackage_hegel-swift_CHegel_Artifact/archive/CHegel.xcframework`

Expected behavior

Once should read info.json, select the artifact variant for the configured destination, and expose the selected library and headers to dependents. If generic SwiftPM artifact bundles are not supported yet, graph loading should report that format as unsupported instead of deriving an XCFramework path.

Tested with Once 0.57.0 on macOS.

Flights

Investigate, reproduce, or fix this item in an isolated repository. Each Flight preserves its outcome and agent session.

New Flights are paused Configure model inference, GitHub, and a sandbox provider to start another Flight. Existing results remain available below.
No Flights yet

Start a Flight and preserve its objective, outcome, and session here.

Comments

No GitHub comments yet.