Skip to content

Depending on skip-fuse/SkipFuse without also depending on skip-bridge/SkipBridge results in linker errors #1

Description

@marcprux

For example, if the skip-integ-demo package removes the dependency on skip-bridge, attempting to run skip test will fail with:

[274/275] Compiling SkipIntegDemo AnyDynamicObject_Support.swift
ld: Undefined symbols:
  protocol descriptor for SkipBridge.JConvertible, referenced from:
      protocol conformance descriptor for SkipIntegDemo.SkipIntegDemoModule : SkipBridge.JConvertible in SkipIntegDemo in SkipIntegDemo_Bridge.swift.o
  static (extension in SkipBridge):SkipBridge.JConvertible< where A: SkipBridge.JObjectProtocol>.callStatic(_: Swift.OpaquePointer, on: Swift.UnsafeMutableRawPointer, options: SkipBridge.JConvertibleOptions, args: [__C.jvalue]) throws -> A, referenced from:
      protocol witness for static SkipBridge.JConvertible.callStatic(_: Swift.OpaquePointer, on: Swift.UnsafeMutableRawPointer, options: SkipBridge.JConvertibleOptions, args: [__C.jvalue]) throws -> A in conformance SkipIntegDemo.SkipIntegDemoModule : SkipBridge.JConvertible in SkipIntegDemo in SkipIntegDemo_Bridge.swift.o
  static (extension in SkipBridge):SkipBridge.JConvertible< where A: SkipBridge.JObjectProtocol>.loadStatic(_: Swift.OpaquePointer, of: Swift.UnsafeMutableRawPointer, options: SkipBridge.JConvertibleOptions) -> A, referenced from:
      protocol witness for static SkipBridge.JConvertible.loadStatic(_: Swift.OpaquePointer, of: Swift.UnsafeMutableRawPointer, options: SkipBridge.JConvertibleOptions) -> A in conformance SkipIntegDemo.SkipIntegDemoModule : SkipBridge.JConvertible in SkipIntegDemo in SkipIntegDemo_Bridge.swift.o
  (extension in SkipBridge):SkipBridge.JConvertible< where A: SkipBridge.JObjectProtocol>.storeStatic(_: Swift.OpaquePointer, of: Swift.UnsafeMutableRawPointer, options: SkipBridge.JConvertibleOptions) -> (), referenced from:
      protocol witness for SkipBridge.JConvertible.storeStatic(_: Swift.OpaquePointer, of: Swift.UnsafeMutableRawPointer, options: SkipBridge.JConvertibleOptions) -> () in conformance SkipIntegDemo.SkipIntegDemoModule : SkipBridge.JConvertible in SkipIntegDemo in SkipIntegDemo_Bridge.swift.o
  (extension in SkipBridge):SkipBridge.JConvertible< where A: SkipBridge.JObjectProtocol>.toJavaParameter(options: SkipBridge.JConvertibleOptions) -> __C.jvalue, referenced from:
      SkipIntegDemo.SkipIntegDemoModule.toJavaObject(options: SkipBridge.JConvertibleOptions) -> Swift.UnsafeMutableRawPointer? in SkipIntegDemo_Bridge.swift.o
      protocol witness for SkipBridge.JConvertible.toJavaParameter(options: SkipBridge.JConvertibleOptions) -> __C.jvalue in conformance SkipIntegDemo.SkipIntegDemoModule : SkipBridge.JConvertible in SkipIntegDemo in SkipIntegDemo_Bridge.swift.o
  static (extension in SkipBridge):SkipBridge.JConvertible< where A: SkipBridge.JObjectProtocol>.call(_: Swift.OpaquePointer, on: Swift.UnsafeMutableRawPointer, options: SkipBridge.JConvertibleOptions, args: [__C.jvalue]) throws -> A, referenced from:
      protocol witness for static SkipBridge.JConvertible.call(_: Swift.OpaquePointer, on: Swift.UnsafeMutableRawPointer, options: SkipBridge.JConvertibleOptions, args: [__C.jvalue]) throws -> A in conformance SkipIntegDemo.SkipIntegDemoModule : SkipBridge.JConvertible in SkipIntegDemo in SkipIntegDemo_Bridge.swift.o
  static (extension in SkipBridge):SkipBridge.JConvertible< where A: SkipBridge.JObjectProtocol>.load(_: Swift.OpaquePointer, of: Swift.UnsafeMutableRawPointer, options: SkipBridge.JConvertibleOptions) -> A, referenced from:
      protocol witness for static SkipBridge.JConvertible.load(_: Swift.OpaquePointer, of: Swift.UnsafeMutableRawPointer, options: SkipBridge.JConvertibleOptions) -> A in conformance SkipIntegDemo.SkipIntegDemoModule : SkipBridge.JConvertible in SkipIntegDemo in SkipIntegDemo_Bridge.swift.o
  (extension in SkipBridge):SkipBridge.JConvertible< where A: SkipBridge.JObjectProtocol>.store(_: Swift.OpaquePointer, of: Swift.UnsafeMutableRawPointer, options: SkipBridge.JConvertibleOptions) -> (), referenced from:
      protocol witness for SkipBridge.JConvertible.store(_: Swift.OpaquePointer, of: Swift.UnsafeMutableRawPointer, options: SkipBridge.JConvertibleOptions) -> () in conformance SkipIntegDemo.SkipIntegDemoModule : SkipBridge.JConvertible in SkipIntegDemo in SkipIntegDemo_Bridge.swift.o
  static SkipBridge.SwiftClosure0.javaO/Users/runner/work/skip-integ-demo/skip-integ-demo/.build/checkouts/skip/Sources/SkipTest/XCGradleHarness.swift:324: error: -[SkipIntegDemoTests.XCSkipTests testSkipModule] : Execution failed for task ':SkipIntegDemo:buildLocalSwiftPackage'./Users/runner/work/skip-integ-demo/skip-integ-demo/Tests/SkipIntegDemoTests/XCSkipTests.swift:16: error: -[SkipIntegDemoTests.XCSkipTests testSkipModule] : failed - The expected test output folder did not exist, which may indicate that the gradle process encountered a build error or other issue. Missing folder: /Users/runner/work/skip-integ-demo/skip-integ-demo/.build/checkouts/skip/Skip/build/skip-integ-demo/SkipIntegDemoTests/skipstone/SkipIntegDemo/.build/SkipIntegDemo/test-resultsTest Case '-[SkipIntegDemoTests.XCSkipTests testSkipModule]' failed (72.738 seconds).Test Suite 'XCSkipTests' failed at 2025-01-23 19:18:54.151.
	 Executed 1 test, with 2 failures (0 unexpected) in 72.738 (72.738) secondsTest Suite 'skip-integ-demoPackageTests.xctest' failed at 2025-01-23 19:18:54.151.
	 Executed 1 test, with 2 failures (0 unexpected) in 72.738 (72.738) secondsTest Suite 'Selected tests' failed at 2025-01-23 19:18:54.151.
	 Executed 1 test, with 2 failures (0 unexpected) in 72.738 (72.740) secondsbject<A>(for: (() -> A)?, options: SkipBridge.JConvertibleOptions) -> Swift.UnsafeMutableRawPointer?, referenced from:
      SkipIntegDemo.SkipIntegDemoModule_Swift_projectionImpl(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer, Swift.Int32) -> Swift.UnsafeMutableRawPointer in SkipIntegDemo_Bridge.swift.o
  type metadata accessor for SkipBridge.SwiftClosure0, referenced from:
      SkipIntegDemo.SkipIntegDemoModule_Swift_projectionImpl(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer, Swift.Int32) -> Swift.UnsafeMutableRawPointer in SkipIntegDemo_Bridge.swift.o
  protocol descriptor for SkipBridge.BridgedToKotlin, referenced from:
      protocol conformance descriptor for SkipIntegDemo.SkipIntegDemoModule : SkipBridge.BridgedToKotlin in SkipIntegDemo in SkipIntegDemo_Bridge.swift.o
  protocol descriptor for SkipBridge.JObjectProtocol, referenced from:
      protocol conformance descriptor for SkipIntegDemo.SkipIntegDemoModule : SkipBridge.JObjectProtocol in SkipIntegDemo in SkipIntegDemo_Bridge.swift.o
  SkipBridge.JConvertibleOptions.kotlincompat.unsafeMutableAddressor : SkipBridge.JConvertibleOptions, referenced from:
      SkipIntegDemo.SkipIntegDemoModule_Swift_stringFunction_1(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer, Swift.Int64) -> Swift.UnsafeMutableRawPointer in SkipIntegDemo_Bridge.swift.o
      SkipIntegDemo.SkipIntegDemoModule_Swift_projectionImpl(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer, Swift.Int32) -> Swift.UnsafeMutableRawPointer in SkipIntegDemo_Bridge.swift.o
  SkipBridge.JConvertibleOptions.init(rawValue: Swift.Int) -> SkipBridge.JConvertibleOptions, referenced from:
      SkipIntegDemo.SkipIntegDemoModule_Swift_projectionImpl(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer, Swift.Int32) -> Swift.UnsafeMutableRawPointer in SkipIntegDemo_Bridge.swift.o
  type metadata for SkipBridge.JConvertibleOptions, referenced from:
      SkipIntegDemo.SkipIntegDemoModule_Swift_stringFunction_1(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer, Swift.Int64) -> Swift.UnsafeMutableRawPointer in SkipIntegDemo_Bridge.swift.o
      SkipIntegDemo.SkipIntegDemoModule_Swift_stringFunction_1(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer, Swift.Int64) -> Swift.UnsafeMutableRawPointer in SkipIntegDemo_Bridge.swift.o
      SkipIntegDemo.SkipIntegDemoModule_Swift_stringFunction_1(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer, Swift.Int64) -> Swift.UnsafeMutableRawPointer in SkipIntegDemo_Bridge.swift.o
      lazy protocol witness table accessor for type SkipBridge.JConvertibleOptions and conformance SkipBridge.JConvertibleOptions : Swift.SetAlgebra in SkipBridge in SkipIntegDemo_Bridge.swift.o
      SkipIntegDemo.SkipIntegDemoModule_Swift_projectionImpl(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer, Swift.Int32) -> Swift.UnsafeMutableRawPointer in SkipIntegDemo_Bridge.swift.o
      SkipIntegDemo.SkipIntegDemoModule_Swift_projectionImpl(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer, Swift.Int32) -> Swift.UnsafeMutableRawPointer in SkipIntegDemo_Bridge.swift.o
      SkipIntegDemo.SkipIntegDemoModule_Swift_projectionImpl(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer, Swift.Int32) -> Swift.UnsafeMutableRawPointer in SkipIntegDemo_Bridge.swift.o
      ...
  protocol conformance descriptor for SkipBridge.JConvertibleOptions : Swift.SetAlgebra in SkipBridge, referenced from:
      lazy protocol witness table accessor for type SkipBridge.JConvertibleOptions and conformance SkipBridge.JConvertibleOptions : Swift.SetAlgebra in SkipBridge in SkipIntegDemo_Bridge.swift.o
  protocol descriptor for SkipBridge.BridgedToKotlinBaseClass, referenced from:
      protocol conformance descriptor for SkipIntegDemo.SkipIntegDemoModule : SkipBridge.BridgedToKotlinBaseClass in SkipIntegDemo in SkipIntegDemo_Bridge.swift.o
  (extension in SkipBridge):SkipBridge.BridgedToKotlinBaseClass.Java_findConstructor(base: SkipBridge.JClass, _: Swift.OpaquePointer) -> (cls: SkipBridge.JClass, ctor: Swift.OpaquePointer), referenced from:
      SkipIntegDemo.SkipIntegDemoModule.toJavaObject(options: SkipBridge.JConvertibleOptions) -> Swift.UnsafeMutableRawPointer? in SkipIntegDemo_Bridge.swift.o
  SkipBridge.JClass.getMethodID(name: Swift.String, sig: Swift.String) -> Swift.OpaquePointer?, referenced from:
      one-time initialization function for (Java_constructor_methodID in _9BB79D3EF451BF8B979632A82BCEFD36) in SkipIntegDemo_Bridge.swift.o
  SkipBridge.JClass.__allocating_init(name: Swift.String, systemClass: Swift.Bool) throws -> SkipBridge.JClass, referenced from:
      one-time initialization function for (Java_class in _9BB79D3EF451BF8B979632A82BCEFD36) in SkipIntegDemo_Bridge.swift.o
  SkipBridge.JClass.create(ctor: Swift.OpaquePointer, options: SkipBridge.JConvertibleOptions, args: [__C.jvalue]) throws -> Swift.UnsafeMutableRawPointer, referenced from:
      SkipIntegDemo.SkipIntegDemoModule.toJavaObject(options: SkipBridge.JConvertibleOptions) -> Swift.UnsafeMutableRawPointer? in SkipIntegDemo_Bridge.swift.o
  type metadata accessor for SkipBridge.JClass, referenced from:
      one-time initialization function for (Java_class in _9BB79D3EF451BF8B979632A82BCEFD36) in SkipIntegDemo_Bridge.swift.o
  (extension in SkipBridge):Swift.String.toJavaObject(options: SkipBridge.JConvertibleOptions) -> Swift.UnsafeMutableRawPointer?, referenced from:
      SkipIntegDemo.SkipIntegDemoModule_Swift_stringFunction_1(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer, Swift.Int64) -> Swift.UnsafeMutableRawPointer in SkipIntegDemo_Bridge.swift.o
  protocol witness table for Swift.UnsafeMutableRawPointer : SkipBridge.JConvertible in SkipBridge, referenced from:
      lazy protocol witness table accessor for type Swift.UnsafeMutableRawPointer? and conformance <A where A: SkipBridge.JConvertible> A? : SkipBridge.JConvertible in SkipBridge in SkipIntegDemo_Bridge.swift.o
  (extension in SkipBridge):Swift.Int64.toJavaParameter(options: SkipBridge.JConvertibleOptions) -> __C.jvalue, referenced from:
      SkipIntegDemo.SkipIntegDemoModule.toJavaObject(options: SkipBridge.JConvertibleOptions) -> Swift.UnsafeMutableRawPointer? in SkipIntegDemo_Bridge.swift.o
  static (extension in SkipBridge):Swift.Int64.peer(of: Swift.UnsafeMutableRawPointer, options: SkipBridge.JConvertibleOptions) -> Swift.Int64, referenced from:
      static SkipIntegDemo.SkipIntegDemoModule.fromJavaObject(_: Swift.UnsafeMutableRawPointer?, options: SkipBridge.JConvertibleOptions) -> Self in SkipIntegDemo_Bridge.swift.o
  (extension in SkipBridge):Swift.Int64.pointee<A where A: AnyObject>() -> A?, referenced from:
      static SkipIntegDemo.SkipIntegDemoModule.fromJavaObject(_: Swift.UnsafeMutableRawPointer?, options: SkipBridge.JConvertibleOptions) -> Self in SkipIntegDemo_Bridge.swift.o
      SkipIntegDemo.SkipIntegDemoModule_Swift_stringFunction_1(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer, Swift.Int64) -> Swift.UnsafeMutableRawPointer in SkipIntegDemo_Bridge.swift.o
  static (extension in SkipBridge):Swift.Int64.pointer<A where A: AnyObject>(to: A?, retain: Swift.Bool) -> Swift.Int64, referenced from:
      SkipIntegDemo.SkipIntegDemoModule.toJavaObject(options: SkipBridge.JConvertibleOptions) -> Swift.UnsafeMutableRawPointer? in SkipIntegDemo_Bridge.swift.o
      SkipIntegDemo.SkipIntegDemoModule_Swift_constructor_0(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer) -> Swift.Int64 in SkipIntegDemo_Bridge.swift.o
  (extension in SkipBridge):Swift.Int64.release<A where A: AnyObject>(as: A.Type) -> (), referenced from:
      SkipIntegDemo.SkipIntegDemoModule_Swift_release(Swift.UnsafeMutablePointer<Swift.UnsafePointer<__C.JNINativeInterface>?>, Swift.UnsafeMutableRawPointer, Swift.Int64) -> () in SkipIntegDemo_Bridge.swift.o
  protocol conformance descriptor for <A where A: SkipBridge.JConvertible> A? : SkipBridge.JConvertible in SkipBridge, referenced from:
      lazy protocol witness table accessor for type Swift.UnsafeMutableRawPointer? and conformance <A where A: SkipBridge.JConvertible> A? : SkipBridge.JConvertible in SkipBridge in SkipIntegDemo_Bridge.swift.o
  protocol witness table for A? : SkipBridge.JObjectProtocol in SkipBridge, referenced from:
      SkipIntegDemo.SkipIntegDemoModule.toJavaObject(options: SkipBridge.JConvertibleOptions) -> Swift.UnsafeMutableRawPointer? in SkipIntegDemo_Bridge.swift.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[274/275] Linking libSkipIntegDemo.dylib
