Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

linkDebugFrameworkIosArm64 fails with "Undefined symbols for architecture arm64" #5368

Closed
GuilhE opened this issue Jul 22, 2024 · 1 comment
Labels

Comments

@GuilhE
Copy link

GuilhE commented Jul 22, 2024

SQLDelight Version

2.0.2

Operating System

14.5 (23F79) arm64

Gradle Version

8.7

Kotlin Version

2.0.20-Beta2

Dialect

SQLite

AGP Version

8.3.2

Describe the Bug

I've two modules, core-database and core-di. The first contains the database.db and a Dao. The second depends on the first and contains all the project's DI logic including the drivers for each target (android and iOS). On android there's no problem, it runs like expected. On iOS, running ./gradlew :core-di:build fails with the stacktrace shared bellow.
The database is not directly exposed to any target, instead, a repository will be shared containing a Dao instance to perform operations.

Stacktrace

The /Applications/Xcode-15.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld command returned non-zero exit code: 1.
output:
ld: warning: ignoring duplicate libraries: '-ldl'
Undefined symbols for architecture arm64:
  "_sqlite3_bind_blob", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_bind_blob_wrapper69 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_bind_double", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_bind_double_wrapper71 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_bind_int64", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_bind_int64_wrapper73 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_bind_null", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_bind_null_wrapper74 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_bind_parameter_index", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_bind_parameter_index_wrapper84 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_bind_text", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_bind_text_wrapper75 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_bind_zeroblob", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_bind_zeroblob_wrapper80 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_busy_timeout", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_busy_timeout_wrapper22 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_changes", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_changes_wrapper16 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_clear_bindings", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_clear_bindings_wrapper85 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_close", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_close_wrapper6 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_close_v2", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_close_v2_wrapper7 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_column_blob", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_blob_wrapper99 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_column_bytes", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_bytes_wrapper106 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_column_count", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_count_wrapper86 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_column_double", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_double_wrapper100 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_column_int64", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_int64_wrapper102 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_column_name", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_name_wrapper87 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_column_text", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_text_wrapper103 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_column_type", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_type_wrapper108 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_db_config", referenced from:
      knifunptr_co_touchlab_sqliter_sqlite314_sqlite3_db_config in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_db_readonly", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_db_readonly_wrapper177 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_errmsg", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_errmsg_wrapper53 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_exec", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_exec_wrapper8 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_finalize", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_finalize_wrapper109 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_last_insert_rowid", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_last_insert_rowid_wrapper14 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_open_v2", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_open_v2_wrapper43 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_prepare16_v2", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_prepare16_v2_wrapper61 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_reset", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_reset_wrapper110 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
  "_sqlite3_step", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_step_wrapper97 in libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a[2](libco.touchlab:sqliter-driver-cinterop-sqlite3-cache.a.o)
ld: symbol(s) not found for architecture arm64

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':core-di:linkDebugFrameworkIosArm64'.
> Compilation finished with errors

If I add:

kotlin.native.cacheKind.iosArm64=none
kotlin.native.cacheKind.iosSimulatorArm64=none

the output becomes:

The /Applications/Xcode-15.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld command returned non-zero exit code: 1.
output:
ld: warning: ignoring duplicate libraries: '-ldl'
Undefined symbols for architecture arm64:
  "_sqlite3_bind_blob", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_bind_blob_wrapper69 in CoreDi.framework.o
  "_sqlite3_bind_double", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_bind_double_wrapper71 in CoreDi.framework.o
  "_sqlite3_bind_int64", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_bind_int64_wrapper73 in CoreDi.framework.o
  "_sqlite3_bind_null", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_bind_null_wrapper74 in CoreDi.framework.o
  "_sqlite3_bind_parameter_index", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_bind_parameter_index_wrapper84 in CoreDi.framework.o
  "_sqlite3_bind_text", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_bind_text_wrapper75 in CoreDi.framework.o
  "_sqlite3_bind_zeroblob", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_bind_zeroblob_wrapper80 in CoreDi.framework.o
  "_sqlite3_busy_timeout", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_busy_timeout_wrapper22 in CoreDi.framework.o
  "_sqlite3_changes", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_changes_wrapper16 in CoreDi.framework.o
  "_sqlite3_clear_bindings", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_clear_bindings_wrapper85 in CoreDi.framework.o
  "_sqlite3_close", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_close_wrapper6 in CoreDi.framework.o
  "_sqlite3_close_v2", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_close_v2_wrapper7 in CoreDi.framework.o
  "_sqlite3_column_blob", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_blob_wrapper99 in CoreDi.framework.o
  "_sqlite3_column_bytes", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_bytes_wrapper106 in CoreDi.framework.o
  "_sqlite3_column_count", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_count_wrapper86 in CoreDi.framework.o
  "_sqlite3_column_double", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_double_wrapper100 in CoreDi.framework.o
  "_sqlite3_column_int64", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_int64_wrapper102 in CoreDi.framework.o
  "_sqlite3_column_name", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_name_wrapper87 in CoreDi.framework.o
  "_sqlite3_column_text", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_text_wrapper103 in CoreDi.framework.o
  "_sqlite3_column_type", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_column_type_wrapper108 in CoreDi.framework.o
  "_sqlite3_db_config", referenced from:
      knifunptr_co_touchlab_sqliter_sqlite314_sqlite3_db_config in CoreDi.framework.o
  "_sqlite3_db_readonly", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_db_readonly_wrapper177 in CoreDi.framework.o
  "_sqlite3_errmsg", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_errmsg_wrapper53 in CoreDi.framework.o
  "_sqlite3_exec", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_exec_wrapper8 in CoreDi.framework.o
  "_sqlite3_finalize", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_finalize_wrapper109 in CoreDi.framework.o
  "_sqlite3_last_insert_rowid", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_last_insert_rowid_wrapper14 in CoreDi.framework.o
  "_sqlite3_open_v2", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_open_v2_wrapper43 in CoreDi.framework.o
  "_sqlite3_prepare16_v2", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_prepare16_v2_wrapper61 in CoreDi.framework.o
  "_sqlite3_reset", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_reset_wrapper110 in CoreDi.framework.o
  "_sqlite3_step", referenced from:
      _co_touchlab_sqliter_sqlite3_sqlite3_step_wrapper97 in CoreDi.framework.o
ld: symbol(s) not found for architecture arm64

> Task :core-di:linkDebugFrameworkIosArm64 FAILED

FAILURE: Build failed with an exception.

Gradle Build Script

sqldelight {
    databases {
        create("MyDatabase") {
            packageName.set("com.mydatabase")
        }
    }
    linkSqlite.set(true)
}
@GuilhE GuilhE added the bug label Jul 22, 2024
@GuilhE
Copy link
Author

GuilhE commented Jul 22, 2024

I've followed this setup: https://cashapp.github.io/sqldelight/2.0.2/js_sqlite/gradle/#schema-dependencies and now it works 👍🏼

@GuilhE GuilhE closed this as completed Jul 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant