swiftlang / swift-docc-plugin

Swift Package Manager command plugin for Swift-DocC

Home Page:https://swiftpackageindex.com/apple/swift-docc-plugin/1.3.0/documentation/swiftdoccplugin

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

New `--include-extended-types` changes seems to break `--additional-symbol-graph-dir`

NachoSoto opened this issue · comments

Prior to version 1.2, we were generating our docs using additional-symbol-graph-dir.
This is how we built the symbol graph:

sh("swift",
    "build",
    "--target", "RevenueCat",
    "--configuration", "debug", # Necessary for debug-only symbols
    # Build for iOS instead of the default macOS. This ensures that iOS-only symbols are included in the docs.
    "-Xswiftc", "-sdk", "-Xswiftc", sh("xcrun", "--sdk", "iphonesimulator", "--show-sdk-path").strip!,
    "-Xswiftc", "-target", "-Xswiftc", "x86_64-apple-ios#{ios_version}-simulator",
    "-Xswiftc", "-emit-symbol-graph",
    "-Xswiftc", "-emit-symbol-graph-dir",
    "-Xswiftc", ".build")

I updated the plugin to 1.2 to be able to use --include-extended-types now so that we can document our extensions. However, generating symbols fails now:

[207/229] Emitting module RevenueCat
<unknown>:0: error: error opening '.build/RevenueCat.symbols.json' for output: No such file or directory
<unknown>:0: error: error opening '.build/RevenueCat@Dispatch.symbols.json' for output: No such file or directory
<unknown>:0: error: error opening '.build/RevenueCat@SwiftUI.symbols.json' for output: No such file or directory

Checklist

  • If possible, I've reproduced the issue using the main branch of this package.
  • This issue hasn't been addressed in an existing GitHub issue.

Expected behavior

I expected our swift build command to continue working

Actual behavior

Build fails.

Swift-DocC Plugin Version Information

Swift-DocC plugin version: 1.2.0
Swift Compiler version:

swift-driver version: 1.75.2 Apple Swift version 5.8 (swiftlang-5.8.0.124.2 clang-1403.0.22.11.100)
Target: arm64-apple-macosx13.0

Actually it appears that was happening because of an invalid reference to SwiftUI in the target. I removed that, and now it seems like I'm close to getting this working.
However it seems like I'm missing something in how I'm creating the symbol graph, since this is what I get when calling swift package preview-documentation:

Error: Mixing symbol graph files with and without extension declarations is not supported.

I couldn't find any documentation on this. Do I need a new argument to the swift build call to add extension declarations?
I tried -emit-extension-block-symbols (which I found in swiftlang/swift#59047), but that produces the same error again:

[115/229] Emitting module RevenueCat
<unknown>:0: error: error opening '.build/RevenueCat.symbols.json' for output: No such file or directory
<unknown>:0: error: error opening '.build/RevenueCat@Dispatch.symbols.json' for output: No such file or directory
<unknown>:0: error: error opening '.build/RevenueCat@SwiftUI.symbols.json' for output: No such file or directory

Did you get any further on this, @NachoSoto? For me it's failing on building documentation for my vapor backend using fluent-kit.

Nope, and no word from Apple

This seems to be relevant?: swiftlang/swift-docc#715

In the mean time until Swift 5.10, Setting DOCC_EXTRACT_EXTENSION_SYMBOLS to NO worked fine for my project. I don't know about Vapor though.