> Task :SkipIntegDemo:buildLocalSwiftPackage FAILED
[Incubating] Problems report is available at: file:///Users/runner/work/skip-integ-demo/skip-integ-demo/.build/plugins/outputs/skip-integ-demo/SkipIntegDemoTests/skipstone/.build/SkipIntegDemo/reports/problems/problems-report.html
170 actionable tasks: 170 executed
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':SkipIntegDemo:buildLocalSwiftPackage'.
> Process 'command 'sh'' finished with non-zero exit value 1
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org./
BUILD FAILED in 1m 10s
Error: 3 errors
[✗] Test project (108.59s)
[✗]   static SkipBridge.SwiftClosure0.javaO/Users/runner/work/skip-integ-demo/skip-integ-demo/.build/checkouts/skip/Sources/SkipTest/XCGradleHarness.swift:324: error: -[SkipIntegDemoTests.XCSkipTests testSkipModule] : Execution failed for task ':SkipIntegDemo:buildLocalSwiftPackage'./Users/runner/work/skip-integ-demo/skip-integ-demo/Tests/SkipIntegDemoTests/XCSkipTests.swift:16: error: -[SkipIntegDemoTests.XCSkipTests testSkipModule] : failed - The expected test output folder did not exist, which may indicate that the gradle process encountered a build error or other issue. Missing folder: /Users/runner/work/skip-integ-demo/skip-integ-demo/.build/checkouts/skip/Skip/build/skip-integ-demo/SkipIntegDemoTests/skipstone/SkipIntegDemo/.build/SkipIntegDemo/test-resultsTest Case '-[SkipIntegDemoTests.XCSkipTests testSkipModule]' failed (72.738 seconds).Test Suite 'XCSkipTests' failed at 2025-01-23 19:18:54.151.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions