Pin workspace uniffi to 0.31.0 to match onde's metadata format
The onde crate (v1.2.5) pins uniffi =0.31.0, so building ed-agent-ffi with uniffi 0.32.1 compiled two uniffi versions into the staticlib. The 0.32.1 bindgen then failed to extract 0.31.0-format metadata from onde's object files ("Invalid string data / invalid utf-8 sequence" on _UNIFFI_META_ONDE_CONSTRUCTOR_ONDECHATENGINE_NEW), breaking the Swift XCFramework build in CI. Align the workspace dep, the uniffi-bindgen CLI, and drop the unused uniffi build-dependency from ed-agent-ffi (build.rs only needs cc). Verified locally: staticlib builds with cargo +stable and uniffi-bindgen 0.31.0 generates the Swift bindings cleanly. Co-Authored-By: siGit Code <noreply@sigit.si>
Seto Elkahfi committed
Sep 13, 2026 at 11:51 UTC
73873f23e671a6d84ac0d817a91e71cfa91cb2ba
4 files changed
+48
-264
Cargo.lock
+43
-261
@@ -151,7 +151,7 @@ version = "1.1.5"
151
source = "registry+https://github.com/rust-lang/crates.io-index"
152
checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
153
dependencies = [
154
- "windows-sys 0.61.2",
154
+ "windows-sys 0.60.2",
155
]
156
157
[[package]]
@@ -162,7 +162,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
162
dependencies = [
163
"anstyle",
164
"once_cell_polyfill",
165
- "windows-sys 0.61.2",
165
+ "windows-sys 0.60.2",
166
]
167
168
[[package]]
@@ -236,20 +236,7 @@ version = "0.14.0"
236
source = "registry+https://github.com/rust-lang/crates.io-index"
237
checksum = "f75363874b771be265f4ffe307ca705ef6f3baa19011c149da8674a87f1b75c4"
238
dependencies = [
239
- "askama_derive 0.14.0",
240
- "itoa",
241
- "percent-encoding",
242
- "serde",
243
- "serde_json",
244
-]
245
-
246
-[[package]]
247
-name = "askama"
248
-version = "0.16.1"
249
-source = "registry+https://github.com/rust-lang/crates.io-index"
250
-checksum = "6024d73179f43f15ccd2b881bfea6fee7f3a46ec53f33b52210dea749ebebaa4"
251
-dependencies = [
252
- "askama_macros",
239
+ "askama_derive",
240
"itoa",
241
"percent-encoding",
242
"serde",
@@ -262,7 +249,7 @@ version = "0.14.0"
249
source = "registry+https://github.com/rust-lang/crates.io-index"
250
checksum = "129397200fe83088e8a68407a8e2b1f826cf0086b21ccdb866a722c8bcd3a94f"
251
dependencies = [
265
- "askama_parser 0.14.0",
252
+ "askama_parser",
253
"basic-toml",
254
"memchr",
255
"proc-macro2",
@@ -273,33 +260,6 @@ dependencies = [
260
"syn 2.0.119",
261
]
262
276
-[[package]]
277
-name = "askama_derive"
278
-version = "0.16.1"
279
-source = "registry+https://github.com/rust-lang/crates.io-index"
280
-checksum = "071ee5ebf2138e3ad180e0aacf6940c2cab5e6d8333741d9925c7bee2b153f39"
281
-dependencies = [
282
- "askama_parser 0.16.1",
283
- "basic-toml",
284
- "glob",
285
- "memchr",
286
- "proc-macro2",
287
- "quote",
288
- "rustc-hash 2.1.3",
289
- "serde",
290
- "serde_derive",
291
- "syn 3.0.5",
292
-]
293
-
294
-[[package]]
295
-name = "askama_macros"
296
-version = "0.16.1"
297
-source = "registry+https://github.com/rust-lang/crates.io-index"
298
-checksum = "643e1c7cbb6aec1d920332fe51a7c0d8219e273dcb8602db03f5263e4d16487b"
299
-dependencies = [
300
- "askama_derive 0.16.1",
301
-]
302
-
263
[[package]]
264
name = "askama_parser"
265
version = "0.14.0"
@@ -312,19 +272,6 @@ dependencies = [
272
"winnow 0.7.15",
273
]
274
315
-[[package]]
316
-name = "askama_parser"
317
-version = "0.16.1"
318
-source = "registry+https://github.com/rust-lang/crates.io-index"
319
-checksum = "2c5ae75772275d268b03ab8bdccdd12117b6169ee23256942b34e46c9f476583"
320
-dependencies = [
321
- "rustc-hash 2.1.3",
322
- "serde",
323
- "serde_derive",
324
- "unicode-ident",
325
- "winnow 1.0.4",
326
-]
327
-
275
[[package]]
276
name = "async-compat"
277
version = "0.2.6"
@@ -788,16 +735,6 @@ dependencies = [
735
"serde",
736
]
737
791
-[[package]]
792
-name = "cargo-platform"
793
-version = "0.3.3"
794
-source = "registry+https://github.com/rust-lang/crates.io-index"
795
-checksum = "dd0061da739915fae12ea00e16397555ed4371a6bb285431aab930f61b0aa4ba"
796
-dependencies = [
797
- "serde",
798
- "serde_core",
799
-]
800
-
738
[[package]]
739
name = "cargo_metadata"
740
version = "0.19.2"
@@ -805,21 +742,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
742
checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba"
743
dependencies = [
744
"camino",
808
- "cargo-platform 0.1.9",
809
- "semver",
810
- "serde",
811
- "serde_json",
812
- "thiserror 2.0.20",
813
-]
814
-
815
-[[package]]
816
-name = "cargo_metadata"
817
-version = "0.23.1"
818
-source = "registry+https://github.com/rust-lang/crates.io-index"
819
-checksum = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9"
820
-dependencies = [
821
- "camino",
822
- "cargo-platform 0.3.3",
745
+ "cargo-platform",
746
"semver",
747
"serde",
748
"serde_json",
@@ -1643,7 +1566,7 @@ dependencies = [
1566
"libc",
1567
"option-ext",
1568
"redox_users",
1646
- "windows-sys 0.61.2",
1569
+ "windows-sys 0.59.0",
1570
]
1571
1572
[[package]]
@@ -1819,7 +1742,7 @@ dependencies = [
1742
"serde_json",
1743
"smbcloud-gresiq-sdk",
1744
"thiserror 2.0.20",
1822
- "uniffi 0.32.1",
1745
+ "uniffi",
1746
]
1747
1748
[[package]]
@@ -1836,7 +1759,7 @@ dependencies = [
1759
name = "ed-uniffi-bindgen"
1760
version = "0.1.0"
1761
dependencies = [
1839
- "uniffi 0.32.1",
1762
+ "uniffi",
1763
]
1764
1765
[[package]]
@@ -1986,7 +1909,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1909
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1910
dependencies = [
1911
"libc",
1989
- "windows-sys 0.61.2",
1912
+ "windows-sys 0.52.0",
1913
]
1914
1915
[[package]]
@@ -2163,15 +2086,6 @@ dependencies = [
2086
"autocfg",
2087
]
2088
2166
-[[package]]
2167
-name = "fs-err"
2168
-version = "3.3.1"
2169
-source = "registry+https://github.com/rust-lang/crates.io-index"
2170
-checksum = "b91aa448ca50d7e79433bdf3ee8d99215430d2ec02ade5aefab2a073a1822e8a"
2171
-dependencies = [
2172
- "autocfg",
2173
-]
2174
-
2089
[[package]]
2090
name = "fs_extra"
2091
version = "1.3.0"
@@ -4113,7 +4027,7 @@ dependencies = [
4027
"png 0.18.1",
4028
"serde",
4029
"thiserror 2.0.20",
4116
- "windows-sys 0.61.2",
4030
+ "windows-sys 0.60.2",
4031
]
4032
4033
[[package]]
@@ -4266,7 +4180,7 @@ version = "0.50.3"
4180
source = "registry+https://github.com/rust-lang/crates.io-index"
4181
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
4182
dependencies = [
4269
- "windows-sys 0.61.2",
4183
+ "windows-sys 0.59.0",
4184
]
4185
4186
[[package]]
@@ -4660,7 +4574,7 @@ dependencies = [
4574
"thiserror 2.0.20",
4575
"tokio",
4576
"tsync",
4663
- "uniffi 0.31.0",
4577
+ "uniffi",
4578
]
4579
4580
[[package]]
@@ -5523,7 +5437,7 @@ dependencies = [
5437
"once_cell",
5438
"socket2",
5439
"tracing",
5526
- "windows-sys 0.61.2",
5440
+ "windows-sys 0.52.0",
5441
]
5442
5443
[[package]]
@@ -6051,7 +5965,7 @@ dependencies = [
5965
"errno",
5966
"libc",
5967
"linux-raw-sys",
6054
- "windows-sys 0.61.2",
5968
+ "windows-sys 0.52.0",
5969
]
5970
5971
[[package]]
@@ -6110,7 +6024,7 @@ dependencies = [
6024
"security-framework",
6025
"security-framework-sys",
6026
"webpki-root-certs",
6113
- "windows-sys 0.61.2",
6027
+ "windows-sys 0.52.0",
6028
]
6029
6030
[[package]]
@@ -6820,7 +6734,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
6734
checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4"
6735
dependencies = [
6736
"libc",
6823
- "windows-sys 0.61.2",
6737
+ "windows-sys 0.60.2",
6738
]
6739
6740
[[package]]
@@ -7589,7 +7503,7 @@ checksum = "3e176a18e67764923c4f1ce66f25ae4abe5f688384d5eb1a0fa6c77f3d90f887"
7503
dependencies = [
7504
"anyhow",
7505
"brotli",
7592
- "cargo_metadata 0.19.2",
7506
+ "cargo_metadata",
7507
"ctor",
7508
"dom_query",
7509
"dunce",
@@ -7612,7 +7526,7 @@ dependencies = [
7526
"serde_with",
7527
"swift-rs",
7528
"thiserror 2.0.20",
7615
- "toml 1.1.5+spec-1.1.0",
7529
+ "toml 0.9.12+spec-1.1.0",
7530
"url",
7531
"urlpattern",
7532
"uuid 1.26.1",
@@ -7637,10 +7551,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
7551
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
7552
dependencies = [
7553
"fastrand",
7640
- "getrandom 0.4.3",
7554
+ "getrandom 0.3.4",
7555
"once_cell",
7556
"rustix",
7643
- "windows-sys 0.61.2",
7557
+ "windows-sys 0.52.0",
7558
]
7559
7560
[[package]]
@@ -7670,7 +7584,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
7584
checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874"
7585
dependencies = [
7586
"rustix",
7673
- "windows-sys 0.61.2",
7587
+ "windows-sys 0.59.0",
7588
]
7589
7590
[[package]]
@@ -8232,7 +8146,7 @@ dependencies = [
8146
"png 0.18.1",
8147
"serde",
8148
"thiserror 2.0.20",
8235
- "windows-sys 0.61.2",
8149
+ "windows-sys 0.60.2",
8150
]
8151
8152
[[package]]
@@ -8430,31 +8344,16 @@ name = "uniffi"
8344
version = "0.31.0"
8345
source = "registry+https://github.com/rust-lang/crates.io-index"
8346
checksum = "b8c6dec3fc6645f71a16a3fa9ff57991028153bd194ca97f4b55e610c73ce66a"
8433
-dependencies = [
8434
- "anyhow",
8435
- "cargo_metadata 0.19.2",
8436
- "uniffi_bindgen 0.31.0",
8437
- "uniffi_build 0.31.0",
8438
- "uniffi_core 0.31.0",
8439
- "uniffi_macros 0.31.0",
8440
- "uniffi_pipeline 0.31.0",
8441
-]
8442
-
8443
-[[package]]
8444
-name = "uniffi"
8445
-version = "0.32.1"
8446
-source = "registry+https://github.com/rust-lang/crates.io-index"
8447
-checksum = "edf78ecfb9bb8d7c4f8da11e8eb2ab6304e8ec0adb3ab32d8fc77c21a5bb0b86"
8347
dependencies = [
8348
"anyhow",
8349
"camino",
8451
- "cargo_metadata 0.23.1",
8350
+ "cargo_metadata",
8351
"clap 4.6.6",
8453
- "uniffi_bindgen 0.32.1",
8454
- "uniffi_build 0.32.1",
8455
- "uniffi_core 0.32.1",
8456
- "uniffi_macros 0.32.1",
8457
- "uniffi_pipeline 0.32.1",
8352
+ "uniffi_bindgen",
8353
+ "uniffi_build",
8354
+ "uniffi_core",
8355
+ "uniffi_macros",
8356
+ "uniffi_pipeline",
8357
]
8358
8359
[[package]]
@@ -8464,10 +8363,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
8363
checksum = "4ed0150801958d4825da56a41c71f000a457ac3a4613fa9647df78ac4b6b6881"
8364
dependencies = [
8365
"anyhow",
8467
- "askama 0.14.0",
8366
+ "askama",
8367
"camino",
8469
- "cargo_metadata 0.19.2",
8470
- "fs-err 2.11.0",
8368
+ "cargo_metadata",
8369
+ "fs-err",
8370
"glob",
8371
"goblin",
8372
"heck 0.5.0",
@@ -8477,36 +8376,10 @@ dependencies = [
8376
"tempfile",
8377
"textwrap 0.16.3",
8378
"toml 0.9.12+spec-1.1.0",
8480
- "uniffi_internal_macros 0.31.0",
8481
- "uniffi_meta 0.31.0",
8482
- "uniffi_pipeline 0.31.0",
8483
- "uniffi_udl 0.31.0",
8484
-]
8485
-
8486
-[[package]]
8487
-name = "uniffi_bindgen"
8488
-version = "0.32.1"
8489
-source = "registry+https://github.com/rust-lang/crates.io-index"
8490
-checksum = "cdea7c4574723928bef87dfc04b203d96321d0bf34ab295a56379e633be579f3"
8491
-dependencies = [
8492
- "anyhow",
8493
- "askama 0.16.1",
8494
- "camino",
8495
- "cargo_metadata 0.23.1",
8496
- "fs-err 3.3.1",
8497
- "glob",
8498
- "goblin",
8499
- "heck 0.5.0",
8500
- "indexmap 2.14.2",
8501
- "once_cell",
8502
- "serde",
8503
- "tempfile",
8504
- "textwrap 0.16.3",
8505
- "toml 1.1.5+spec-1.1.0",
8506
- "uniffi_internal_macros 0.32.1",
8507
- "uniffi_meta 0.32.1",
8508
- "uniffi_pipeline 0.32.1",
8509
- "uniffi_udl 0.32.1",
8379
+ "uniffi_internal_macros",
8380
+ "uniffi_meta",
8381
+ "uniffi_pipeline",
8382
+ "uniffi_udl",
8383
]
8384
8385
[[package]]
@@ -8517,18 +8390,7 @@ checksum = "b78fd9271a4c2e85bd2c266c5a9ede1fac676eb39fd77f636c27eaf67426fd5f"
8390
dependencies = [
8391
"anyhow",
8392
"camino",
8520
- "uniffi_bindgen 0.31.0",
8521
-]
8522
-
8523
-[[package]]
8524
-name = "uniffi_build"
8525
-version = "0.32.1"
8526
-source = "registry+https://github.com/rust-lang/crates.io-index"
8527
-checksum = "dfe2d9769b6c0c15d7c7832d53eaa595c683bb80a30512614a67268ce16132f9"
8528
-dependencies = [
8529
- "anyhow",
8530
- "camino",
8531
- "uniffi_bindgen 0.32.1",
8393
+ "uniffi_bindgen",
8394
]
8395
8396
[[package]]
@@ -8544,19 +8406,6 @@ dependencies = [
8406
"static_assertions",
8407
]
8408
8547
-[[package]]
8548
-name = "uniffi_core"
8549
-version = "0.32.1"
8550
-source = "registry+https://github.com/rust-lang/crates.io-index"
8551
-checksum = "f8b1c62ee415b805f063c82e8ef6bbcaa1b87f8eed360cf217537b7724e05601"
8552
-dependencies = [
8553
- "anyhow",
8554
- "async-compat",
8555
- "bytes",
8556
- "once_cell",
8557
- "static_assertions",
8558
-]
8559
-
8409
[[package]]
8410
name = "uniffi_internal_macros"
8411
version = "0.31.0"
@@ -8570,19 +8419,6 @@ dependencies = [
8419
"syn 2.0.119",
8420
]
8421
8573
-[[package]]
8574
-name = "uniffi_internal_macros"
8575
-version = "0.32.1"
8576
-source = "registry+https://github.com/rust-lang/crates.io-index"
8577
-checksum = "c79d4a3129d6c2c15e367d3954886a0533dd3e85d445ce4d93379f62c6949d7b"
8578
-dependencies = [
8579
- "anyhow",
8580
- "indexmap 2.14.2",
8581
- "proc-macro2",
8582
- "quote",
8583
- "syn 2.0.119",
8584
-]
8585
-
8422
[[package]]
8423
name = "uniffi_macros"
8424
version = "0.31.0"
@@ -8590,31 +8426,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
8426
checksum = "db9d12529f1223d014fd501e5f29ca0884d15d6ed5ddddd9f506e55350327dc3"
8427
dependencies = [
8428
"camino",
8593
- "fs-err 2.11.0",
8429
+ "fs-err",
8430
"once_cell",
8431
"proc-macro2",
8432
"quote",
8433
"serde",
8434
"syn 2.0.119",
8435
"toml 0.9.12+spec-1.1.0",
8600
- "uniffi_meta 0.31.0",
8601
-]
8602
-
8603
-[[package]]
8604
-name = "uniffi_macros"
8605
-version = "0.32.1"
8606
-source = "registry+https://github.com/rust-lang/crates.io-index"
8607
-checksum = "2f6a9826a83f1140b2ec67c7944f562e1ef616e6eaf40e76247adccbd5b8a091"
8608
-dependencies = [
8609
- "camino",
8610
- "fs-err 3.3.1",
8611
- "once_cell",
8612
- "proc-macro2",
8613
- "quote",
8614
- "serde",
8615
- "syn 2.0.119",
8616
- "toml 1.1.5+spec-1.1.0",
8617
- "uniffi_meta 0.32.1",
8436
+ "uniffi_meta",
8437
]
8438
8439
[[package]]
@@ -8625,20 +8444,8 @@ checksum = "9df6d413db2827c68588f8149d30d49b71d540d46539e435b23a7f7dbd4d4f86"
8444
dependencies = [
8445
"anyhow",
8446
"siphasher",
8628
- "uniffi_internal_macros 0.31.0",
8629
- "uniffi_pipeline 0.31.0",
8630
-]
8631
-
8632
-[[package]]
8633
-name = "uniffi_meta"
8634
-version = "0.32.1"
8635
-source = "registry+https://github.com/rust-lang/crates.io-index"
8636
-checksum = "cf233eb014b595e8997c98df4ac6863b486a4ac6d54bd00230c7700753d7ef13"
8637
-dependencies = [
8638
- "anyhow",
8639
- "siphasher",
8640
- "uniffi_internal_macros 0.32.1",
8641
- "uniffi_pipeline 0.32.1",
8447
+ "uniffi_internal_macros",
8448
+ "uniffi_pipeline",
8449
]
8450
8451
[[package]]
@@ -8651,20 +8458,7 @@ dependencies = [
8458
"heck 0.5.0",
8459
"indexmap 2.14.2",
8460
"tempfile",
8654
- "uniffi_internal_macros 0.31.0",
8655
-]
8656
-
8657
-[[package]]
8658
-name = "uniffi_pipeline"
8659
-version = "0.32.1"
8660
-source = "registry+https://github.com/rust-lang/crates.io-index"
8661
-checksum = "55179706fbb6e7a23e729780d2c6165e6afe1ce725fa63754bcf217b440afc04"
8662
-dependencies = [
8663
- "anyhow",
8664
- "heck 0.5.0",
8665
- "indexmap 2.14.2",
8666
- "tempfile",
8667
- "uniffi_internal_macros 0.32.1",
8461
+ "uniffi_internal_macros",
8462
]
8463
8464
[[package]]
@@ -8675,19 +8469,7 @@ checksum = "0d1a7339539bf6f6fa3e9b534dece13f778bda2d54b1a6d4e40b4d6090ac26e7"
8469
dependencies = [
8470
"anyhow",
8471
"textwrap 0.16.3",
8678
- "uniffi_meta 0.31.0",
8679
- "weedle2",
8680
-]
8681
-
8682
-[[package]]
8683
-name = "uniffi_udl"
8684
-version = "0.32.1"
8685
-source = "registry+https://github.com/rust-lang/crates.io-index"
8686
-checksum = "421a9add7a19c5a264a2aba760514125ef3840a8b246ec88237fc91e3f2f79b1"
8687
-dependencies = [
8688
- "anyhow",
8689
- "textwrap 0.16.3",
8690
- "uniffi_meta 0.32.1",
8472
+ "uniffi_meta",
8473
"weedle2",
8474
]
8475
@@ -9200,7 +8982,7 @@ version = "0.1.11"
8982
source = "registry+https://github.com/rust-lang/crates.io-index"
8983
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
8984
dependencies = [
9203
- "windows-sys 0.61.2",
8985
+ "windows-sys 0.52.0",
8986
]
8987
8988
[[package]]
Cargo.toml
+4
-1
@@ -25,7 +25,10 @@ log = "0.4"
25
thiserror = "2"
26
tokio = { version = "1", features = ["sync", "rt"] }
27
tauri = { version = "2", features = [] }
28
-uniffi = { version = "=0.32.1", features = ["tokio"] }
28
+# Must match on the uniffi version `onde` is built with (=0.31.0). The
29
+# bindgen extracts metadata that every crate in the staticlib embeds; mixed
30
+# versions break extraction with "Invalid string data" errors.
31
+uniffi = { version = "=0.31.0", features = ["tokio"] }
32
smbcloud-gresiq-sdk = "0.4.7"
33
34
# Internal
crates/ed-agent-ffi/Cargo.toml
-1
@@ -25,4 +25,3 @@ smbcloud-gresiq-sdk.workspace = true
25
26
[build-dependencies]
27
cc = "1"
28
-uniffi = { version = "=0.32.1", features = ["build"] }
uniffi-bindgen/Cargo.toml
+1
-1
@@ -9,4 +9,4 @@ name = "uniffi-bindgen"
9
path = "uniffi-bindgen.rs"
10
11
[dependencies]
12
-uniffi = { version = "=0.32.1", features = ["cli"] }
12
+uniffi = { version = "=0.31.0", features = ["cli"] }