The package rpms/firefox.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/firefox.git/commit/?id=8c2f692734....
Change:
-%ifarch x86_64 ppc ppc64 ppc64le
Thanks.
Full change:
============
commit 802ee5c394c59db62fdf8f17c80bc87a5f99a6c2
Author: Jan Horak <jhorak(a)redhat.com>
Date: Fri Jan 13 09:26:17 2023 +0100
Update to 108.0.2
diff --git a/.gitignore b/.gitignore
index 4d02086..3ee35a9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -551,3 +551,5 @@ firefox-3.6.4.source.tar.bz2
/firefox-langpacks-108.0-20221214.tar.xz
/firefox-108.0.1.source.tar.xz
/firefox-langpacks-108.0.1-20221218.tar.xz
+/firefox-108.0.2.source.tar.xz
+/firefox-langpacks-108.0.2-20230112.tar.xz
diff --git a/D164896.diff b/D164896.diff
deleted file mode 100644
index 3212ea5..0000000
--- a/D164896.diff
+++ /dev/null
@@ -1,1842 +0,0 @@
-diff --git a/Cargo.lock b/Cargo.lock
---- a/Cargo.lock
-+++ b/Cargo.lock
-@@ -5775,13 +5775,13 @@
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04"
-
- [[package]]
- name = "uniffi"
--version = "0.21.0"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "f54af5ada67d1173457a99a7bb44a7917f63e7466764cb4714865c7a6678b830"
-+version = "0.21.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b983553c0d1ad73547c65fa0c399aa800bee4a70ad330198e1c7a523212da5ee"
- dependencies = [
- "anyhow",
- "bytes 1.2.1",
- "camino",
- "cargo_metadata",
-@@ -5885,13 +5885,11 @@
- "uniffi_macros",
- ]
-
- [[package]]
- name = "uniffi_bindgen"
--version = "0.21.0"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "12cc4af3c0180c7e86c4a3acf2b6587af04ba2567b1e948993df10f421796621"
-+version = "0.21.1"
- dependencies = [
- "anyhow",
- "askama",
- "bincode",
- "camino",
-@@ -5908,24 +5906,34 @@
- "weedle2",
- ]
-
- [[package]]
- name = "uniffi_build"
--version = "0.21.0"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "510287c368a9386eb731ebe824a6fc6c82a105e20d020af1aa20519c1c1561db"
-+version = "0.21.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d035e50433ee3d52ab0dcdcf3b9b26f2cc2ec39294b3c07d95865a518709455f"
- dependencies = [
- "anyhow",
- "camino",
- "uniffi_bindgen",
- ]
-
- [[package]]
-+name = "uniffi_checksum_derive"
-+version = "0.21.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "78b6e16d46caf942016997af8bbdf4b163bf8ae3deb0b667d9643de7b7ffd4c9"
-+dependencies = [
-+ "quote",
-+ "syn",
-+]
-+
-+[[package]]
- name = "uniffi_macros"
--version = "0.21.0"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "5c8604503caa2cbcf271578dc51ca236d40e3b22e1514ffa2e638e2c39f6ad10"
-+version = "0.21.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c96a574677566f83ea8458dac1dd7792fd63e7c3f9dbcd865f0e8d6f8057b127"
- dependencies = [
- "bincode",
- "camino",
- "fs-err",
- "once_cell",
-@@ -5938,15 +5946,17 @@
- "uniffi_meta",
- ]
-
- [[package]]
- name = "uniffi_meta"
--version = "0.21.0"
--source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "cd9417cc653937681436b93838d8c5f97a5b8c58697813982ee8810bd1dc3b57"
-+version = "0.21.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "729835442da829c9b6f7c111c76cf87b2498e129101203bec94f0c39a3296a38"
- dependencies = [
- "serde",
-+ "siphasher",
-+ "uniffi_checksum_derive",
- ]
-
- [[package]]
- name = "unix_path"
- version = "1.0.1"
-diff --git a/Cargo.toml b/Cargo.toml
---- a/Cargo.toml
-+++ b/Cargo.toml
-@@ -180,10 +180,14 @@
- # okay, but it means that their dependencies on UniFFI crates will normally
- # also be the git versions. Patch them to use the published versions to avoid
- # duplicate crates.
-
- [
patch."https://github.com/mozilla/uniffi-rs.git"]
--uniffi = "=0.21.0"
--uniffi_bindgen = "=0.21.0"
--uniffi_build = "=0.21.0"
--uniffi_macros = "=0.21.0"
-+uniffi = "=0.21.1"
-+#uniffi_bindgen = "=0.21.1"
-+uniffi_build = "=0.21.1"
-+uniffi_macros = "=0.21.1"
- weedle2 = "=4.0.0"
-+
-+# Patched to use uniffi_version = 0.21.0 for checksums.
-+[patch.crates-io.uniffi_bindgen]
-+path = "third_party/rust/uniffi_bindgen"
-diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml
---- a/supply-chain/audits.toml
-+++ b/supply-chain/audits.toml
-@@ -1535,10 +1535,16 @@
- who = "Jan-Erik Rediger <jrediger(a)mozilla.com>"
- criteria = "safe-to-deploy"
- delta = "0.20.0 -> 0.21.0"
- notes = "Maintained by the Glean and Application Services team."
-
-+[[audits.uniffi]]
-+who = "Mike Hommey <mh+mozilla(a)glandium.org>"
-+criteria = "safe-to-deploy"
-+delta = "0.21.0 -> 0.21.1"
-+notes = "No changes."
-+
- [[audits.uniffi_bindgen]]
- who = "Travis Long <tlong(a)mozilla.com>"
- criteria = "safe-to-deploy"
- version = "0.19.3"
- notes = "Maintained by the Glean and Application Services teams."
-@@ -1558,10 +1564,16 @@
- who = "Jan-Erik Rediger <jrediger(a)mozilla.com>"
- criteria = "safe-to-deploy"
- delta = "0.20.0 -> 0.21.0"
- notes = "Maintained by the Glean and Application Services team."
-
-+[[audits.uniffi_bindgen]]
-+who = "Mike Hommey <mh+mozilla(a)glandium.org>"
-+criteria = "safe-to-deploy"
-+delta = "0.21.0 -> 0.21.1"
-+notes = "I authored the changes in this version."
-+
- [[audits.uniffi_build]]
- who = "Travis Long <tlong(a)mozilla.com>"
- criteria = "safe-to-deploy"
- version = "0.19.3"
- notes = "Maintained by the Glean and Application Services teams."
-@@ -1581,10 +1593,22 @@
- who = "Jan-Erik Rediger <jrediger(a)mozilla.com>"
- criteria = "safe-to-deploy"
- delta = "0.20.0 -> 0.21.0"
- notes = "Maintained by the Glean and Application Services team."
-
-+[[audits.uniffi_build]]
-+who = "Mike Hommey <mh+mozilla(a)glandium.org>"
-+criteria = "safe-to-deploy"
-+delta = "0.21.0 -> 0.21.1"
-+notes = "No changes."
-+
-+[[audits.uniffi_checksum_derive]]
-+who = "Mike Hommey <mh+mozilla(a)glandium.org>"
-+criteria = "safe-to-deploy"
-+version = "0.21.1"
-+notes = "I authored this crate."
-+
- [[audits.uniffi_macros]]
- who = "Travis Long <tlong(a)mozilla.com>"
- criteria = "safe-to-deploy"
- version = "0.19.3"
- notes = "Maintained by the Glean and Application Services teams."
-@@ -1604,10 +1628,16 @@
- who = "Jan-Erik Rediger <jrediger(a)mozilla.com>"
- criteria = "safe-to-deploy"
- delta = "0.20.0 -> 0.21.0"
- notes = "Maintained by the Glean and Application Services team."
-
-+[[audits.uniffi_macros]]
-+who = "Mike Hommey <mh+mozilla(a)glandium.org>"
-+criteria = "safe-to-deploy"
-+delta = "0.21.0 -> 0.21.1"
-+notes = "No changes."
-+
- [[audits.uniffi_meta]]
- who = "Jan-Erik Rediger <jrediger(a)mozilla.com>"
- criteria = "safe-to-deploy"
- version = "0.19.6"
- notes = "Maintained by the Glean and Application Services team."
-@@ -1621,10 +1651,16 @@
- who = "Jan-Erik Rediger <jrediger(a)mozilla.com>"
- criteria = "safe-to-deploy"
- delta = "0.20.0 -> 0.21.0"
- notes = "Maintained by the Glean and Application Services team."
-
-+[[audits.uniffi_meta]]
-+who = "Mike Hommey <mh+mozilla(a)glandium.org>"
-+criteria = "safe-to-deploy"
-+delta = "0.21.0 -> 0.21.1"
-+notes = "I authored the changes in this version."
-+
- [[audits.void]]
- who = "Bobby Holley <bobbyholley(a)gmail.com>"
- criteria = "safe-to-deploy"
- version = "1.0.2"
- notes = "Very small crate, just hosts the Void type for easier cross-crate
interfacing."
-diff --git a/supply-chain/config.toml b/supply-chain/config.toml
---- a/supply-chain/config.toml
-+++ b/supply-chain/config.toml
-@@ -156,10 +156,14 @@
-
- [policy.tabs]
- audit-as-crates-io = false
- notes = "This is a first-party crate, maintained by the appservices team, which is
entirely unrelated to the crates.io package of the same name."
-
-+[policy.uniffi_bindgen]
-+audit-as-crates-io = false
-+notes = "This is a first-party crate, normally vendored, but currently patched
in-tree until next update."
-+
- [policy.viaduct]
- audit-as-crates-io = false
- notes = "This is a first-party crate, maintained by the appservices team, which is
entirely unrelated to the crates.io package of the same name."
-
- [policy.webdriver]
-diff --git a/third_party/rust/uniffi/.cargo-checksum.json
b/third_party/rust/uniffi/.cargo-checksum.json
---- a/third_party/rust/uniffi/.cargo-checksum.json
-+++ b/third_party/rust/uniffi/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"b7bde8b1b6bb7e1420c9c486d7562d1639fbb82a2b6459b8b3b7d15f002377d3","release.toml":"a6602545cd6eb46e44d89ce946d7954957ac00f1c955de54c736fa2cb560b1df","src/ffi/ffidefault.rs":"c7ab752fffed17c3fabb60e818ad1d093482f95dd0bdeae6871287695c583e48","src/ffi/foreignbytes.rs":"37061e2da7135576abccb86fe27b4fefc054586a040f2ca81fe9858d5649e887","src/ffi/foreigncallbacks.rs":"c0974920313ac81dd4bb28a51dd9e9ef50c8ea6d965f0bfdde58c661a4ca719f","src/ffi/mod.rs":"3fb3b74607066e0052fc91168e9473dbf82dbae562f85c33774a7f5f6b350616","src/ffi/rustbuffer.rs":"b773637d9e4651b80cd16f7a02ed75846d02ce0a9e32b718ce644cdba3a83cdd","src/ffi/rustcalls.rs":"4a85a90b0d46974ab9e80e403a1cddaa252337b227e1a672bb6fdbbca5a66259","src/lib.rs":"83614739f8c0c939b217755cfde169a85608a52ea197f63f7850e5765e2c5f97","src/panichook.rs":"9f49c7994a8e5489c1105c488bb3f8c5571bc5f813e7be90441eca15da5c9851","src/testing.rs":"f287d682a8f27465838b2aba91993c635a4dcd281d802dc12c7c75794324123f","tests/ui/proc_macro_arc.rs":"d766dffee3fe6a93522d40f44a7f15592db141fd674034fa5f016e06f510e87b","tests/ui/proc_macro_arc.stderr":"9e7d098abdd47f249ff62fe0a2ee0f8b96282ec5a3be0c48a778baab4624180f","tests/ui/version_mismatch.rs":"16ea359e5853517ee0d0704c015ae8c825533109fbefd715130d0f4a51f15898","tests/ui/version_mismatch.stderr":"aadbd8f3847f5663022d8dd75d6afa3b25dfc8abccd30b386a681f98587d4ceb"},"package":"f54af5ada67d1173457a99a7bb44a7917f63e7466764cb4714865c7a6678b830"}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"40a5376941ee93f7d3d013862731eaced1121c852bd4df4affe1cd65bf9b68be","release.toml":"a6602545cd6eb46e44d89ce946d7954957ac00f1c955de54c736fa2cb560b1df","src/ffi/ffidefault.rs":"c7ab752fffed17c3fabb60e818ad1d093482f95dd0bdeae6871287695c583e48","src/ffi/foreignbytes.rs":"37061e2da7135576abccb86fe27b4fefc054586a040f2ca81fe9858d5649e887","src/ffi/foreigncallbacks.rs":"c0974920313ac81dd4bb28a51dd9e9ef50c8ea6d965f0bfdde58c661a4ca719f","src/ffi/mod.rs":"3fb3b74607066e0052fc91168e9473dbf82dbae562f85c33774a7f5f6b350616","src/ffi/rustbuffer.rs":"b773637d9e4651b80cd16f7a02ed75846d02ce0a9e32b718ce644cdba3a83cdd","src/ffi/rustcalls.rs":"4a85a90b0d46974ab9e80e403a1cddaa252337b227e1a672bb6fdbbca5a66259","src/lib.rs":"83614739f8c0c939b217755cfde169a85608a52ea197f63f7850e5765e2c5f97","src/panichook.rs":"9f49c7994a8e5489c1105c488bb3f8c5571bc5f813e7be90441eca15da5c9851","src/testing.rs":"f287d682a8f27465838b2aba91993c635a4dcd281d802dc12c7c75794324123f","tests/ui/proc_macro_arc.rs":"d766dffee3fe6a93522d40f44a7f15592db141fd674034fa5f016e06f510e87b","tests/ui/proc_macro_arc.stderr":"9e7d098abdd47f249ff62fe0a2ee0f8b96282ec5a3be0c48a778baab4624180f","tests/ui/version_mismatch.rs":"16ea359e5853517ee0d0704c015ae8c825533109fbefd715130d0f4a51f15898","tests/ui/version_mismatch.stderr":"aadbd8f3847f5663022d8dd75d6afa3b25dfc8abccd30b386a681f98587d4ceb"},"package":"b983553c0d1ad73547c65fa0c399aa800bee4a70ad330198e1c7a523212da5ee"}
-\ No newline at end of file
-diff --git a/third_party/rust/uniffi/Cargo.toml b/third_party/rust/uniffi/Cargo.toml
---- a/third_party/rust/uniffi/Cargo.toml
-+++ b/third_party/rust/uniffi/Cargo.toml
-@@ -10,22 +10,21 @@
- # See Cargo.toml.orig for the original contents.
-
- [package]
- edition = "2021"
- name = "uniffi"
--version = "0.21.0"
-+version = "0.21.1"
- authors = ["Firefox Sync Team <sync-team(a)mozilla.com>"]
- description = "a multi-language bindings generator for rust (runtime support
code)"
- homepage = "https://mozilla.github.io/uniffi-rs"
- documentation = "https://mozilla.github.io/uniffi-rs"
- keywords = [
- "ffi",
- "bindgen",
- ]
- license = "MPL-2.0"
- repository = "https://github.com/mozilla/uniffi-rs"
--resolver = "2"
-
- [dependencies.anyhow]
- version = "1"
-
- [dependencies.bytes]
-@@ -48,15 +47,15 @@
-
- [dependencies.static_assertions]
- version = "1.1.0"
-
- [dependencies.uniffi_bindgen]
--version = "=0.21.0"
-+version = "=0.21.1"
- optional = true
-
- [dependencies.uniffi_macros]
--version = "=0.21.0"
-+version = "=0.21.1"
-
- [dev-dependencies.trybuild]
- version = "1"
-
- [features]
-diff --git a/third_party/rust/uniffi_bindgen/.cargo-checksum.json
b/third_party/rust/uniffi_bindgen/.cargo-checksum.json
---- a/third_party/rust/uniffi_bindgen/.cargo-checksum.json
-+++ b/third_party/rust/uniffi_bindgen/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.lock":"5ed0714fd87076b5b5f11ca60553f12559e69794c2fec7d487a398f31a577a5f","Cargo.toml":"209b8cb7759ec813ee1e27a4b7e1d2bed2604c37d7c55578058bc7089ee9557e","askama.toml":"1a245b7803adca782837e125c49100147d2de0d5a1c949ff95e91af1701f6058","src/backend/config.rs":"4861dbf251dbb10beb1ed7e3eea7d79499a0de1cd9ce9ee8381a0e729c097dea","src/backend/declarations.rs":"12b8d6e651f84634de5cd02a47601965df7438f64f1a73f136bd89b6b5d515cf","src/backend/mod.rs":"899cd3b816d0467e35789b92ac3b8d5910f6dab98156d405db4803da8721fd36","src/backend/oracle.rs":"9e2b8a45af604a6e4952644e81f43f6aec6e0a1d03939c68b582529dd01a51e0","src/backend/types.rs":"7c49a92096a54eefd2336c48d60fe20ded9490142ab3a229a7c1a99fec14df3d","src/bindings/kotlin/gen_kotlin/callback_interface.rs":"b7fe795670830f3aa8a955c787b1127fe68313ee751013948527948fe5526b01","src/bindings/kotlin/gen_kotlin/compounds.rs":"d1e9a4237ff2ff711a3eae7a564c39e26f598c156ebfd34c0f04879e3533dd4f","src/bindings/kotlin/gen_kotlin/custom.rs":"4176f6ed5f66504f8fd981198bbfbae795dab5ef0d0281881d19b697f5560c44","src/bindings/kotlin/gen_kotlin/enum_.rs":"f85ae8dcb55c8f274139bf321af0ba237ae69894165ad6bd693d793f58af8e5e","src/bindings/kotlin/gen_kotlin/error.rs":"867f583aea5da7aabeb9b6d2544d7e52984cdea4aa008ce5f2ec941074735e1a","src/bindings/kotlin/gen_kotlin/external.rs":"1f7e91d7439891fe3c403274e35880ee4fc3a0da555510bdfa23c1ed2bbd8020","src/bindings/kotlin/gen_kotlin/miscellany.rs":"644ee5bb1f3619be5a36b2b3900af554ea38073cd054004f421e69c3cb8d50bc","src/bindings/kotlin/gen_kotlin/mod.rs":"90412e7927c284668a9eb75823c198182e58e5177d5561896c43b79367564b27","src/bindings/kotlin/gen_kotlin/object.rs":"6478a3e9d5e66186521730d0d481abd1ee4f123050ea050ac5a483842f08b003","src/bindings/kotlin/gen_kotlin/primitives.rs":"914d1f8253ed6a2937f67e8bd8f04f46aef4f22455ceb8a6caa84427adc2093e","src/bindings/kotlin/gen_kotlin/record.rs":"7961fcfbec5ebf8fc010b564ea4bd59402c919f6922898d48226d8c995569dd7","src/bindings/kotlin/mod.rs":"e68f2ea29e66ee62a56704e1e4464eea6d28bbdb52ab187bbe7a57ab3f362ea7","src/bindings/kotlin/templates/BooleanHelper.kt":"28e8a5088c8d58c9bfdbc575af8d8725060521fdd7d092684a8044b24ae567c7","src/bindings/kotlin/templates/CallbackInterfaceRuntime.kt":"6ede374b0fcbb3bcc939894e6f4729b3bec7ec7356831a60fba96ca38dc91aa8","src/bindings/kotlin/templates/CallbackInterfaceTemplate.kt":"5a704eb8c044ed22905e4d526ee3fc0b86f42fe82ac1eb4ad3758ad0552ea8c8","src/bindings/kotlin/templates/CustomTypeTemplate.kt":"5d4dacf29e89bcdcc46d155d993e6059d2df704e775dc853469310198253b231","src/bindings/kotlin/templates/DurationHelper.kt":"414a98161538a26f3a9b357353270c1f245ad6ceed99496aca7162cf473a92fd","src/bindings/kotlin/templates/EnumTemplate.kt":"ab3e2063aad3b91188db839dceb59b854a6a8b60fb35e545e270e64fee7c73fa","src/bindings/kotlin/templates/ErrorTemplate.kt":"a5ec2bdfc026838e1096dbf3301f21aa4ea22e8c93458d45bb1c8c7b9ee1fc5b","src/bindings/kotlin/templates/ExternalTypeTemplate.kt":"2097e0b830640ef18c79449ffa376d1dd35a8c4a5230e413c915f3b868aae872","src/bindings/kotlin/templates/FfiConverterTemplate.kt":"aa22962aaa9f641d48ccf44cb56d9f8a7736cbfaa01e1a1656662cfe5dd5c1d7","src/bindings/kotlin/templates/Float32Helper.kt":"662d95af3b629d143fb4d47cb7e9aa26ed28a5f3846de0341e28b0f9fb08bc25","src/bindings/kotlin/templates/Float64Helper.kt":"a77d099fa7d91e8702c1700e7949ffb6aaba9c6e8041ff48bab34b8e1fc9a0aa","src/bindings/kotlin/templates/Helpers.kt":"46c07798a26b53b06405c8bbbf86e3fcf38fadc1484ea04ce9d482defea89288","src/bindings/kotlin/templates/Int16Helper.kt":"7f83c4a48e1f3b2a59a3ca6a2662be8bc9baf3a5a748b31223cb3f51721ef249","src/bindings/kotlin/templates/Int32Helper.kt":"e02e4702175554b09fd2dd6ac3089dcd2c395f08ec60e762159566a9c9889450","src/bindings/kotlin/templates/Int64Helper.kt":"7a6fd6ca486852c89399c699935a9dfa1c32b9356d9a965cfde532581f05d9fa","src/bindings/kotlin/templates/Int8Helper.kt":"0554545494b6b9a76ce94f9c1723f8cf4230a13076feb75d620b1c9ca1ac4668","src/bindings/kotlin/templates/MapTemplate.kt":"399569d6443e8ad01e2deb95d78d8d2d15bf8eccee8be4fbe9ce4b8ebc0a6101","src/bindings/kotlin/templates/NamespaceLibraryTemplate.kt":"1eba4e77381155c2c96a6af2ef30fca881ade4957852f730fd10aa4f3d9cd3c4","src/bindings/kotlin/templates/ObjectRuntime.kt":"c11d233de41405caa55a56bcaa3bb69ce153ffa6fdff2aa218051929f5c4aeec","src/bindings/kotlin/templates/ObjectTemplate.kt":"7e32d92ec6116da9b7d7f278b15333a2fd2a82dde8c21534e3f6fe371d19f333","src/bindings/kotlin/templates/OptionalTemplate.kt":"5f9f2c1baa829ed3c9b61c3edb0f1fccf5ea3cccc052a69cf8966715d8fcf149","src/bindings/kotlin/templates/RecordTemplate.kt":"193ecdad9322fb5483b95bf2a259270a9b22ba054790794e9abb3fd219196bc5","src/bindings/kotlin/templates/RustBufferTemplate.kt":"415637f80a78c12b3d00db063c14a7ab5c61b098bdb1fc81a0be8bae9511776b","src/bindings/kotlin/templates/SequenceTemplate.kt":"786693b20c608a4f059b91df115278f5f12122b4c14a2e7ce18b6fc9b22b1296","src/bindings/kotlin/templates/StringHelper.kt":"060839663580d8199671b7c3bb3dce5e9106aa766ce2c6e0afc2d2bd788a1d83","src/bindings/kotlin/templates/TimestampHelper.kt":"353c2890f06ad6dda238e9aebb4bdff7bb838e17e46abf351ed3ff1fbc4e6580","src/bindings/kotlin/templates/TopLevelFunctionTemplate.kt":"09b8bb5ffea7075518ee657f83017d44ff0cbf584fd85676b082199139c9be09","src/bindings/kotlin/templates/Types.kt":"db7ed7384b4391a4bc1425ec3a89e0c890538ad30f5e115bae4998c059c8a21b","src/bindings/kotlin/templates/UInt16Helper.kt":"e84a1f30a5a899ba2c5db614d3f3c74f25bccf6dd99bf68b8830829332d051e9","src/bindings/kotlin/templates/UInt32Helper.kt":"7cdf08cc580046935f27ba07b53685968608a102e0a6be305111037c63d7ddf8","src/bindings/kotlin/templates/UInt64Helper.kt":"fd7baacbf3ab6202ff83edcc66e5f7beb11a10053ba66d0b49547616cc7cbe1f","src/bindings/kotlin/templates/UInt8Helper.kt":"bbf5a6d66c995aea9fe2fa9840c6bfa78b03520a09469b984f0e1d43191e453a","src/bindings/kotlin/templates/macros.kt":"eb5e0f9915b8ec9fbf3bf1a714625fbdcef7a7ee7461916e87fec872434ed3ec","src/bindings/kotlin/templates/wrapper.kt":"dd81cf28a4e07c685d29c87a4053eccb6339835cfc7fce3cf581d3d111fed4f5","src/bindings/mod.rs":"51ac55a3d505d5a88eedc83cf12623c2738277a9cd22bf3bbe05be1244de078b","src/bindings/python/gen_python/callback_interface.rs":"e3ffb8ba1aa8ac8ddcfff6554e7ec0d2d695d12955a98a04d114d2d6ca5dacc8","src/bindings/python/gen_python/compounds.rs":"e406c773c3b66368ea74973df742cdcba3014521812048f15de7c0e783eedfaf","src/bindings/python/gen_python/custom.rs":"33756f6bdafbd9b1a3a439c1cced3c83dc1fdb82b5ec235c064e69670ea6086c","src/bindings/python/gen_python/enum_.rs":"634c8406b07cbd24ea4f71cae4c971169e4989ce8019188f4bcd515bc3c77c5d","src/bindings/python/gen_python/error.rs":"d1a3b3edb91d9502064463cc3324770a1a6e0f234d6b49b5d7c43636bfe81d59","src/bindings/python/gen_python/external.rs":"8920b7a2a3b39a9647ec17cdff44308db3bfe9a582f026b060003edd76407599","src/bindings/python/gen_python/miscellany.rs":"f3898b75cf494b39662d886eb78d9cc06685650265fc8a1e87e5de67baa342ae","src/bindings/python/gen_python/mod.rs":"552de45cab20c4467bdcc774c305f298c9d7487c6b89f6786cb7ef1774ccddf6","src/bindings/python/gen_python/object.rs":"b4d3d8a935d4acd689cf1f3857d461dbab3a51c7c8bd821890198fb58ef3a63f","src/bindings/python/gen_python/primitives.rs":"928523bb91d2192d615d044f1fef3714681140562b740cf72dce3168e660e276","src/bindings/python/gen_python/record.rs":"f961dfe8dd1e5caa633754de7ecc684c2211c9b6633a5e6beb6053e60500b9f2","src/bindings/python/mod.rs":"bcf295b334b332c7fd1214ddfdaa727cfe37fed531c3862ce25906b3a70b71c7","src/bindings/python/templates/BooleanHelper.py":"d384ffeefcb5982c4875e819d06e919a295eaa9ff57735e6fef0801bb810d5c9","src/bindings/python/templates/CallbackInterfaceRuntime.py":"7ffef485fc008e2d9efcd07326102f300bd4673b4351353e9e2908355936c3d7","src/bindings/python/templates/CallbackInterfaceTemplate.py":"089b5cc1131e8c9b867c899cb649ce22eb9ba6a4addab4ebf9ba63316c394693","src/bindings/python/templates/CustomType.py":"db3309b3f944fb813d4cef47a04d67a86f824183f7e31289184683155fd985d9","src/bindings/python/templates/DurationHelper.py":"179c14dccd8cc7dc9791f896414f0b5d124ec116eb78173371bd8a0743208da1","src/bindings/python/templates/EnumTemplate.py":"825ca373286f1b3b252b8a1263e29c9e2f0d3e170ceb364bd6c28d6c4595597b","src/bindings/python/templates/ErrorTemplate.py":"b6b1b0d3fc074a7c3ba7db394c5d6cb3279b0fc0e6a331154303c2c6c907458b","src/bindings/python/templates/ExternalTemplate.py":"f582a6e872fe9f8275d33d36ffe017028ca459fe7c53aa680a2512718d0c0fda","src/bindings/python/templates/Float32Helper.py":"7dbc51889cff47ebf1600fad490849e4a87cac4fc0d1756eebd21609eb80b4a9","src/bindings/python/templates/Float64Helper.py":"ba9f334d1339b6eaedcacc1e35068939727170a684f41dec9ee04762ed98cec1","src/bindings/python/templates/Helpers.py":"68f03f651c38c810fa453e123e26f7c94b7a1f9178e0d863b985c3c8fabaa642","src/bindings/python/templates/Int16Helper.py":"60c22fb8b445841ebb3c68be11b81c9eba84a680eaa0e30770953361231da9b5","src/bindings/python/templates/Int32Helper.py":"aff0a017cf767394174e46d8c4fe5a5a704a8e6384fcc38d227634dfe7826916","src/bindings/python/templates/Int64Helper.py":"6c314b91699a6c6ad7db3ef636713bc2a0af9609c82acfd6062b0588177c0026","src/bindings/python/templates/Int8Helper.py":"a6e2d121b1a6d59886fceab3949e571aba1abc06dfede52666954bf15366fb6f","src/bindings/python/templates/MapTemplate.py":"bbe609b865010b98b38c58f2d4fcc97f2adec3e931903bf67263a5e440a84400","src/bindings/python/templates/NamespaceLibraryTemplate.py":"4726dbeb61508a71153436126bc04d03af966dca4f5b37511beb8bcfb6f1f307","src/bindings/python/templates/ObjectTemplate.py":"68302f6da6e4e80fc0cc8eb4ef2d4353d19ad3e9955112a2fabec8bf1b1293c7","src/bindings/python/templates/OptionalTemplate.py":"ab6da433370ba7c1316e266247ee1b7165bc02f6f288e40a7c68806c018e3282","src/bindings/python/templates/RecordTemplate.py":"98cef2adbc2b890e5c67257fb32a57380070988ef4112408eeca85e0b87b566b","src/bindings/python/templates/RustBufferHelper.py":"11f733051e63733c637fb19c4758cb58a40d045792028465f36891f89c7c5f36","src/bindings/python/templates/RustBufferTemplate.py":"90950cfeeb7a028aac9b65aeca897b217eddcfa165a0d59e8af037e834f34146","src/bindings/python/templates/SequenceTemplate.py":"faf2b1d5272a66258972d88c29d5b527cf9e589c8399e30f7ad5a0503133ce9b","src/bindings/python/templates/StringHelper.py":"941a7ad71d9598701efa15323df93766934583a55f4266d26db31e6b744603fc","src/bindings/python/templates/TimestampHelper.py":"b412cea69117858c05bae3210d378c6296658ed02a50e87c52c392dcb62c7892","src/bindings/python/templates/TopLevelFunctionTemplate.py":"2b2883b14f324e543cfeea5293d2a4907fa9ebe93b779da7174a58929d8b0442","src/bindings/python/templates/Types.py":"2eee78ca838f65b7e8ff8f760558c71ca80ad314aaa44efd1d1b8e13b349f1bc","src/bindings/python/templates/UInt16Helper.py":"06be5c9dacdf20e586f8236ed75cf2ca2470078fd8570843ea97c581b25bf860","src/bindings/python/templates/UInt32Helper.py":"41bb9bbf9b7be1060945e1267b1cc052585ec43696b1591f0ee779a0be0feaff","src/bindings/python/templates/UInt64Helper.py":"ba2825fc295a07292d9fb4aeebe74dabb9e6dbe505643e2347875ab12e511f31","src/bindings/python/templates/UInt8Helper.py":"dca5b3fc4a429fb233326224f85c4eccd3a7802ca9958ec309c7f197d59b4e3d","src/bindings/python/templates/macros.py":"3f02a32941e20aea15e136780c24c9695021dbcae08044c4f654f75aadcbd1e1","src/bindings/python/templates/wrapper.py":"627a6e18e72040909887261b8ad918c68104b15110df26b2205d7827c690e8c3","src/bindings/ruby/gen_ruby/mod.rs":"33ae9fc3f69e4c5b7bb6df41e53298f89934cee2bb6d7e7ea8488cefc9d06c03","src/bindings/ruby/gen_ruby/tests.rs":"7dcb86b08e643c43503f4cac6396833497f6988b004321c0067700ee29ffbf32","src/bindings/ruby/mod.rs":"f57fccdfc544210e8cc70e01e4991cee6e72d258ede9d2bb226baad24a3ef0d7","src/bindings/ruby/templates/EnumTemplate.rb":"5480edb347f5829e478d19474691babd72f37616ed846d519b5a61cb1d6cf047","src/bindings/ruby/templates/ErrorTemplate.rb":"147b2c3ff44c19624e7bf7b3a2a04b7badbba5743eaefa0d5e6c05943119c87e","src/bindings/ruby/templates/NamespaceLibraryTemplate.rb":"9b1454208bc83ef8f26aef33713d681e2284dbfea986ec0dd6c9b9c8b7d65e4a","src/bindings/ruby/templates/ObjectTemplate.rb":"c2d2fa2db62d48322b66b53888dcc6de2fc3e579a6b8d0a9f24029c18fffcbb5","src/bindings/ruby/templates/RecordTemplate.rb":"4aeff886928ca972e5dc9b799581b30c66a6f6dce446af3285dd3ed6b422dea9","src/bindings/ruby/templates/RustBufferBuilder.rb":"2ee5a4b97fe590de98ec2119b2dfe103bba75e15b5fb3c178fa51dfa662dfe2c","src/bindings/ruby/templates/RustBufferStream.rb":"ddfc38a6388bdddf8cc24bb6f1af948e4eef2d7ae2091a5130fee57cf53e5a7d","src/bindings/ruby/templates/RustBufferTemplate.rb":"8f37664f5436ba74ccdd801e16220f1b879d2fb56f51f5845b6047c92dc079f8","src/bindings/ruby/templates/TopLevelFunctionTemplate.rb":"88213e7e25bef664da939c04dd5621f438af735ffcb4d2d0c24a529538630069","src/bindings/ruby/templates/macros.rb":"d732a62291c78ccfbc3208227c1b57f6add723fad91b7e699d693e360840e1b0","src/bindings/ruby/templates/wrapper.rb":"542cdf46fb871e66089c9f008cf472cca411fe217d8c66a0a66776c35469aab5","src/bindings/swift/gen_swift/callback_interface.rs":"e331871ac6c9ac9b9533848fb6ddfcabc1e605970343cad307b6d86b72ebe96a","src/bindings/swift/gen_swift/compounds.rs":"f9e87b342f1f9a14295d87bad59d786d4c253a24d22900c2aba44816713718ae","src/bindings/swift/gen_swift/custom.rs":"45cdfa35ef7345dc353d0d2f3cebb17d726e90abdf5ef49422d6b2db65f8fd25","src/bindings/swift/gen_swift/enum_.rs":"018eea78ef85c9f8d715a5bc15c8273030d4f6ba297019949eb578c5cc6276fd","src/bindings/swift/gen_swift/error.rs":"bd95c3303e40f03a321f2cdc8e15a0251f4c7ddbc3c32c4c57eb9569db218488","src/bindings/swift/gen_swift/miscellany.rs":"66f16968f6cccc0b61c544e336a49b96218551731dcce566a176903c9afb3b57","src/bindings/swift/gen_swift/mod.rs":"1e8f98e05a5b03798c91ada854f6a4f2a0682c252143d63c16c6a06bd0419e4b","src/bindings/swift/gen_swift/object.rs":"072a44f484cc66694c57a9fa41ba50a531c9ce19738e11ce9df17cdfc007648f","src/bindings/swift/gen_swift/primitives.rs":"b37b8f3ad3aa7e769e6d465a31282e377f93cd69e4dcf39a56dc833f412ed412","src/bindings/swift/gen_swift/record.rs":"48296332960be3731b9139dc664d4b8a5d56d04cffa34dc995b62cf202b4dbfd","src/bindings/swift/mod.rs":"0ad4afd667ef17b3b577ded9a09cdaa5595afbdb24e7474c6b1e6a8e0a024593","src/bindings/swift/templates/BooleanHelper.swift":"f607928c4d598893421fe9c9f183bab2f23a877a07afeb123dbe90515249ec86","src/bindings/swift/templates/BridgingHeaderTemplate.h":"93a289e393ecdbe1bf986215c3b19d2aed7677d47f79b1833ce73cf6f8762e80","src/bindings/swift/templates/CallbackInterfaceRuntime.swift":"aac01eb4269151be9dde8c95ee8eba7e8d0841b3c2b1dbd88885f01ac64ee147","src/bindings/swift/templates/CallbackInterfaceTemplate.swift":"c9700f52e932556c59a9bfea68fc786746b7f321ff75c33d0a8c1565effaeef5","src/bindings/swift/templates/CustomType.swift":"fe6414f2ce3ea7b148742e2fecf2206d7e69935dd78d56e014aec70f4d6ad3ec","src/bindings/swift/templates/DurationHelper.swift":"bca4a6498b27fe0c877df3c7fbe148538eeda03e68d4e760a7c8a6a15f2067ff","src/bindings/swift/templates/EnumTemplate.swift":"e61bdf7949aa5a7b55a2c10c243e960f683c862e5977f06e7f5956646b4ccb49","src/bindings/swift/templates/ErrorTemplate.swift":"58fb5907d20b7a6db67b128e5f6350015278990fef5945be42477a5b5f82bb18","src/bindings/swift/templates/Float32Helper.swift":"6c1a4da059dd4c6c4392511c93fe9daf4ddeeab71e39afd122797b0e19254318","src/bindings/swift/templates/Float64Helper.swift":"f741568cdfb8e1421369a9a1dc845630a3a0e2dc2d6acf157afd80cd3ef5966f","src/bindings/swift/templates/Helpers.swift":"3cf3a5342a1ef0c7e078b0e58c32ae4437c4fb5dc41acbbd56b1128393c76602","src/bindings/swift/templates/Int16Helper.swift":"76eec2a54a65790c5959380cc9a7362b1e2e201632cccb789153c52e10c8dc4f","src/bindings/swift/templates/Int32Helper.swift":"5afc5e103bf637813fd4b77ab63e47ed38893525101a483218a339f222710061","src/bindings/swift/templates/Int64Helper.swift":"c1a6f6661ef1ad3bd00e8d0bf81adaa6539686eee2b481b046b76dbd87681adf","src/bindings/swift/templates/Int8Helper.swift":"bc46598c966e579cca22d336748c74cdce5674eaaaf75fc24e5fdaa36a43cf9c","src/bindings/swift/templates/MapTemplate.swift":"8b5a9cb41a1ad41b5566fbe3906a1449e5453289208a9fc6a611de1eb937142a","src/bindings/swift/templates/ModuleMapTemplate.modulemap":"99ad1e9bf550a21497296f9248ecd4385dd6d0b5892951d24cf990cdbf3eec2c","src/bindings/swift/templates/ObjectTemplate.swift":"98f744d7baf41e28d9184ae7e1aa9522b1bd951d507e0987879b11d7995782aa","src/bindings/swift/templates/OptionalTemplate.swift":"73f777d2df4fdf42daf0d6035436d168b0d5f0abc15153b97029bc305408f597","src/bindings/swift/templates/RecordTemplate.swift":"af0dc13b32d34254b4cfef3b74f52fd4611aa6c32e055e203414511fd3bbb00a","src/bindings/swift/templates/RustBufferTemplate.swift":"ed16f20cecd264f086c923cd92a5198f444aec99aad4d39e9012f09f530ca809","src/bindings/swift/templates/SequenceTemplate.swift":"977f1409909ff08018c0a80c1330737023b39a8f9fa9a13f5bf9ab4806cac199","src/bindings/swift/templates/StringHelper.swift":"b773c2b3a03f30338ff233881d1b0c0238831b812eff6eb9f0fafcb32ab0743a","src/bindings/swift/templates/TimestampHelper.swift":"6e22e370feae1199bff16bcc6f431decfb7700b02e6afdd84693a0c474eb045e","src/bindings/swift/templates/TopLevelFunctionTemplate.swift":"ca7fcbaa06ee31c7433fd6aa238b6c1135a843f469d9b4f37d4874d514fd80d0","src/bindings/swift/templates/Types.swift":"2f42430cb4ffba8e9b5084c0cf8790fb5bae151878134b8a21e745acf75d2b08","src/bindings/swift/templates/UInt16Helper.swift":"16adb3b50403dad114fad0b86bc220c5adc3bd987c57c290aee7c6407891dfbc","src/bindings/swift/templates/UInt32Helper.swift":"680ddd2815184f520723820f10698a089c222df0388bc0f7734c6d5234194aec","src/bindings/swift/templates/UInt64Helper.swift":"b752852162028a0c132f79f9005c47c263a4dab98833e86758cd7b467e305629","src/bindings/swift/templates/UInt8Helper.swift":"54f4821e704969eeb5c0e002b890d975a20eda3ddc3ee56169ee3c615dfa1079","src/bindings/swift/templates/macros.swift":"0744724c37419e894132b39aea4b8e1f473460583883fa37f38c787a7deea32c","src/bindings/swift/templates/wrapper.swift":"ca1af5fe47bca972c76fb8c9f52b18f727d4343204408de3dd0aae384f0a4171","src/interface/attributes.rs":"2f76377eebdd62e770bb9089885482a49a57e1f8405320bb778353f3e8974447","src/interface/callbacks.rs":"c9f4b97b21195ba2d1787f032f1daa5f4ce2fc40e014942e07e4eb37b5b95ee9","src/interface/enum_.rs":"1a7cda619a986a20fd4d0f145206aba2c500ce5dfca90d01e5324996fd68dc04","src/interface/error.rs":"f31fc0a7e41b4c8f4b81d06958fda14af6f05bfa318206098e0ec351cf4db809","src/interface/ffi.rs":"22d24e4dda327fa78c7632a6e5bbe374ecac0165acc550007feb729d8f4d6adf","src/interface/function.rs":"d6df6d8d412d7c45fe33c7337b37aeb851ae0f21834c4bd8b315aad4ca4ec309","src/interface/literal.rs":"3d2102cb47ff658f329d66d6c867b13a50e7f56535f23c1b414f857741360358","src/interface/mod.rs":"1d1993504ce61a2f578cb6fb42c79b7829a0767c20983581d631ee948819665e","src/interface/namespace.rs":"ab0f63241bb6a0a32f9fd2a1544468cb6daa1f91f6116b7246b52a4a94e4f461","src/interface/object.rs":"44836747d5d00bb40ecadb889c9a6ff32c1cbf625b5a6a337f5891f495fd92fd","src/interface/record.rs":"5859ea6c1f6c5524d1e6f3846954986710d5f74f1c6fd6324c4245b5f70013d5","src/interface/types/finder.rs":"a27f24e64b5bfc796378d1012b5e72001f0a442e8185fdc4430b106595d4b819","src/interface/types/mod.rs":"fe63c3fd233ad905af0358c5d610c85a5a57f263eb899acc756454a1029c4569","src/interface/types/resolver.rs":"7e7ce336ef77c0a6c23deea36856737a97cca9b1c3f5cd0d676fe7df6ade6480","src/lib.rs":"a41b43e3628bb6b3f725580eec255b409947945672887de87c21d5122775a245","src/macro_metadata/ci.rs":"0d6e53d2b5645dd3cc7d196bd3a32ee82c029e1adb9ae93708c27a3fa5c55a88","src/macro_metadata/extract.rs":"ec392692a4601343312f60937987fe460cfb40d2c63a6bb1531fe91903916f10","src/macro_metadata/mod.rs":"1668e6d947fd4a957f557410a8095649de6f8d7fd3eb6a403b8587280dca2d54","src/main.rs":"bbf8e9942d398387e7518533f9b9dc42bfa66156430a87a17605a80a356c0dea","src/scaffolding/mod.rs":"35ae72220843cf3cccefd96e190553e32a5f34ccc58d552fd9165faea12db260","src/scaffolding/templates/CallbackInterfaceTemplate.rs":"3c8caa2e148add8d80701894ee6904fc2d3c5c6424d6d414b36edb6f593b5023","src/scaffolding/templates/EnumTemplate.rs":"eb8802f04f1fd1c9451ad72c1195c136288fdb4e488922b24db75b2fdae65cd7","src/scaffolding/templates/ErrorTemplate.rs":"e7ca4538908a273dd7ba3834219b30fa0e537b2171144f06b6a96fbefb90cd1d","src/scaffolding/templates/ExternalTypesTemplate.rs":"8ecc805cf119abac8c5f60605f9183ee9ec8d37f9ec75bba5e18bb8b482a1abb","src/scaffolding/templates/ObjectTemplate.rs":"34de640428486e17a61ded4f42ce13d8eac3e66cc9f60196ce2575cdc0bd8df6","src/scaffolding/templates/RecordTemplate.rs":"e8d5af954f46f023a243721d6fc70aa176c3a4c0a9dd340048bfe46f3eeed783","src/scaffolding/templates/ReexportUniFFIScaffolding.rs":"559a17c8e39c473ff1effe9651f05b83d443ecd8abed13e03f2b63872d7e1593","src/scaffolding/templates/RustBuffer.rs":"ccf7521012d93c41265375c6d2e80ce861ec93b41383da83c37718386dd726f6","src/scaffolding/templates/TopLevelFunctionTemplate.rs":"35eaefb0862f25ff683d58fb0be6ad5f74bbe2fc85047273200c3a5f4c728434","src/scaffolding/templates/macros.rs":"a41c9690d411074c59fc4609f897431669b9d939625a08f5304a71a88901ba7c","src/scaffolding/templates/scaffolding_template.rs":"3589f8e8e1f9b194ff4a6245665d3a421c771dec3cc947c4264bfcd34573550e"},"package":"12cc4af3c0180c7e86c4a3acf2b6587af04ba2567b1e948993df10f421796621"}
-\ No newline at end of file
-+{"files":{"Cargo.lock":"3b1693f0ada97ba7e0527d763402404b39fe341da22bd45aaf057e4be3fa3234","Cargo.toml":"58662147277f1620eccd6592f83623cf71959df8326e9d700fdaac47c6e6cf35","askama.toml":"1a245b7803adca782837e125c49100147d2de0d5a1c949ff95e91af1701f6058","src/backend/config.rs":"4861dbf251dbb10beb1ed7e3eea7d79499a0de1cd9ce9ee8381a0e729c097dea","src/backend/declarations.rs":"12b8d6e651f84634de5cd02a47601965df7438f64f1a73f136bd89b6b5d515cf","src/backend/mod.rs":"899cd3b816d0467e35789b92ac3b8d5910f6dab98156d405db4803da8721fd36","src/backend/oracle.rs":"9e2b8a45af604a6e4952644e81f43f6aec6e0a1d03939c68b582529dd01a51e0","src/backend/types.rs":"7c49a92096a54eefd2336c48d60fe20ded9490142ab3a229a7c1a99fec14df3d","src/bindings/kotlin/gen_kotlin/callback_interface.rs":"b7fe795670830f3aa8a955c787b1127fe68313ee751013948527948fe5526b01","src/bindings/kotlin/gen_kotlin/compounds.rs":"d1e9a4237ff2ff711a3eae7a564c39e26f598c156ebfd34c0f04879e3533dd4f","src/bindings/kotlin/gen_kotlin/custom.rs":"4176f6ed5f66504f8fd981198bbfbae795dab5ef0d0281881d19b697f5560c44","src/bindings/kotlin/gen_kotlin/enum_.rs":"f85ae8dcb55c8f274139bf321af0ba237ae69894165ad6bd693d793f58af8e5e","src/bindings/kotlin/gen_kotlin/error.rs":"867f583aea5da7aabeb9b6d2544d7e52984cdea4aa008ce5f2ec941074735e1a","src/bindings/kotlin/gen_kotlin/external.rs":"1f7e91d7439891fe3c403274e35880ee4fc3a0da555510bdfa23c1ed2bbd8020","src/bindings/kotlin/gen_kotlin/miscellany.rs":"644ee5bb1f3619be5a36b2b3900af554ea38073cd054004f421e69c3cb8d50bc","src/bindings/kotlin/gen_kotlin/mod.rs":"90412e7927c284668a9eb75823c198182e58e5177d5561896c43b79367564b27","src/bindings/kotlin/gen_kotlin/object.rs":"6478a3e9d5e66186521730d0d481abd1ee4f123050ea050ac5a483842f08b003","src/bindings/kotlin/gen_kotlin/primitives.rs":"914d1f8253ed6a2937f67e8bd8f04f46aef4f22455ceb8a6caa84427adc2093e","src/bindings/kotlin/gen_kotlin/record.rs":"7961fcfbec5ebf8fc010b564ea4bd59402c919f6922898d48226d8c995569dd7","src/bindings/kotlin/mod.rs":"e68f2ea29e66ee62a56704e1e4464eea6d28bbdb52ab187bbe7a57ab3f362ea7","src/bindings/kotlin/templates/BooleanHelper.kt":"28e8a5088c8d58c9bfdbc575af8d8725060521fdd7d092684a8044b24ae567c7","src/bindings/kotlin/templates/CallbackInterfaceRuntime.kt":"6ede374b0fcbb3bcc939894e6f4729b3bec7ec7356831a60fba96ca38dc91aa8","src/bindings/kotlin/templates/CallbackInterfaceTemplate.kt":"5a704eb8c044ed22905e4d526ee3fc0b86f42fe82ac1eb4ad3758ad0552ea8c8","src/bindings/kotlin/templates/CustomTypeTemplate.kt":"5d4dacf29e89bcdcc46d155d993e6059d2df704e775dc853469310198253b231","src/bindings/kotlin/templates/DurationHelper.kt":"414a98161538a26f3a9b357353270c1f245ad6ceed99496aca7162cf473a92fd","src/bindings/kotlin/templates/EnumTemplate.kt":"ab3e2063aad3b91188db839dceb59b854a6a8b60fb35e545e270e64fee7c73fa","src/bindings/kotlin/templates/ErrorTemplate.kt":"a5ec2bdfc026838e1096dbf3301f21aa4ea22e8c93458d45bb1c8c7b9ee1fc5b","src/bindings/kotlin/templates/ExternalTypeTemplate.kt":"2097e0b830640ef18c79449ffa376d1dd35a8c4a5230e413c915f3b868aae872","src/bindings/kotlin/templates/FfiConverterTemplate.kt":"aa22962aaa9f641d48ccf44cb56d9f8a7736cbfaa01e1a1656662cfe5dd5c1d7","src/bindings/kotlin/templates/Float32Helper.kt":"662d95af3b629d143fb4d47cb7e9aa26ed28a5f3846de0341e28b0f9fb08bc25","src/bindings/kotlin/templates/Float64Helper.kt":"a77d099fa7d91e8702c1700e7949ffb6aaba9c6e8041ff48bab34b8e1fc9a0aa","src/bindings/kotlin/templates/Helpers.kt":"46c07798a26b53b06405c8bbbf86e3fcf38fadc1484ea04ce9d482defea89288","src/bindings/kotlin/templates/Int16Helper.kt":"7f83c4a48e1f3b2a59a3ca6a2662be8bc9baf3a5a748b31223cb3f51721ef249","src/bindings/kotlin/templates/Int32Helper.kt":"e02e4702175554b09fd2dd6ac3089dcd2c395f08ec60e762159566a9c9889450","src/bindings/kotlin/templates/Int64Helper.kt":"7a6fd6ca486852c89399c699935a9dfa1c32b9356d9a965cfde532581f05d9fa","src/bindings/kotlin/templates/Int8Helper.kt":"0554545494b6b9a76ce94f9c1723f8cf4230a13076feb75d620b1c9ca1ac4668","src/bindings/kotlin/templates/MapTemplate.kt":"399569d6443e8ad01e2deb95d78d8d2d15bf8eccee8be4fbe9ce4b8ebc0a6101","src/bindings/kotlin/templates/NamespaceLibraryTemplate.kt":"1eba4e77381155c2c96a6af2ef30fca881ade4957852f730fd10aa4f3d9cd3c4","src/bindings/kotlin/templates/ObjectRuntime.kt":"c11d233de41405caa55a56bcaa3bb69ce153ffa6fdff2aa218051929f5c4aeec","src/bindings/kotlin/templates/ObjectTemplate.kt":"7e32d92ec6116da9b7d7f278b15333a2fd2a82dde8c21534e3f6fe371d19f333","src/bindings/kotlin/templates/OptionalTemplate.kt":"5f9f2c1baa829ed3c9b61c3edb0f1fccf5ea3cccc052a69cf8966715d8fcf149","src/bindings/kotlin/templates/RecordTemplate.kt":"193ecdad9322fb5483b95bf2a259270a9b22ba054790794e9abb3fd219196bc5","src/bindings/kotlin/templates/RustBufferTemplate.kt":"415637f80a78c12b3d00db063c14a7ab5c61b098bdb1fc81a0be8bae9511776b","src/bindings/kotlin/templates/SequenceTemplate.kt":"786693b20c608a4f059b91df115278f5f12122b4c14a2e7ce18b6fc9b22b1296","src/bindings/kotlin/templates/StringHelper.kt":"060839663580d8199671b7c3bb3dce5e9106aa766ce2c6e0afc2d2bd788a1d83","src/bindings/kotlin/templates/TimestampHelper.kt":"353c2890f06ad6dda238e9aebb4bdff7bb838e17e46abf351ed3ff1fbc4e6580","src/bindings/kotlin/templates/TopLevelFunctionTemplate.kt":"09b8bb5ffea7075518ee657f83017d44ff0cbf584fd85676b082199139c9be09","src/bindings/kotlin/templates/Types.kt":"db7ed7384b4391a4bc1425ec3a89e0c890538ad30f5e115bae4998c059c8a21b","src/bindings/kotlin/templates/UInt16Helper.kt":"e84a1f30a5a899ba2c5db614d3f3c74f25bccf6dd99bf68b8830829332d051e9","src/bindings/kotlin/templates/UInt32Helper.kt":"7cdf08cc580046935f27ba07b53685968608a102e0a6be305111037c63d7ddf8","src/bindings/kotlin/templates/UInt64Helper.kt":"fd7baacbf3ab6202ff83edcc66e5f7beb11a10053ba66d0b49547616cc7cbe1f","src/bindings/kotlin/templates/UInt8Helper.kt":"bbf5a6d66c995aea9fe2fa9840c6bfa78b03520a09469b984f0e1d43191e453a","src/bindings/kotlin/templates/macros.kt":"eb5e0f9915b8ec9fbf3bf1a714625fbdcef7a7ee7461916e87fec872434ed3ec","src/bindings/kotlin/templates/wrapper.kt":"dd81cf28a4e07c685d29c87a4053eccb6339835cfc7fce3cf581d3d111fed4f5","src/bindings/mod.rs":"51ac55a3d505d5a88eedc83cf12623c2738277a9cd22bf3bbe05be1244de078b","src/bindings/python/gen_python/callback_interface.rs":"e3ffb8ba1aa8ac8ddcfff6554e7ec0d2d695d12955a98a04d114d2d6ca5dacc8","src/bindings/python/gen_python/compounds.rs":"e406c773c3b66368ea74973df742cdcba3014521812048f15de7c0e783eedfaf","src/bindings/python/gen_python/custom.rs":"33756f6bdafbd9b1a3a439c1cced3c83dc1fdb82b5ec235c064e69670ea6086c","src/bindings/python/gen_python/enum_.rs":"634c8406b07cbd24ea4f71cae4c971169e4989ce8019188f4bcd515bc3c77c5d","src/bindings/python/gen_python/error.rs":"d1a3b3edb91d9502064463cc3324770a1a6e0f234d6b49b5d7c43636bfe81d59","src/bindings/python/gen_python/external.rs":"8920b7a2a3b39a9647ec17cdff44308db3bfe9a582f026b060003edd76407599","src/bindings/python/gen_python/miscellany.rs":"f3898b75cf494b39662d886eb78d9cc06685650265fc8a1e87e5de67baa342ae","src/bindings/python/gen_python/mod.rs":"552de45cab20c4467bdcc774c305f298c9d7487c6b89f6786cb7ef1774ccddf6","src/bindings/python/gen_python/object.rs":"b4d3d8a935d4acd689cf1f3857d461dbab3a51c7c8bd821890198fb58ef3a63f","src/bindings/python/gen_python/primitives.rs":"928523bb91d2192d615d044f1fef3714681140562b740cf72dce3168e660e276","src/bindings/python/gen_python/record.rs":"f961dfe8dd1e5caa633754de7ecc684c2211c9b6633a5e6beb6053e60500b9f2","src/bindings/python/mod.rs":"bcf295b334b332c7fd1214ddfdaa727cfe37fed531c3862ce25906b3a70b71c7","src/bindings/python/templates/BooleanHelper.py":"d384ffeefcb5982c4875e819d06e919a295eaa9ff57735e6fef0801bb810d5c9","src/bindings/python/templates/CallbackInterfaceRuntime.py":"7ffef485fc008e2d9efcd07326102f300bd4673b4351353e9e2908355936c3d7","src/bindings/python/templates/CallbackInterfaceTemplate.py":"089b5cc1131e8c9b867c899cb649ce22eb9ba6a4addab4ebf9ba63316c394693","src/bindings/python/templates/CustomType.py":"db3309b3f944fb813d4cef47a04d67a86f824183f7e31289184683155fd985d9","src/bindings/python/templates/DurationHelper.py":"179c14dccd8cc7dc9791f896414f0b5d124ec116eb78173371bd8a0743208da1","src/bindings/python/templates/EnumTemplate.py":"825ca373286f1b3b252b8a1263e29c9e2f0d3e170ceb364bd6c28d6c4595597b","src/bindings/python/templates/ErrorTemplate.py":"b6b1b0d3fc074a7c3ba7db394c5d6cb3279b0fc0e6a331154303c2c6c907458b","src/bindings/python/templates/ExternalTemplate.py":"f582a6e872fe9f8275d33d36ffe017028ca459fe7c53aa680a2512718d0c0fda","src/bindings/python/templates/Float32Helper.py":"7dbc51889cff47ebf1600fad490849e4a87cac4fc0d1756eebd21609eb80b4a9","src/bindings/python/templates/Float64Helper.py":"ba9f334d1339b6eaedcacc1e35068939727170a684f41dec9ee04762ed98cec1","src/bindings/python/templates/Helpers.py":"68f03f651c38c810fa453e123e26f7c94b7a1f9178e0d863b985c3c8fabaa642","src/bindings/python/templates/Int16Helper.py":"60c22fb8b445841ebb3c68be11b81c9eba84a680eaa0e30770953361231da9b5","src/bindings/python/templates/Int32Helper.py":"aff0a017cf767394174e46d8c4fe5a5a704a8e6384fcc38d227634dfe7826916","src/bindings/python/templates/Int64Helper.py":"6c314b91699a6c6ad7db3ef636713bc2a0af9609c82acfd6062b0588177c0026","src/bindings/python/templates/Int8Helper.py":"a6e2d121b1a6d59886fceab3949e571aba1abc06dfede52666954bf15366fb6f","src/bindings/python/templates/MapTemplate.py":"bbe609b865010b98b38c58f2d4fcc97f2adec3e931903bf67263a5e440a84400","src/bindings/python/templates/NamespaceLibraryTemplate.py":"4726dbeb61508a71153436126bc04d03af966dca4f5b37511beb8bcfb6f1f307","src/bindings/python/templates/ObjectTemplate.py":"68302f6da6e4e80fc0cc8eb4ef2d4353d19ad3e9955112a2fabec8bf1b1293c7","src/bindings/python/templates/OptionalTemplate.py":"ab6da433370ba7c1316e266247ee1b7165bc02f6f288e40a7c68806c018e3282","src/bindings/python/templates/RecordTemplate.py":"98cef2adbc2b890e5c67257fb32a57380070988ef4112408eeca85e0b87b566b","src/bindings/python/templates/RustBufferHelper.py":"11f733051e63733c637fb19c4758cb58a40d045792028465f36891f89c7c5f36","src/bindings/python/templates/RustBufferTemplate.py":"90950cfeeb7a028aac9b65aeca897b217eddcfa165a0d59e8af037e834f34146","src/bindings/python/templates/SequenceTemplate.py":"faf2b1d5272a66258972d88c29d5b527cf9e589c8399e30f7ad5a0503133ce9b","src/bindings/python/templates/StringHelper.py":"941a7ad71d9598701efa15323df93766934583a55f4266d26db31e6b744603fc","src/bindings/python/templates/TimestampHelper.py":"b412cea69117858c05bae3210d378c6296658ed02a50e87c52c392dcb62c7892","src/bindings/python/templates/TopLevelFunctionTemplate.py":"2b2883b14f324e543cfeea5293d2a4907fa9ebe93b779da7174a58929d8b0442","src/bindings/python/templates/Types.py":"2eee78ca838f65b7e8ff8f760558c71ca80ad314aaa44efd1d1b8e13b349f1bc","src/bindings/python/templates/UInt16Helper.py":"06be5c9dacdf20e586f8236ed75cf2ca2470078fd8570843ea97c581b25bf860","src/bindings/python/templates/UInt32Helper.py":"41bb9bbf9b7be1060945e1267b1cc052585ec43696b1591f0ee779a0be0feaff","src/bindings/python/templates/UInt64Helper.py":"ba2825fc295a07292d9fb4aeebe74dabb9e6dbe505643e2347875ab12e511f31","src/bindings/python/templates/UInt8Helper.py":"dca5b3fc4a429fb233326224f85c4eccd3a7802ca9958ec309c7f197d59b4e3d","src/bindings/python/templates/macros.py":"3f02a32941e20aea15e136780c24c9695021dbcae08044c4f654f75aadcbd1e1","src/bindings/python/templates/wrapper.py":"627a6e18e72040909887261b8ad918c68104b15110df26b2205d7827c690e8c3","src/bindings/ruby/gen_ruby/mod.rs":"33ae9fc3f69e4c5b7bb6df41e53298f89934cee2bb6d7e7ea8488cefc9d06c03","src/bindings/ruby/gen_ruby/tests.rs":"7dcb86b08e643c43503f4cac6396833497f6988b004321c0067700ee29ffbf32","src/bindings/ruby/mod.rs":"f57fccdfc544210e8cc70e01e4991cee6e72d258ede9d2bb226baad24a3ef0d7","src/bindings/ruby/templates/EnumTemplate.rb":"5480edb347f5829e478d19474691babd72f37616ed846d519b5a61cb1d6cf047","src/bindings/ruby/templates/ErrorTemplate.rb":"147b2c3ff44c19624e7bf7b3a2a04b7badbba5743eaefa0d5e6c05943119c87e","src/bindings/ruby/templates/NamespaceLibraryTemplate.rb":"9b1454208bc83ef8f26aef33713d681e2284dbfea986ec0dd6c9b9c8b7d65e4a","src/bindings/ruby/templates/ObjectTemplate.rb":"c2d2fa2db62d48322b66b53888dcc6de2fc3e579a6b8d0a9f24029c18fffcbb5","src/bindings/ruby/templates/RecordTemplate.rb":"4aeff886928ca972e5dc9b799581b30c66a6f6dce446af3285dd3ed6b422dea9","src/bindings/ruby/templates/RustBufferBuilder.rb":"2ee5a4b97fe590de98ec2119b2dfe103bba75e15b5fb3c178fa51dfa662dfe2c","src/bindings/ruby/templates/RustBufferStream.rb":"ddfc38a6388bdddf8cc24bb6f1af948e4eef2d7ae2091a5130fee57cf53e5a7d","src/bindings/ruby/templates/RustBufferTemplate.rb":"8f37664f5436ba74ccdd801e16220f1b879d2fb56f51f5845b6047c92dc079f8","src/bindings/ruby/templates/TopLevelFunctionTemplate.rb":"88213e7e25bef664da939c04dd5621f438af735ffcb4d2d0c24a529538630069","src/bindings/ruby/templates/macros.rb":"d732a62291c78ccfbc3208227c1b57f6add723fad91b7e699d693e360840e1b0","src/bindings/ruby/templates/wrapper.rb":"542cdf46fb871e66089c9f008cf472cca411fe217d8c66a0a66776c35469aab5","src/bindings/swift/gen_swift/callback_interface.rs":"e331871ac6c9ac9b9533848fb6ddfcabc1e605970343cad307b6d86b72ebe96a","src/bindings/swift/gen_swift/compounds.rs":"f9e87b342f1f9a14295d87bad59d786d4c253a24d22900c2aba44816713718ae","src/bindings/swift/gen_swift/custom.rs":"45cdfa35ef7345dc353d0d2f3cebb17d726e90abdf5ef49422d6b2db65f8fd25","src/bindings/swift/gen_swift/enum_.rs":"018eea78ef85c9f8d715a5bc15c8273030d4f6ba297019949eb578c5cc6276fd","src/bindings/swift/gen_swift/error.rs":"bd95c3303e40f03a321f2cdc8e15a0251f4c7ddbc3c32c4c57eb9569db218488","src/bindings/swift/gen_swift/miscellany.rs":"66f16968f6cccc0b61c544e336a49b96218551731dcce566a176903c9afb3b57","src/bindings/swift/gen_swift/mod.rs":"1e8f98e05a5b03798c91ada854f6a4f2a0682c252143d63c16c6a06bd0419e4b","src/bindings/swift/gen_swift/object.rs":"072a44f484cc66694c57a9fa41ba50a531c9ce19738e11ce9df17cdfc007648f","src/bindings/swift/gen_swift/primitives.rs":"b37b8f3ad3aa7e769e6d465a31282e377f93cd69e4dcf39a56dc833f412ed412","src/bindings/swift/gen_swift/record.rs":"48296332960be3731b9139dc664d4b8a5d56d04cffa34dc995b62cf202b4dbfd","src/bindings/swift/mod.rs":"0ad4afd667ef17b3b577ded9a09cdaa5595afbdb24e7474c6b1e6a8e0a024593","src/bindings/swift/templates/BooleanHelper.swift":"f607928c4d598893421fe9c9f183bab2f23a877a07afeb123dbe90515249ec86","src/bindings/swift/templates/BridgingHeaderTemplate.h":"93a289e393ecdbe1bf986215c3b19d2aed7677d47f79b1833ce73cf6f8762e80","src/bindings/swift/templates/CallbackInterfaceRuntime.swift":"aac01eb4269151be9dde8c95ee8eba7e8d0841b3c2b1dbd88885f01ac64ee147","src/bindings/swift/templates/CallbackInterfaceTemplate.swift":"c9700f52e932556c59a9bfea68fc786746b7f321ff75c33d0a8c1565effaeef5","src/bindings/swift/templates/CustomType.swift":"fe6414f2ce3ea7b148742e2fecf2206d7e69935dd78d56e014aec70f4d6ad3ec","src/bindings/swift/templates/DurationHelper.swift":"bca4a6498b27fe0c877df3c7fbe148538eeda03e68d4e760a7c8a6a15f2067ff","src/bindings/swift/templates/EnumTemplate.swift":"e61bdf7949aa5a7b55a2c10c243e960f683c862e5977f06e7f5956646b4ccb49","src/bindings/swift/templates/ErrorTemplate.swift":"58fb5907d20b7a6db67b128e5f6350015278990fef5945be42477a5b5f82bb18","src/bindings/swift/templates/Float32Helper.swift":"6c1a4da059dd4c6c4392511c93fe9daf4ddeeab71e39afd122797b0e19254318","src/bindings/swift/templates/Float64Helper.swift":"f741568cdfb8e1421369a9a1dc845630a3a0e2dc2d6acf157afd80cd3ef5966f","src/bindings/swift/templates/Helpers.swift":"3cf3a5342a1ef0c7e078b0e58c32ae4437c4fb5dc41acbbd56b1128393c76602","src/bindings/swift/templates/Int16Helper.swift":"76eec2a54a65790c5959380cc9a7362b1e2e201632cccb789153c52e10c8dc4f","src/bindings/swift/templates/Int32Helper.swift":"5afc5e103bf637813fd4b77ab63e47ed38893525101a483218a339f222710061","src/bindings/swift/templates/Int64Helper.swift":"c1a6f6661ef1ad3bd00e8d0bf81adaa6539686eee2b481b046b76dbd87681adf","src/bindings/swift/templates/Int8Helper.swift":"bc46598c966e579cca22d336748c74cdce5674eaaaf75fc24e5fdaa36a43cf9c","src/bindings/swift/templates/MapTemplate.swift":"8b5a9cb41a1ad41b5566fbe3906a1449e5453289208a9fc6a611de1eb937142a","src/bindings/swift/templates/ModuleMapTemplate.modulemap":"99ad1e9bf550a21497296f9248ecd4385dd6d0b5892951d24cf990cdbf3eec2c","src/bindings/swift/templates/ObjectTemplate.swift":"98f744d7baf41e28d9184ae7e1aa9522b1bd951d507e0987879b11d7995782aa","src/bindings/swift/templates/OptionalTemplate.swift":"73f777d2df4fdf42daf0d6035436d168b0d5f0abc15153b97029bc305408f597","src/bindings/swift/templates/RecordTemplate.swift":"af0dc13b32d34254b4cfef3b74f52fd4611aa6c32e055e203414511fd3bbb00a","src/bindings/swift/templates/RustBufferTemplate.swift":"ed16f20cecd264f086c923cd92a5198f444aec99aad4d39e9012f09f530ca809","src/bindings/swift/templates/SequenceTemplate.swift":"977f1409909ff08018c0a80c1330737023b39a8f9fa9a13f5bf9ab4806cac199","src/bindings/swift/templates/StringHelper.swift":"b773c2b3a03f30338ff233881d1b0c0238831b812eff6eb9f0fafcb32ab0743a","src/bindings/swift/templates/TimestampHelper.swift":"6e22e370feae1199bff16bcc6f431decfb7700b02e6afdd84693a0c474eb045e","src/bindings/swift/templates/TopLevelFunctionTemplate.swift":"ca7fcbaa06ee31c7433fd6aa238b6c1135a843f469d9b4f37d4874d514fd80d0","src/bindings/swift/templates/Types.swift":"2f42430cb4ffba8e9b5084c0cf8790fb5bae151878134b8a21e745acf75d2b08","src/bindings/swift/templates/UInt16Helper.swift":"16adb3b50403dad114fad0b86bc220c5adc3bd987c57c290aee7c6407891dfbc","src/bindings/swift/templates/UInt32Helper.swift":"680ddd2815184f520723820f10698a089c222df0388bc0f7734c6d5234194aec","src/bindings/swift/templates/UInt64Helper.swift":"b752852162028a0c132f79f9005c47c263a4dab98833e86758cd7b467e305629","src/bindings/swift/templates/UInt8Helper.swift":"54f4821e704969eeb5c0e002b890d975a20eda3ddc3ee56169ee3c615dfa1079","src/bindings/swift/templates/macros.swift":"0744724c37419e894132b39aea4b8e1f473460583883fa37f38c787a7deea32c","src/bindings/swift/templates/wrapper.swift":"ca1af5fe47bca972c76fb8c9f52b18f727d4343204408de3dd0aae384f0a4171","src/interface/attributes.rs":"6c062b60deb332fbb76e70bc675e65c2bc3f2060fad7cec87492609fa9ce166c","src/interface/callbacks.rs":"e311fe8c80fae1d84c1e867a3c36a47a6d6a41847bb2d633edefac7c69402c84","src/interface/enum_.rs":"4ff34ff12c19be0bc9d807020fd4c8e20660c418741e68408671a18165e4b95b","src/interface/error.rs":"85a61e5bb38b369b60110928a78dc84ae77a06d0cbae4dfe9ff9dff2b8c27e5a","src/interface/ffi.rs":"22d24e4dda327fa78c7632a6e5bbe374ecac0165acc550007feb729d8f4d6adf","src/interface/function.rs":"19219c6c984d4117362ee5c269712ec2ad462476902442062ef2a3b0619b014c","src/interface/literal.rs":"d93d168176ba2824d26c490396f4baffc1d418c3c94e4a1ef0ceb3cfca16a239","src/interface/mod.rs":"88dd169859004da79bd1488e6432bc7dae8b6cba9238cab1d676e570dad31d62","src/interface/namespace.rs":"ab0f63241bb6a0a32f9fd2a1544468cb6daa1f91f6116b7246b52a4a94e4f461","src/interface/object.rs":"106cbf5ec2a684700dd99c9748ba161320abb2cecec3c5022d5dd1a9ec4f5b85","src/interface/record.rs":"5b9db093c0c90f5c757e09e6c9afee6b99e2e724c7b388924990b1a6f46357e9","src/interface/types/finder.rs":"a27f24e64b5bfc796378d1012b5e72001f0a442e8185fdc4430b106595d4b819","src/interface/types/mod.rs":"25a598fd206975cc1e62aaa269b461654c913ad6c0b6a2719c486acfcc68b45b","src/interface/types/resolver.rs":"7e7ce336ef77c0a6c23deea36856737a97cca9b1c3f5cd0d676fe7df6ade6480","src/lib.rs":"a41b43e3628bb6b3f725580eec255b409947945672887de87c21d5122775a245","src/macro_metadata/ci.rs":"0d6e53d2b5645dd3cc7d196bd3a32ee82c029e1adb9ae93708c27a3fa5c55a88","src/macro_metadata/extract.rs":"ec392692a4601343312f60937987fe460cfb40d2c63a6bb1531fe91903916f10","src/macro_metadata/mod.rs":"1668e6d947fd4a957f557410a8095649de6f8d7fd3eb6a403b8587280dca2d54","src/main.rs":"bbf8e9942d398387e7518533f9b9dc42bfa66156430a87a17605a80a356c0dea","src/scaffolding/mod.rs":"35ae72220843cf3cccefd96e190553e32a5f34ccc58d552fd9165faea12db260","src/scaffolding/templates/CallbackInterfaceTemplate.rs":"3c8caa2e148add8d80701894ee6904fc2d3c5c6424d6d414b36edb6f593b5023","src/scaffolding/templates/EnumTemplate.rs":"eb8802f04f1fd1c9451ad72c1195c136288fdb4e488922b24db75b2fdae65cd7","src/scaffolding/templates/ErrorTemplate.rs":"e7ca4538908a273dd7ba3834219b30fa0e537b2171144f06b6a96fbefb90cd1d","src/scaffolding/templates/ExternalTypesTemplate.rs":"8ecc805cf119abac8c5f60605f9183ee9ec8d37f9ec75bba5e18bb8b482a1abb","src/scaffolding/templates/ObjectTemplate.rs":"34de640428486e17a61ded4f42ce13d8eac3e66cc9f60196ce2575cdc0bd8df6","src/scaffolding/templates/RecordTemplate.rs":"e8d5af954f46f023a243721d6fc70aa176c3a4c0a9dd340048bfe46f3eeed783","src/scaffolding/templates/ReexportUniFFIScaffolding.rs":"559a17c8e39c473ff1effe9651f05b83d443ecd8abed13e03f2b63872d7e1593","src/scaffolding/templates/RustBuffer.rs":"ccf7521012d93c41265375c6d2e80ce861ec93b41383da83c37718386dd726f6","src/scaffolding/templates/TopLevelFunctionTemplate.rs":"35eaefb0862f25ff683d58fb0be6ad5f74bbe2fc85047273200c3a5f4c728434","src/scaffolding/templates/macros.rs":"a41c9690d411074c59fc4609f897431669b9d939625a08f5304a71a88901ba7c","src/scaffolding/templates/scaffolding_template.rs":"3589f8e8e1f9b194ff4a6245665d3a421c771dec3cc947c4264bfcd34573550e"},"package":"5d46080a4840abccf7c0cce21931dae53215cbd7dd969b5e63c486235ce91a2a"}
-\ No newline at end of file
-diff --git a/third_party/rust/uniffi_bindgen/Cargo.lock
b/third_party/rust/uniffi_bindgen/Cargo.lock
---- a/third_party/rust/uniffi_bindgen/Cargo.lock
-+++ b/third_party/rust/uniffi_bindgen/Cargo.lock
-@@ -2,13 +2,13 @@
- # It is not intended for manual editing.
- version = 3
-
- [[package]]
- name = "anyhow"
--version = "1.0.65"
-+version = "1.0.66"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602"
-+checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6"
-
- [[package]]
- name = "askama"
- version = "0.11.1"
- source = "registry+https://github.com/rust-lang/crates.io-index"
-@@ -97,13 +97,13 @@
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
- [[package]]
- name = "clap"
--version = "3.2.22"
-+version = "3.2.23"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750"
-+checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
- dependencies = [
- "atty",
- "bitflags",
- "clap_derive",
- "clap_lex",
-@@ -136,13 +136,13 @@
- "os_str_bytes",
- ]
-
- [[package]]
- name = "fs-err"
--version = "2.8.1"
-+version = "2.9.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "64db3e262960f0662f43a6366788d5f10f7f244b8f7d7d987f560baf5ded5c50"
-+checksum = "0845fa252299212f0389d64ba26f34fa32cfe41588355f21ed507c59a0f64541"
-
- [[package]]
- name = "goblin"
- version = "0.5.4"
- source = "registry+https://github.com/rust-lang/crates.io-index"
-@@ -174,13 +174,13 @@
- "libc",
- ]
-
- [[package]]
- name = "indexmap"
--version = "1.9.1"
-+version = "1.9.2"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
-+checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
- dependencies = [
- "autocfg",
- "hashbrown",
- ]
-
-@@ -190,13 +190,13 @@
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
-
- [[package]]
- name = "libc"
--version = "0.2.135"
-+version = "0.2.138"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c"
-+checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
-
- [[package]]
- name = "log"
- version = "0.4.17"
- source = "registry+https://github.com/rust-lang/crates.io-index"
-@@ -243,25 +243,25 @@
- "minimal-lexical",
- ]
-
- [[package]]
- name = "once_cell"
--version = "1.15.0"
-+version = "1.16.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
-+checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860"
-
- [[package]]
- name = "os_str_bytes"
--version = "6.3.0"
-+version = "6.4.1"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff"
-+checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
-
- [[package]]
- name = "paste"
--version = "1.0.9"
-+version = "1.0.10"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1"
-+checksum = "cf1c2c742266c2f1041c914ba65355a83ae8747b05f208319784083583494b4b"
-
- [[package]]
- name = "plain"
- version = "0.2.3"
- source = "registry+https://github.com/rust-lang/crates.io-index"
-@@ -291,13 +291,13 @@
- "version_check",
- ]
-
- [[package]]
- name = "proc-macro2"
--version = "1.0.46"
-+version = "1.0.47"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
-+checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
- dependencies = [
- "unicode-ident",
- ]
-
- [[package]]
-@@ -335,50 +335,56 @@
- "syn",
- ]
-
- [[package]]
- name = "serde"
--version = "1.0.145"
-+version = "1.0.150"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b"
-+checksum = "e326c9ec8042f1b5da33252c8a37e9ffbd2c9bef0155215b6e6c80c790e05f91"
- dependencies = [
- "serde_derive",
- ]
-
- [[package]]
- name = "serde_derive"
--version = "1.0.145"
-+version = "1.0.150"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c"
-+checksum = "42a3df25b0713732468deadad63ab9da1f1fd75a48a15024b50363f128db627e"
- dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- ]
-
- [[package]]
- name = "serde_json"
--version = "1.0.86"
-+version = "1.0.89"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "41feea4228a6f1cd09ec7a3593a682276702cd67b5273544757dae23c096f074"
-+checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db"
- dependencies = [
- "itoa",
- "ryu",
- "serde",
- ]
-
- [[package]]
-+name = "siphasher"
-+version = "0.3.10"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
-+
-+[[package]]
- name = "strsim"
- version = "0.10.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
-
- [[package]]
- name = "syn"
--version = "1.0.102"
-+version = "1.0.105"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1"
-+checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908"
- dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
- ]
-@@ -392,19 +398,19 @@
- "winapi-util",
- ]
-
- [[package]]
- name = "textwrap"
--version = "0.15.1"
-+version = "0.16.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16"
-+checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
-
- [[package]]
- name = "toml"
--version = "0.5.9"
-+version = "0.5.10"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
-+checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f"
- dependencies = [
- "serde",
- ]
-
- [[package]]
-@@ -422,11 +428,11 @@
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
-
- [[package]]
- name = "uniffi_bindgen"
--version = "0.21.0"
-+version = "0.21.1"
- dependencies = [
- "anyhow",
- "askama",
- "bincode",
- "camino",
-@@ -442,16 +448,28 @@
- "uniffi_meta",
- "weedle2",
- ]
-
- [[package]]
-+name = "uniffi_checksum_derive"
-+version = "0.21.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "78b6e16d46caf942016997af8bbdf4b163bf8ae3deb0b667d9643de7b7ffd4c9"
-+dependencies = [
-+ "quote",
-+ "syn",
-+]
-+
-+[[package]]
- name = "uniffi_meta"
--version = "0.21.0"
-+version = "0.21.1"
- source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "cd9417cc653937681436b93838d8c5f97a5b8c58697813982ee8810bd1dc3b57"
-+checksum = "729835442da829c9b6f7c111c76cf87b2498e129101203bec94f0c39a3296a38"
- dependencies = [
- "serde",
-+ "siphasher",
-+ "uniffi_checksum_derive",
- ]
-
- [[package]]
- name = "version_check"
- version = "0.9.4"
-diff --git a/third_party/rust/uniffi_bindgen/Cargo.toml
b/third_party/rust/uniffi_bindgen/Cargo.toml
---- a/third_party/rust/uniffi_bindgen/Cargo.toml
-+++ b/third_party/rust/uniffi_bindgen/Cargo.toml
-@@ -10,22 +10,21 @@
- # See Cargo.toml.orig for the original contents.
-
- [package]
- edition = "2021"
- name = "uniffi_bindgen"
--version = "0.21.0"
-+version = "0.21.1"
- authors = ["Firefox Sync Team <sync-team(a)mozilla.com>"]
- description = "a multi-language bindings generator for rust (codegen and cli
tooling)"
- homepage = "https://mozilla.github.io/uniffi-rs"
- documentation = "https://mozilla.github.io/uniffi-rs"
- keywords = [
- "ffi",
- "bindgen",
- ]
- license = "MPL-2.0"
- repository = "https://github.com/mozilla/uniffi-rs"
--resolver = "2"
-
- [[bin]]
- name = "uniffi-bindgen"
- path = "src/main.rs"
-
-@@ -74,9 +73,9 @@
-
- [dependencies.toml]
- version = "0.5"
-
- [dependencies.uniffi_meta]
--version = "=0.21.0"
-+version = "=0.21.1"
-
- [dependencies.weedle2]
- version = "4.0.0"
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/attributes.rs
b/third_party/rust/uniffi_bindgen/src/interface/attributes.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/attributes.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/attributes.rs
-@@ -13,17 +13,18 @@
- //! We only support a small number of attributes, so it's manageable to have them
- //! all handled by a single abstraction. This might need to be refactored in future
- //! if we grow significantly more complicated attribute handling.
-
- use anyhow::{bail, Result};
-+use uniffi_meta::Checksum;
-
- /// Represents an attribute parsed from UDL, like `[ByRef]` or `[Throws]`.
- ///
- /// This is a convenience enum for parsing UDL attributes and erroring out if we
encounter
- /// any unsupported ones. These don't convert directly into parts of a
`ComponentInterface`, but
- /// may influence the properties of things like functions and arguments.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub(super) enum Attribute {
- ByRef,
- Enum,
- Error,
- Name(String),
-@@ -117,11 +118,11 @@
- Ok(attrs)
- }
-
- /// Attributes that can be attached to an `enum` definition in the UDL.
- /// There's only one case here: using `[Error]` to mark an enum as an error class.
--#[derive(Debug, Clone, Hash, Default)]
-+#[derive(Debug, Clone, Checksum, Default)]
- pub(super) struct EnumAttributes(Vec<Attribute>);
-
- impl EnumAttributes {
- pub fn contains_error_attr(&self) -> bool {
- self.0.iter().any(|attr| attr.is_error())
-@@ -153,11 +154,11 @@
-
- /// Represents UDL attributes that might appear on a function.
- ///
- /// This supports the `[Throws=ErrorName]` attribute for functions that
- /// can produce an error.
--#[derive(Debug, Clone, Hash, Default)]
-+#[derive(Debug, Clone, Checksum, Default)]
- pub(super) struct FunctionAttributes(Vec<Attribute>);
-
- impl FunctionAttributes {
- pub(super) fn get_throws_err(&self) -> Option<&str> {
- self.0.iter().find_map(|attr| match attr {
-@@ -196,11 +197,11 @@
-
- /// Represents UDL attributes that might appear on a function argument.
- ///
- /// This supports the `[ByRef]` attribute for arguments that should be passed
- /// by reference in the generated Rust scaffolding.
--#[derive(Debug, Clone, Hash, Default)]
-+#[derive(Debug, Clone, Checksum, Default)]
- pub(super) struct ArgumentAttributes(Vec<Attribute>);
-
- impl ArgumentAttributes {
- pub fn by_ref(&self) -> bool {
- self.0.iter().any(|attr| matches!(attr, Attribute::ByRef))
-@@ -231,11 +232,11 @@
- }
- }
- }
-
- /// Represents UDL attributes that might appear on an `interface` definition.
--#[derive(Debug, Clone, Hash, Default)]
-+#[derive(Debug, Clone, Checksum, Default)]
- pub(super) struct InterfaceAttributes(Vec<Attribute>);
-
- impl InterfaceAttributes {
- pub fn contains_enum_attr(&self) -> bool {
- self.0.iter().any(|attr| attr.is_enum())
-@@ -285,11 +286,11 @@
-
- /// Represents UDL attributes that might appear on a constructor.
- ///
- /// This supports the `[Throws=ErrorName]` attribute for constructors that can produce
- /// an error, and the `[Name=MethodName]` for non-default constructors.
--#[derive(Debug, Clone, Hash, Default)]
-+#[derive(Debug, Clone, Checksum, Default)]
- pub(super) struct ConstructorAttributes(Vec<Attribute>);
-
- impl ConstructorAttributes {
- pub(super) fn get_throws_err(&self) -> Option<&str> {
- self.0.iter().find_map(|attr| match attr {
-@@ -324,11 +325,11 @@
-
- /// Represents UDL attributes that might appear on a method.
- ///
- /// This supports the `[Throws=ErrorName]` attribute for methods that can produce
- /// an error, and the `[Self=ByArc]` attribute for methods that take `Arc<Self>`
as receiver.
--#[derive(Debug, Clone, Hash, Default)]
-+#[derive(Debug, Clone, Checksum, Default)]
- pub(super) struct MethodAttributes(Vec<Attribute>);
-
- impl MethodAttributes {
- pub(super) fn get_throws_err(&self) -> Option<&str> {
- self.0.iter().find_map(|attr| match attr {
-@@ -373,11 +374,11 @@
- /// Represents the different possible types of method call receiver.
- ///
- /// Actually we only support one of these right now, `[Self=ByArc]`.
- /// We might add more in future, e.g. a `[Self=ByRef]` if there are cases
- /// where we need to force the receiver to be taken by reference.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub(super) enum SelfType {
- ByArc, // Method receiver is `Arc<Self>`.
- }
-
- impl TryFrom<&weedle::attribute::IdentifierOrString<'_>> for
SelfType {
-@@ -396,11 +397,11 @@
- }
-
- /// Represents UDL attributes that might appear on a typedef
- ///
- /// This supports the `[External="crate_name"]` and `[Custom]` attributes for
types.
--#[derive(Debug, Clone, Hash, Default)]
-+#[derive(Debug, Clone, Checksum, Default)]
- pub(super) struct TypedefAttributes(Vec<Attribute>);
-
- impl TypedefAttributes {
- pub(super) fn get_crate_name(&self) -> String {
- self.0
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/callbacks.rs
b/third_party/rust/uniffi_bindgen/src/interface/callbacks.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/callbacks.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/callbacks.rs
-@@ -31,23 +31,29 @@
- //! assert_eq!(callback.name(), "Example");
- //! assert_eq!(callback.methods()[0].name(), "hello");
- //! # Ok::<(), anyhow::Error>(())
- //! ```
-
--use std::hash::{Hash, Hasher};
--
- use anyhow::{bail, Result};
-+use uniffi_meta::Checksum;
-
- use super::ffi::{FFIArgument, FFIFunction, FFIType};
- use super::object::Method;
- use super::types::{Type, TypeIterator};
- use super::{APIConverter, ComponentInterface};
-
--#[derive(Debug, Clone)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct CallbackInterface {
- pub(super) name: String,
- pub(super) methods: Vec<Method>,
-+ // We don't include the FFIFunc in the hash calculation, because:
-+ // - it is entirely determined by the other fields,
-+ // so excluding it is safe.
-+ // - its `name` property includes a checksum derived from the very
-+ // hash value we're trying to calculate here, so excluding it
-+ // avoids a weird circular depenendency in the calculation.
-+ #[checksum_ignore]
- pub(super) ffi_init_callback: FFIFunction,
- }
-
- impl CallbackInterface {
- fn new(name: String) -> CallbackInterface {
-@@ -86,23 +92,10 @@
- pub fn iter_types(&self) -> TypeIterator<'_> {
- Box::new(self.methods.iter().flat_map(Method::iter_types))
- }
- }
-
--impl Hash for CallbackInterface {
-- fn hash<H: Hasher>(&self, state: &mut H) {
-- // We don't include the FFIFunc in the hash calculation, because:
-- // - it is entirely determined by the other fields,
-- // so excluding it is safe.
-- // - its `name` property includes a checksum derived from the very
-- // hash value we're trying to calculate here, so excluding it
-- // avoids a weird circular depenendency in the calculation.
-- self.name.hash(state);
-- self.methods.hash(state);
-- }
--}
--
- impl APIConverter<CallbackInterface> for
weedle::CallbackInterfaceDefinition<'_> {
- fn convert(&self, ci: &mut ComponentInterface) ->
Result<CallbackInterface> {
- if self.attributes.is_some() {
- bail!("callback interface attributes are not supported yet");
- }
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/enum_.rs
b/third_party/rust/uniffi_bindgen/src/interface/enum_.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/enum_.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/enum_.rs
-@@ -75,21 +75,22 @@
- //! assert_eq!(e.variants()[1].fields()[0].name(), "first");
- //! # Ok::<(), anyhow::Error>(())
- //! ```
-
- use anyhow::{bail, Result};
-+use uniffi_meta::Checksum;
-
- use super::record::Field;
- use super::types::{Type, TypeIterator};
- use super::{APIConverter, ComponentInterface};
-
- /// Represents an enum with named variants, each of which may have named
- /// and typed fields.
- ///
- /// Enums are passed across the FFI by serializing to a bytebuffer, with a
- /// i32 indicating the variant followed by the serialization of each field.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Enum {
- pub(super) name: String,
- pub(super) variants: Vec<Variant>,
- // "Flat" enums do not have, and will never have, variants with associated
data.
- pub(super) flat: bool,
-@@ -172,11 +173,11 @@
- }
-
- /// Represents an individual variant in an Enum.
- ///
- /// Each variant has a name and zero or more fields.
--#[derive(Debug, Clone, Default, Hash)]
-+#[derive(Debug, Clone, Default, Checksum)]
- pub struct Variant {
- pub(super) name: String,
- pub(super) fields: Vec<Field>,
- }
-
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/error.rs
b/third_party/rust/uniffi_bindgen/src/interface/error.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/error.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/error.rs
-@@ -81,10 +81,11 @@
- //! assert_eq!(err.is_flat(), false);
- //! # Ok::<(), anyhow::Error>(())
- //! ```
-
- use anyhow::Result;
-+use uniffi_meta::Checksum;
-
- use super::enum_::{Enum, Variant};
- use super::types::{Type, TypeIterator};
- use super::{APIConverter, ComponentInterface};
-
-@@ -92,11 +93,11 @@
- ///
- /// Errors are represented in the UDL as enums with the special `[Error]` attribute,
but
- /// they're handled in the FFI very differently. We create them in
`uniffi::call_with_result()` if
- /// the wrapped function returns an `Err` value
- /// struct and assign an integer error code to each variant.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Error {
- pub name: String,
- enum_: Enum,
- }
-
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/function.rs
b/third_party/rust/uniffi_bindgen/src/interface/function.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/function.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/function.rs
-@@ -30,13 +30,13 @@
- //! assert!(matches!(func.return_type(), Some(Type::String)));
- //! assert_eq!(func.arguments().len(), 0);
- //! # Ok::<(), anyhow::Error>(())
- //! ```
- use std::convert::TryFrom;
--use std::hash::{Hash, Hasher};
-
- use anyhow::{bail, Result};
-+use uniffi_meta::Checksum;
-
- use super::ffi::{FFIArgument, FFIFunction};
- use super::literal::{convert_default_value, Literal};
- use super::types::{Type, TypeIterator};
- use super::{
-@@ -49,15 +49,22 @@
- ///
- /// Each `Function` corresponds to a standalone function in the rust module,
- /// and has a corresponding standalone function in the foreign language bindings.
- ///
- /// In the FFI, this will be a standalone function with appropriately lowered types.
--#[derive(Debug, Clone)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Function {
- pub(super) name: String,
- pub(super) arguments: Vec<Argument>,
- pub(super) return_type: Option<Type>,
-+ // We don't include the FFIFunc in the hash calculation, because:
-+ // - it is entirely determined by the other fields,
-+ // so excluding it is safe.
-+ // - its `name` property includes a checksum derived from the very
-+ // hash value we're trying to calculate here, so excluding it
-+ // avoids a weird circular depenendency in the calculation.
-+ #[checksum_ignore]
- pub(super) ffi_func: FFIFunction,
- pub(super) attributes: FunctionAttributes,
- }
-
- impl Function {
-@@ -140,25 +147,10 @@
- attributes: Default::default(),
- }
- }
- }
-
--impl Hash for Function {
-- fn hash<H: Hasher>(&self, state: &mut H) {
-- // We don't include the FFIFunc in the hash calculation, because:
-- // - it is entirely determined by the other fields,
-- // so excluding it is safe.
-- // - its `name` property includes a checksum derived from the very
-- // hash value we're trying to calculate here, so excluding it
-- // avoids a weird circular depenendency in the calculation.
-- self.name.hash(state);
-- self.arguments.hash(state);
-- self.return_type.hash(state);
-- self.attributes.hash(state);
-- }
--}
--
- impl APIConverter<Function> for weedle::namespace::NamespaceMember<'_>
{
- fn convert(&self, ci: &mut ComponentInterface) -> Result<Function>
{
- match self {
- weedle::namespace::NamespaceMember::Operation(f) => f.convert(ci),
- _ => bail!("no support for namespace member type {:?} yet",
self),
-@@ -183,11 +175,11 @@
- }
-
- /// Represents an argument to a function/constructor/method call.
- ///
- /// Each argument has a name and a type, along with some optional metadata.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Argument {
- pub(super) name: String,
- pub(super) type_: Type,
- pub(super) by_ref: bool,
- pub(super) optional: bool,
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/literal.rs
b/third_party/rust/uniffi_bindgen/src/interface/literal.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/literal.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/literal.rs
-@@ -6,16 +6,17 @@
- //!
- //! This module provides support for interpreting literal values from the UDL,
- //! which appear in places such as default arguments.
-
- use anyhow::{bail, Result};
-+use uniffi_meta::Checksum;
-
- use super::types::Type;
-
- // Represents a literal value.
- // Used for e.g. default argument values.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub enum Literal {
- Boolean(bool),
- String(String),
- // Integers are represented as the widest representation we can.
- // Number formatting vary with language and radix, so we avoid a lot of parsing and
-@@ -33,11 +34,11 @@
- Null,
- }
-
- // Represent the radix of integer literal values.
- // We preserve the radix into the generated bindings for readability reasons.
--#[derive(Debug, Clone, Copy, Hash)]
-+#[derive(Debug, Clone, Copy, Checksum)]
- pub enum Radix {
- Decimal = 10,
- Octal = 8,
- Hexadecimal = 16,
- }
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/mod.rs
b/third_party/rust/uniffi_bindgen/src/interface/mod.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/mod.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/mod.rs
-@@ -42,16 +42,11 @@
- //! a good opportunity here for e.g. interned strings, but we're nowhere near
the point were we need
- //! that kind of optimization just yet.
- //!
- //! * Error messages and general developer experience leave a lot to be desired.
-
--use std::{
-- collections::HashSet,
-- convert::TryFrom,
-- hash::{Hash, Hasher},
-- iter,
--};
-+use std::{collections::HashSet, convert::TryFrom, iter};
-
- use anyhow::{bail, Result};
-
- pub mod types;
- pub use types::Type;
-@@ -75,26 +70,30 @@
- mod record;
- pub use record::{Field, Record};
-
- pub mod ffi;
- pub use ffi::{FFIArgument, FFIFunction, FFIType};
--use uniffi_meta::{MethodMetadata, ObjectMetadata};
-+use uniffi_meta::{Checksum, MethodMetadata, ObjectMetadata};
-
- /// The main public interface for this module, representing the complete details of an
interface exposed
- /// by a rust component and the details of consuming it via an extern-C FFI layer.
- ///
--#[derive(Debug, Default)]
-+#[derive(Debug, Default, Checksum)]
- pub struct ComponentInterface {
- /// Every ComponentInterface gets tagged with the version of uniffi used to create
it.
- /// This helps us avoid using a lib compiled with one version together with bindings
created
- /// using a different version, which might introduce unsafety.
- uniffi_version: String,
- /// All of the types used in the interface.
-+ // We can't checksum `self.types`, but its contents are implied by the other
fields
-+ // anyway, so it's safe to ignore it.
-+ #[checksum_ignore]
- pub(super) types: TypeUniverse,
- /// The unique prefix that we'll use for namespacing when exposing this
component's API.
- namespace: String,
- /// The internal unique prefix used to namespace FFI symbols
-+ #[checksum_ignore]
- ffi_namespace: String,
- /// The high-level API provided by the component.
- enums: Vec<Enum>,
- records: Vec<Record>,
- functions: Vec<Function>,
-@@ -105,11 +104,11 @@
-
- impl ComponentInterface {
- /// Parse a `ComponentInterface` from a string containing a WebIDL definition.
- pub fn from_webidl(idl: &str) -> Result<Self> {
- let mut ci = Self {
-- uniffi_version: env!("CARGO_PKG_VERSION").to_string(),
-+ uniffi_version: "0.21.0".to_string(),
- ..Default::default()
- };
- // There's some lifetime thing with the errors returned from
weedle::Definitions::parse
- // that my own lifetime is too short to worry about figuring out; unwrap and
move on.
-
-@@ -319,20 +318,12 @@
- /// and the same version of Rust, will always have the same checksum value.
- /// - Two ComponentInterfaces will, with high probability, have different checksum
values if:
- /// - They were generated from two different WebIDL files.
- /// - They were generated by two different versions of uniffi
- ///
-- /// The checksum may or may not change depending on the version of Rust used; since
we expect
-- /// consumers to be using the same executable to generate both the scaffolding and
the bindings,
-- /// assuming the same version of Rust seems acceptable.
-- ///
- /// Note that this is designed to prevent accidents, not attacks, so there is no
need for the
- /// checksum to be cryptographically secure.
-- ///
-- /// TODO: it's not clear to me if the derivation of `Hash` is actually
deterministic enough to
-- /// ensure the guarantees above, or if it might be sensitive to e.g. compiler-driven
re-ordering
-- /// of struct field. Let's see how it goes...
- pub fn checksum(&self) -> u16 {
- uniffi_meta::checksum(self)
- }
-
- /// The namespace to use in FFI-level function definitions.
-@@ -670,27 +661,10 @@
- }
- Ok(())
- }
- }
-
--/// `ComponentInterface` structs can be hashed, but this is mostly a convenient way to
--/// produce a checksum of their contents. They're not really intended to live in a
hashtable.
--impl Hash for ComponentInterface {
-- fn hash<H: Hasher>(&self, state: &mut H) {
-- // We can't hash `self.types`, but its contents are implied by the other
fields
-- // anyway, so it's safe to ignore it.
-- self.uniffi_version.hash(state);
-- self.namespace.hash(state);
-- self.enums.hash(state);
-- self.records.hash(state);
-- self.functions.hash(state);
-- self.objects.hash(state);
-- self.callback_interfaces.hash(state);
-- self.errors.hash(state);
-- }
--}
--
- fn get_or_insert_object<'a>(objects: &'a mut Vec<Object>, name:
&str) -> &'a mut Object {
- // The find-based way of writing this currently runs into a borrow checker
- // error, so we use position
- match objects.iter_mut().position(|o| o.name == name) {
- Some(idx) => &mut objects[idx],
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/object.rs
b/third_party/rust/uniffi_bindgen/src/interface/object.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/object.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/object.rs
-@@ -56,14 +56,14 @@
- //! assert_eq!(obj.constructors().len(), 0);
- //! # Ok::<(), anyhow::Error>(())
- //! ```
-
- use std::convert::TryFrom;
--use std::hash::{Hash, Hasher};
- use std::{collections::HashSet, iter};
-
- use anyhow::{bail, Result};
-+use uniffi_meta::Checksum;
-
- use super::ffi::{FFIArgument, FFIFunction, FFIType};
- use super::function::Argument;
- use super::types::{Type, TypeIterator};
- use super::{
-@@ -84,16 +84,24 @@
- /// binding code is expected to stitch these functions back together into an appropriate
class
- /// definition (or that language's equivalent thereof).
- ///
- /// TODO:
- /// - maybe "Class" would be a better name than "Object" here?
--#[derive(Debug, Clone)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Object {
- pub(super) name: String,
- pub(super) constructors: Vec<Constructor>,
- pub(super) methods: Vec<Method>,
-+ // We don't include the FFIFunc in the hash calculation, because:
-+ // - it is entirely determined by the other fields,
-+ // so excluding it is safe.
-+ // - its `name` property includes a checksum derived from the very
-+ // hash value we're trying to calculate here, so excluding it
-+ // avoids a weird circular depenendency in the calculation.
-+ #[checksum_ignore]
- pub(super) ffi_func_free: FFIFunction,
-+ #[checksum_ignore]
- pub(super) uses_deprecated_threadsafe_attribute: bool,
- }
-
- impl Object {
- pub(super) fn new(name: String) -> Object {
-@@ -188,24 +196,10 @@
- .flatten(),
- )
- }
- }
-
--impl Hash for Object {
-- fn hash<H: Hasher>(&self, state: &mut H) {
-- // We don't include the FFIFunc in the hash calculation, because:
-- // - it is entirely determined by the other fields,
-- // so excluding it is safe.
-- // - its `name` property includes a checksum derived from the very
-- // hash value we're trying to calculate here, so excluding it
-- // avoids a weird circular depenendency in the calculation.
-- self.name.hash(state);
-- self.constructors.hash(state);
-- self.methods.hash(state);
-- }
--}
--
- impl APIConverter<Object> for weedle::InterfaceDefinition<'_> {
- fn convert(&self, ci: &mut ComponentInterface) -> Result<Object> {
- if self.inheritance.is_some() {
- bail!("interface inheritence is not supported");
- }
-@@ -243,14 +237,21 @@
-
- // Represents a constructor for an object type.
- //
- // In the FFI, this will be a function that returns a pointer to an instance
- // of the corresponding object type.
--#[derive(Debug, Clone)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Constructor {
- pub(super) name: String,
- pub(super) arguments: Vec<Argument>,
-+ // We don't include the FFIFunc in the hash calculation, because:
-+ // - it is entirely determined by the other fields,
-+ // so excluding it is safe.
-+ // - its `name` property includes a checksum derived from the very
-+ // hash value we're trying to calculate here, so excluding it
-+ // avoids a weird circular depenendency in the calculation.
-+ #[checksum_ignore]
- pub(super) ffi_func: FFIFunction,
- pub(super) attributes: ConstructorAttributes,
- }
-
- impl Constructor {
-@@ -297,24 +298,10 @@
- pub fn iter_types(&self) -> TypeIterator<'_> {
- Box::new(self.arguments.iter().flat_map(Argument::iter_types))
- }
- }
-
--impl Hash for Constructor {
-- fn hash<H: Hasher>(&self, state: &mut H) {
-- // We don't include the FFIFunc in the hash calculation, because:
-- // - it is entirely determined by the other fields,
-- // so excluding it is safe.
-- // - its `name` property includes a checksum derived from the very
-- // hash value we're trying to calculate here, so excluding it
-- // avoids a weird circular depenendency in the calculation.
-- self.name.hash(state);
-- self.arguments.hash(state);
-- self.attributes.hash(state);
-- }
--}
--
- impl Default for Constructor {
- fn default() -> Self {
- Constructor {
- name: String::from("new"),
- arguments: Vec::new(),
-@@ -341,16 +328,23 @@
-
- // Represents an instance method for an object type.
- //
- // The FFI will represent this as a function whose first/self argument is a
- // `FFIType::RustArcPtr` to the instance.
--#[derive(Debug, Clone)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Method {
- pub(super) name: String,
- pub(super) object_name: String,
-+ pub(super) arguments: Vec<Argument>,
- pub(super) return_type: Option<Type>,
-- pub(super) arguments: Vec<Argument>,
-+ // We don't include the FFIFunc in the hash calculation, because:
-+ // - it is entirely determined by the other fields,
-+ // so excluding it is safe.
-+ // - its `name` property includes a checksum derived from the very
-+ // hash value we're trying to calculate here, so excluding it
-+ // avoids a weird circular depenendency in the calculation.
-+ #[checksum_ignore]
- pub(super) ffi_func: FFIFunction,
- pub(super) attributes: MethodAttributes,
- }
-
- impl Method {
-@@ -448,26 +442,10 @@
- attributes: Default::default(),
- }
- }
- }
-
--impl Hash for Method {
-- fn hash<H: Hasher>(&self, state: &mut H) {
-- // We don't include the FFIFunc in the hash calculation, because:
-- // - it is entirely determined by the other fields,
-- // so excluding it is safe.
-- // - its `name` property includes a checksum derived from the very
-- // hash value we're trying to calculate here, so excluding it
-- // avoids a weird circular depenendency in the calculation.
-- self.name.hash(state);
-- self.object_name.hash(state);
-- self.arguments.hash(state);
-- self.return_type.hash(state);
-- self.attributes.hash(state);
-- }
--}
--
- impl APIConverter<Method> for
weedle::interface::OperationInterfaceMember<'_> {
- fn convert(&self, ci: &mut ComponentInterface) -> Result<Method> {
- if self.special.is_some() {
- bail!("special operations not supported");
- }
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/record.rs
b/third_party/rust/uniffi_bindgen/src/interface/record.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/record.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/record.rs
-@@ -43,10 +43,11 @@
- //! assert_eq!(record.fields()[1].name(), "value");
- //! # Ok::<(), anyhow::Error>(())
- //! ```
-
- use anyhow::{bail, Result};
-+use uniffi_meta::Checksum;
-
- use super::types::{Type, TypeIterator};
- use super::{
- convert_type,
- literal::{convert_default_value, Literal},
-@@ -56,11 +57,11 @@
- /// Represents a "data class" style object, for passing around complex
values.
- ///
- /// In the FFI these are represented as a byte buffer, which one side explicitly
- /// serializes the data into and the other serializes it out of. So I guess they're
- /// kind of like "pass by clone" values.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Record {
- pub(super) name: String,
- pub(super) fields: Vec<Field>,
- }
-
-@@ -107,11 +108,11 @@
- })
- }
- }
-
- // Represents an individual field on a Record.
--#[derive(Debug, Clone, Hash)]
-+#[derive(Debug, Clone, Checksum)]
- pub struct Field {
- pub(super) name: String,
- pub(super) type_: Type,
- pub(super) required: bool,
- pub(super) default: Option<Literal>,
-diff --git a/third_party/rust/uniffi_bindgen/src/interface/types/mod.rs
b/third_party/rust/uniffi_bindgen/src/interface/types/mod.rs
---- a/third_party/rust/uniffi_bindgen/src/interface/types/mod.rs
-+++ b/third_party/rust/uniffi_bindgen/src/interface/types/mod.rs
-@@ -23,10 +23,11 @@
-
- use std::{collections::hash_map::Entry, collections::BTreeSet, collections::HashMap,
iter};
-
- use anyhow::{bail, Result};
- use heck::ToUpperCamelCase;
-+use uniffi_meta::Checksum;
-
- use super::ffi::FFIType;
-
- mod finder;
- pub(super) use finder::TypeFinder;
-@@ -34,11 +35,11 @@
- pub(super) use resolver::{resolve_builtin_type, TypeResolver};
-
- /// Represents all the different high-level types that can be used in a component
interface.
- /// At this level we identify user-defined types by name, without knowing any details
- /// of their internal structure apart from what type of thing they are (record, enum,
etc).
--#[derive(Debug, Clone, Eq, PartialEq, Hash, Ord, PartialOrd)]
-+#[derive(Debug, Clone, Eq, PartialEq, Checksum, Ord, PartialOrd)]
- pub enum Type {
- // Primitive types.
- UInt8,
- Int8,
- UInt16,
-diff --git a/third_party/rust/uniffi_build/.cargo-checksum.json
b/third_party/rust/uniffi_build/.cargo-checksum.json
---- a/third_party/rust/uniffi_build/.cargo-checksum.json
-+++ b/third_party/rust/uniffi_build/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"bf9105f53978ecdccad9a75fc3645f97982d3c4162a5a9b49ab16554162b51c1","src/lib.rs":"485a0c0ab99077a1d4037f4deec9801e87a248196e7589a002556fb84973528a"},"package":"510287c368a9386eb731ebe824a6fc6c82a105e20d020af1aa20519c1c1561db"}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"30736876caf953bd0040b6c0fc824744556bf52fe23d656c7d01442d4c180674","src/lib.rs":"485a0c0ab99077a1d4037f4deec9801e87a248196e7589a002556fb84973528a"},"package":"d035e50433ee3d52ab0dcdcf3b9b26f2cc2ec39294b3c07d95865a518709455f"}
-\ No newline at end of file
-diff --git a/third_party/rust/uniffi_build/Cargo.toml
b/third_party/rust/uniffi_build/Cargo.toml
---- a/third_party/rust/uniffi_build/Cargo.toml
-+++ b/third_party/rust/uniffi_build/Cargo.toml
-@@ -10,31 +10,30 @@
- # See Cargo.toml.orig for the original contents.
-
- [package]
- edition = "2021"
- name = "uniffi_build"
--version = "0.21.0"
-+version = "0.21.1"
- authors = ["Firefox Sync Team <sync-team(a)mozilla.com>"]
- description = "a multi-language bindings generator for rust (build script
helpers)"
- homepage = "https://mozilla.github.io/uniffi-rs"
- documentation = "https://mozilla.github.io/uniffi-rs"
- keywords = [
- "ffi",
- "bindgen",
- ]
- license = "MPL-2.0"
- repository = "https://github.com/mozilla/uniffi-rs"
--resolver = "2"
-
- [dependencies.anyhow]
- version = "1"
-
- [dependencies.camino]
- version = "1.0.8"
-
- [dependencies.uniffi_bindgen]
--version = "=0.21.0"
-+version = "=0.21.1"
- optional = true
-
- [features]
- builtin-bindgen = ["uniffi_bindgen"]
- default = []
-diff --git a/third_party/rust/uniffi_checksum_derive/.cargo-checksum.json
b/third_party/rust/uniffi_checksum_derive/.cargo-checksum.json
-new file mode 100644
---- /dev/null
-+++ b/third_party/rust/uniffi_checksum_derive/.cargo-checksum.json
-@@ -0,0 +1 @@
-+{"files":{"Cargo.toml":"2ab3c60724c4c504297f8876bf0a8d1291f76a2fc46f5e83634aa147e89ffc71","src/lib.rs":"c68c69a1cf6a69e5fe78f7b069364a265c5bb6ce8c0abf0b5745eca01c79604a"},"package":"78b6e16d46caf942016997af8bbdf4b163bf8ae3deb0b667d9643de7b7ffd4c9"}
-\ No newline at end of file
-diff --git a/third_party/rust/uniffi_checksum_derive/Cargo.toml
b/third_party/rust/uniffi_checksum_derive/Cargo.toml
-new file mode 100644
---- /dev/null
-+++ b/third_party/rust/uniffi_checksum_derive/Cargo.toml
-@@ -0,0 +1,42 @@
-+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-+#
-+# When uploading crates to the registry Cargo will automatically
-+# "normalize" Cargo.toml files for maximal compatibility
-+# with all versions of Cargo and also rewrite `path` dependencies
-+# to registry (e.g., crates.io) dependencies.
-+#
-+# If you are reading this file be aware that the original Cargo.toml
-+# will likely look very different (and much more reasonable).
-+# See Cargo.toml.orig for the original contents.
-+
-+[package]
-+edition = "2021"
-+name = "uniffi_checksum_derive"
-+version = "0.21.1"
-+authors = ["Firefox Sync Team <sync-team(a)mozilla.com>"]
-+description = "a multi-language bindings generator for rust (checksum custom
derive)"
-+homepage = "https://mozilla.github.io/uniffi-rs"
-+documentation = "https://mozilla.github.io/uniffi-rs"
-+keywords = [
-+ "ffi",
-+ "bindgen",
-+]
-+license = "MPL-2.0"
-+repository = "https://github.com/mozilla/uniffi-rs"
-+
-+[lib]
-+proc-macro = true
-+
-+[dependencies.quote]
-+version = "1.0"
-+
-+[dependencies.syn]
-+version = "1.0"
-+features = [
-+ "derive",
-+ "parsing",
-+]
-+
-+[features]
-+default = []
-+nightly = []
-diff --git a/third_party/rust/uniffi_checksum_derive/src/lib.rs
b/third_party/rust/uniffi_checksum_derive/src/lib.rs
-new file mode 100644
---- /dev/null
-+++ b/third_party/rust/uniffi_checksum_derive/src/lib.rs
-@@ -0,0 +1,134 @@
-+/* This Source Code Form is subject to the terms of the Mozilla Public
-+ * License, v. 2.0. If a copy of the MPL was not distributed with this
-+ * file, You can obtain one at
http://mozilla.org/MPL/2.0/. */
-+#![cfg_attr(feature = "nightly", feature(proc_macro_expand))]
-+
-+//! Custom derive for uniffi_meta::Checksum
-+
-+use proc_macro::TokenStream;
-+use quote::{format_ident, quote};
-+use syn::{parse_macro_input, Attribute, Data, DeriveInput, Expr, ExprLit, Fields, Index,
Lit};
-+
-+fn has_ignore_attribute(attrs: &[Attribute]) -> bool {
-+ attrs.iter().any(|attr| {
-+ if attr.path.is_ident("checksum_ignore") {
-+ if !attr.tokens.is_empty() {
-+ panic!("#[checksum_ignore] doesn't accept extra
information");
-+ }
-+ true
-+ } else {
-+ false
-+ }
-+ })
-+}
-+
-+#[proc_macro_derive(Checksum, attributes(checksum_ignore))]
-+pub fn checksum_derive(input: TokenStream) -> TokenStream {
-+ let input: DeriveInput = parse_macro_input!(input);
-+
-+ let name = input.ident;
-+
-+ let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
-+
-+ let code = match input.data {
-+ Data::Enum(enum_)
-+ if enum_.variants.len() == 1
-+ && enum_
-+ .variants
-+ .iter()
-+ .all(|variant| matches!(variant.fields, Fields::Unit)) =>
-+ {
-+ quote!()
-+ }
-+ Data::Enum(enum_) => {
-+ let mut next_discriminant = 0u64;
-+ let match_inner = enum_.variants.iter().map(|variant| {
-+ let ident = &variant.ident;
-+ if has_ignore_attribute(&variant.attrs) {
-+ panic!("#[checksum_ignore] is not supported in enums");
-+ }
-+ match &variant.discriminant {
-+ Some((_, Expr::Lit(ExprLit { lit: Lit::Int(value), .. }))) => {
-+ next_discriminant = value.base10_parse::<u64>().unwrap();
-+ }
-+ Some(_) => {
-+ panic!("#[derive(Checksum)] doesn't support non-numeric
explicit discriminants in enums");
-+ }
-+ None => {}
-+ }
-+ let discriminant = quote! {
state.write(&#next_discriminant.to_le_bytes()) };
-+ next_discriminant += 1;
-+ match &variant.fields {
-+ Fields::Unnamed(fields) => {
-+ let field_idents = fields
-+ .unnamed
-+ .iter()
-+ .enumerate()
-+ .map(|(num, _)| format_ident!("__self_{}", num));
-+ let field_stmts = field_idents
-+ .clone()
-+ .map(|ident| quote! { Checksum::checksum(#ident, state);
});
-+ quote! {
-+ Self::#ident(#(#field_idents,)*) => {
-+ #discriminant;
-+ #(#field_stmts)*
-+ }
-+ }
-+ }
-+ Fields::Named(fields) => {
-+ let field_idents = fields
-+ .named
-+ .iter()
-+ .map(|field| field.ident.as_ref().unwrap());
-+ let field_stmts = field_idents
-+ .clone()
-+ .map(|ident| quote! { Checksum::checksum(#ident, state);
});
-+ quote! {
-+ Self::#ident { #(#field_idents,)* } => {
-+ #discriminant;
-+ #(#field_stmts)*
-+ }
-+ }
-+ }
-+ Fields::Unit => quote! { Self::#ident => #discriminant, },
-+ }
-+ });
-+ quote! {
-+ match self {
-+ #(#match_inner)*
-+ }
-+ }
-+ }
-+ Data::Struct(struct_) => {
-+ let stmts = struct_
-+ .fields
-+ .iter()
-+ .enumerate()
-+ .filter_map(|(num, field)| {
-+ (!has_ignore_attribute(&field.attrs)).then(|| match
field.ident.as_ref() {
-+ Some(ident) => quote! { Checksum::checksum(&self.#ident,
state); },
-+ None => {
-+ let i = Index::from(num);
-+ quote! { Checksum::checksum(&self.#i, state); }
-+ }
-+ })
-+ });
-+ quote! {
-+ #(#stmts)*
-+ }
-+ }
-+ Data::Union(_) => {
-+ panic!("#[derive(Checksum)] is not supported for unions");
-+ }
-+ };
-+
-+ quote! {
-+ #[automatically_derived]
-+ impl #impl_generics Checksum for #name #ty_generics #where_clause {
-+ fn checksum<__H: ::core::hash::Hasher>(&self, state: &mut __H)
{
-+ #code
-+ }
-+ }
-+ }
-+ .into()
-+}
-diff --git a/third_party/rust/uniffi_macros/.cargo-checksum.json
b/third_party/rust/uniffi_macros/.cargo-checksum.json
---- a/third_party/rust/uniffi_macros/.cargo-checksum.json
-+++ b/third_party/rust/uniffi_macros/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"55f7e114dd34b0c60b58890120f8707601a5401e9d49d42a239b03da2e660d4f","src/export.rs":"e23929cf6fb5542d29514fe668f3b3d836fad968eacd9c6fcba74c5cd9cf2b61","src/export/metadata.rs":"af89a9942c7c0c4043a3cd57d1e6bd71cde19005e1f9f246efac761f47eff6be","src/export/metadata/convert.rs":"81060fb3390165d77db021f44142a2f3f10882515f859d7393857083370f2d35","src/export/metadata/function.rs":"11833cabd37e7671c0a01944bec73b8892a15df814bbe4c26fdae57aad89a2ba","src/export/metadata/impl_.rs":"ecfdaa132f05dd946414281e52165ef19c90c0bfd76ec651d4ec86837bd41d1c","src/export/scaffolding.rs":"66939405063e56fc983126f249e2d7ddc3257cb045a738abd0cf813a4aafc59c","src/lib.rs":"ca77b437a58cfb3ddeb106d3c1c8378545c46ef241298e62ab1190c5136d1fb1","src/object.rs":"955b596f344304013692042bdc1760bbb1192ec33950b0dd2932cb8de94ec297","src/record.rs":"67a5c7ed6a448f7ad8f5c8e930c5e3007b2b0cac32f52cc8596bdae6fb3c816e","src/util.rs":"6389a9b4258808a3af168cf85658fb7c069172d5e528ee0e94210fa664f2a414"},"package":"5c8604503caa2cbcf271578dc51ca236d40e3b22e1514ffa2e638e2c39f6ad10"}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"6511b493b676ac3941d70477c91abec62642c3c9aab088ecdf4f733eef3f1faa","src/export.rs":"e23929cf6fb5542d29514fe668f3b3d836fad968eacd9c6fcba74c5cd9cf2b61","src/export/metadata.rs":"af89a9942c7c0c4043a3cd57d1e6bd71cde19005e1f9f246efac761f47eff6be","src/export/metadata/convert.rs":"81060fb3390165d77db021f44142a2f3f10882515f859d7393857083370f2d35","src/export/metadata/function.rs":"11833cabd37e7671c0a01944bec73b8892a15df814bbe4c26fdae57aad89a2ba","src/export/metadata/impl_.rs":"ecfdaa132f05dd946414281e52165ef19c90c0bfd76ec651d4ec86837bd41d1c","src/export/scaffolding.rs":"66939405063e56fc983126f249e2d7ddc3257cb045a738abd0cf813a4aafc59c","src/lib.rs":"ca77b437a58cfb3ddeb106d3c1c8378545c46ef241298e62ab1190c5136d1fb1","src/object.rs":"955b596f344304013692042bdc1760bbb1192ec33950b0dd2932cb8de94ec297","src/record.rs":"67a5c7ed6a448f7ad8f5c8e930c5e3007b2b0cac32f52cc8596bdae6fb3c816e","src/util.rs":"6389a9b4258808a3af168cf85658fb7c069172d5e528ee0e94210fa664f2a414"},"package":"c96a574677566f83ea8458dac1dd7792fd63e7c3f9dbcd865f0e8d6f8057b127"}
-\ No newline at end of file
-diff --git a/third_party/rust/uniffi_macros/Cargo.toml
b/third_party/rust/uniffi_macros/Cargo.toml
---- a/third_party/rust/uniffi_macros/Cargo.toml
-+++ b/third_party/rust/uniffi_macros/Cargo.toml
-@@ -10,22 +10,21 @@
- # See Cargo.toml.orig for the original contents.
-
- [package]
- edition = "2021"
- name = "uniffi_macros"
--version = "0.21.0"
-+version = "0.21.1"
- authors = ["Firefox Sync Team <sync-team(a)mozilla.com>"]
- description = "a multi-language bindings generator for rust (convenience
macros)"
- homepage = "https://mozilla.github.io/uniffi-rs"
- documentation = "https://mozilla.github.io/uniffi-rs"
- keywords = [
- "ffi",
- "bindgen",
- ]
- license = "MPL-2.0"
- repository = "https://github.com/mozilla/uniffi-rs"
--resolver = "2"
-
- [lib]
- proc-macro = true
-
- [dependencies.bincode]
-@@ -58,14 +57,14 @@
-
- [dependencies.toml]
- version = "0.5.9"
-
- [dependencies.uniffi_build]
--version = "=0.21.0"
-+version = "=0.21.1"
-
- [dependencies.uniffi_meta]
--version = "=0.21.0"
-+version = "=0.21.1"
-
- [features]
- builtin-bindgen = ["uniffi_build/builtin-bindgen"]
- default = []
- nightly = []
-diff --git a/third_party/rust/uniffi_meta/.cargo-checksum.json
b/third_party/rust/uniffi_meta/.cargo-checksum.json
---- a/third_party/rust/uniffi_meta/.cargo-checksum.json
-+++ b/third_party/rust/uniffi_meta/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"4a474782b3acac7e99435c0cfc6cd4790817ee5c15980b10dc927d95795b977f","src/lib.rs":"dc4c91763c01e8c09ef55cdb103bc02c7aba71c5660ba88f776a8a03a747d6e8"},"package":"cd9417cc653937681436b93838d8c5f97a5b8c58697813982ee8810bd1dc3b57"}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"4c34032ec5fadf8b996c671425d5afa38e0e5c223ab0b2ed3b44099fb78157d3","src/lib.rs":"a9854421f120e1c4a9d7d36bb006a4c5e7d2e054564f95aa9b6956e7ebb348fd"},"package":"729835442da829c9b6f7c111c76cf87b2498e129101203bec94f0c39a3296a38"}
-\ No newline at end of file
-diff --git a/third_party/rust/uniffi_meta/Cargo.toml
b/third_party/rust/uniffi_meta/Cargo.toml
---- a/third_party/rust/uniffi_meta/Cargo.toml
-+++ b/third_party/rust/uniffi_meta/Cargo.toml
-@@ -10,19 +10,24 @@
- # See Cargo.toml.orig for the original contents.
-
- [package]
- edition = "2021"
- name = "uniffi_meta"
--version = "0.21.0"
-+version = "0.21.1"
- description = "uniffi_meta"
- homepage = "https://mozilla.github.io/uniffi-rs"
- keywords = [
- "ffi",
- "bindgen",
- ]
- license = "MPL-2.0"
- repository = "https://github.com/mozilla/uniffi-rs"
--resolver = "2"
-
- [dependencies.serde]
- version = "1.0.136"
- features = ["derive"]
-+
-+[dependencies.siphasher]
-+version = "0.3"
-+
-+[dependencies.uniffi_checksum_derive]
-+version = "0.21.0"
-diff --git a/third_party/rust/uniffi_meta/src/lib.rs
b/third_party/rust/uniffi_meta/src/lib.rs
---- a/third_party/rust/uniffi_meta/src/lib.rs
-+++ b/third_party/rust/uniffi_meta/src/lib.rs
-@@ -1,17 +1,87 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at
http://mozilla.org/MPL/2.0/. */
-
--use std::{
-- collections::hash_map::DefaultHasher,
-- hash::{Hash, Hasher},
--};
-+use std::hash::Hasher;
-+pub use uniffi_checksum_derive::Checksum;
-
- use serde::{Deserialize, Serialize};
-
--#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
-+/// Similar to std::hash::Hash.
-+///
-+/// Implementations of this trait are expected to update the hasher state in
-+/// the same way across platforms. #[derive(Checksum)] will do the right thing.
-+pub trait Checksum {
-+ fn checksum<H: Hasher>(&self, state: &mut H);
-+}
-+
-+impl Checksum for bool {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ state.write_u8(*self as u8);
-+ }
-+}
-+
-+impl Checksum for u64 {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ state.write(&self.to_le_bytes());
-+ }
-+}
-+
-+impl Checksum for i64 {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ state.write(&self.to_le_bytes());
-+ }
-+}
-+
-+impl<T: Checksum> Checksum for Box<T> {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ (**self).checksum(state)
-+ }
-+}
-+
-+impl<T: Checksum> Checksum for [T] {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ state.write(&(self.len() as u64).to_le_bytes());
-+ for item in self {
-+ Checksum::checksum(item, state);
-+ }
-+ }
-+}
-+
-+impl<T: Checksum> Checksum for Vec<T> {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ Checksum::checksum(&**self, state);
-+ }
-+}
-+
-+impl<T: Checksum> Checksum for Option<T> {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ match self {
-+ None => state.write(&0u64.to_le_bytes()),
-+ Some(value) => {
-+ state.write(&1u64.to_le_bytes());
-+ Checksum::checksum(value, state)
-+ }
-+ }
-+ }
-+}
-+
-+impl Checksum for str {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ state.write(self.as_bytes());
-+ state.write_u8(0xff);
-+ }
-+}
-+
-+impl Checksum for String {
-+ fn checksum<H: Hasher>(&self, state: &mut H) {
-+ (**self).checksum(state)
-+ }
-+}
-+
-+#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
- pub struct FnMetadata {
- pub module_path: Vec<String>,
- pub name: String,
- pub inputs: Vec<FnParamMetadata>,
- pub return_type: Option<Type>,
-@@ -21,11 +91,11 @@
- pub fn ffi_symbol_name(&self) -> String {
- fn_ffi_symbol_name(&self.module_path, &self.name, checksum(self))
- }
- }
-
--#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
-+#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
- pub struct MethodMetadata {
- pub module_path: Vec<String>,
- pub self_name: String,
- pub name: String,
- pub inputs: Vec<FnParamMetadata>,
-@@ -37,18 +107,18 @@
- let full_name = format!("impl_{}_{}", self.self_name, self.name);
- fn_ffi_symbol_name(&self.module_path, &full_name, checksum(self))
- }
- }
-
--#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
-+#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
- pub struct FnParamMetadata {
- pub name: String,
- #[serde(rename = "type")]
- pub ty: Type,
- }
-
--#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Deserialize, Serialize)]
-+#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Checksum, Deserialize,
Serialize)]
- pub enum Type {
- U8,
- U16,
- U32,
- U64,
-@@ -76,25 +146,25 @@
- Unresolved {
- name: String,
- },
- }
-
--#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
-+#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
- pub struct RecordMetadata {
- pub module_path: Vec<String>,
- pub name: String,
- pub fields: Vec<FieldMetadata>,
- }
-
--#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
-+#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
- pub struct FieldMetadata {
- pub name: String,
- #[serde(rename = "type")]
- pub ty: Type,
- }
-
--#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
-+#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
- pub struct ObjectMetadata {
- pub module_path: Vec<String>,
- pub name: String,
- }
-
-@@ -106,27 +176,27 @@
- let free_name = format!("object_free_{}", self.name);
- fn_ffi_symbol_name(&self.module_path, &free_name, checksum(self))
- }
- }
-
--/// Returns the last 16 bits of the value's hash as computed with
[`DefaultHasher`].
-+/// Returns the last 16 bits of the value's hash as computed with [`SipHasher13`].
- ///
- /// To be used as a checksum of FFI symbols, as a safeguard against different UniFFI
versions being
- /// used for scaffolding and bindings generation.
--pub fn checksum<T: Hash>(val: &T) -> u16 {
-- let mut hasher = DefaultHasher::new();
-- val.hash(&mut hasher);
-+pub fn checksum<T: Checksum>(val: &T) -> u16 {
-+ let mut hasher = siphasher::sip::SipHasher13::new();
-+ val.checksum(&mut hasher);
- (hasher.finish() & 0x000000000000FFFF) as u16
- }
-
- pub fn fn_ffi_symbol_name(mod_path: &[String], name: &str, checksum: u16) ->
String {
- let mod_path = mod_path.join("__");
- format!("_uniffi_{mod_path}_{name}_{checksum:x}")
- }
-
- /// Enum covering all the possible metadata types
--#[derive(Clone, Debug, Hash, Deserialize, Serialize)]
-+#[derive(Clone, Debug, Checksum, Deserialize, Serialize)]
- pub enum Metadata {
- Func(FnMetadata),
- Method(MethodMetadata),
- Record(RecordMetadata),
- Object(ObjectMetadata),
-
diff --git a/firefox.spec b/firefox.spec
index af584c6..4862a95 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -172,13 +172,13 @@ ExcludeArch: i686
Summary: Mozilla Firefox Web browser
Name: firefox
-Version: 108.0.1
-Release: 4%{?pre_tag}%{?dist}
+Version: 108.0.2
+Release: 1%{?pre_tag}%{?dist}
URL:
https://www.mozilla.org/firefox/
License: MPLv1.1 or GPLv2+ or LGPLv2+
Source0:
https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version...
%if %{with langpacks}
-Source1: firefox-langpacks-%{version}%{?pre_version}-20221218.tar.xz
+Source1: firefox-langpacks-%{version}%{?pre_version}-20230112.tar.xz
%endif
Source2: cbindgen-vendor.tar.xz
Source10: firefox-mozconfig
@@ -253,7 +253,6 @@ Patch415: mozilla-1670333.patch
Patch416: D163696.diff
Patch417: D163697.diff
Patch418: D163698.diff
-Patch419: D164896.diff
# PGO/LTO patches
Patch600: pgo.patch
@@ -532,7 +531,6 @@ This package contains results of tests executed during build.
%patch416 -p1 -b .D163696
%patch417 -p1 -b .D163697
%patch418 -p1 -b .D163698
-%patch419 -p1 -b .D164896
# PGO patches
%if %{build_with_pgo}
@@ -1086,6 +1084,9 @@ fi
#---------------------------------------------------------------------
%changelog
+* Thu Jan 12 2023 Jan Horak <jhorak(a)redhat.com> - 108.0.2-1
+- Update to 108.0.2
+
* Mon Jan 09 2023 Kalev Lember <klember(a)redhat.com> - 108.0.1-4
- Drop conditionals for F35
diff --git a/sources b/sources
index e70567f..65c6114 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
SHA512 (cbindgen-vendor.tar.xz) =
0d45c1decfd7aaee853748745c9f5a907c0c6a0cf809c2387aac1cdcf680b0844b1ef4d05148e0527de4ff6e4d4666110bea317bd00b7d73a1210eb58a815563
SHA512 (mochitest-python.tar.gz) =
e0a2c569dafe013b6a4c073516388549a8f398d8aa4538a3bc69dcda44737a3a3cf070285e9fa040a15d7a62446665c6158d42a1b6dc3e8d7f4680bc2ef17a16
-SHA512 (firefox-108.0.1.source.tar.xz) =
e6219ed6324422ec293ed96868738e056582bb9f7fb82e59362541f3465c6ebca806d26ecd801156b074c3675bd5a22507b1f1fa53eebf82b7dd35f2b1ff0625
-SHA512 (firefox-langpacks-108.0.1-20221218.tar.xz) =
ac9766a4eb419ba04a138cbd3a4f44dac9d83a4c2680f5b29f8b2da2ac9659cc0b1706b974e15563b2aaed371a11a999f5f11172610d60e4ebe6dcb860f1b1f2
+SHA512 (firefox-108.0.2.source.tar.xz) =
f856ef034fa4a526e19968aed092c9ee99e124d2d271ec1c1bbd091d9a03e23293d69c7a9ae17c43258cde7e73c294534b471e36441e576377854f607c9bfa3a
+SHA512 (firefox-langpacks-108.0.2-20230112.tar.xz) =
dfe1273fe3c29e737623915c10a900f370306a9af00c92b0479f2c779056823b99dff0ff94a779f8a8fa14c4d85e27813da297bfc5439802c8f1b2e5e31431b5
commit 8bed0f2480ab6d0dc3c697dfd7ade7f8d008226e
Author: Kalev Lember <klember(a)redhat.com>
Date: Mon Jan 9 23:54:02 2023 +0100
Drop rpm scriptlets for things that are handled by rpm file triggers
update-desktop-database and gtk-update-icon-cache are both handled by
file triggers in desktop-file-utils and hicolor-icon-theme packages
these days and there is no need to invoke them manually in individual
packages any more.
diff --git a/firefox.spec b/firefox.spec
index 22a5e94..af584c6 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -1015,20 +1015,6 @@ if [ $1 -eq 0 ]; then
rm -rf %{langpackdir}
fi
-%post
-update-desktop-database &> /dev/null || :
-touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
-
-%postun
-update-desktop-database &> /dev/null || :
-if [ $1 -eq 0 ] ; then
- touch --no-create %{_datadir}/icons/hicolor &>/dev/null
- gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
-fi
-
-%posttrans
-gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
-
%if %{with langpacks_subpkg}
%files
%else
commit 4f8d37fe68e2b67f7a3e19fa4f4de4f6a8568773
Author: Kalev Lember <klember(a)redhat.com>
Date: Mon Jan 9 23:41:16 2023 +0100
Avoid using rpm macros for simple shell commands
Using e.g. %{__cp} instead of cp makes everything just harder to read
without any clear benefits.
diff --git a/firefox.spec b/firefox.spec
index efa282f..22a5e94 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -550,15 +550,15 @@ This package contains results of tests executed during build.
%patch1100 -p1 -b .ppc-mobzuild
-%{__rm} -f .mozconfig
-%{__cp} %{SOURCE10} .mozconfig
+rm -f .mozconfig
+cp %{SOURCE10} .mozconfig
echo "ac_add_options --enable-default-toolkit=cairo-gtk3-wayland" >>
.mozconfig
%if %{official_branding}
echo "ac_add_options --enable-official-branding" >> .mozconfig
%endif
-%{__cp} %{SOURCE24} mozilla-api-key
-%{__cp} %{SOURCE27} google-api-key
-%{__cp} %{SOURCE35} google-loc-api-key
+cp %{SOURCE24} mozilla-api-key
+cp %{SOURCE27} google-api-key
+cp %{SOURCE35} google-loc-api-key
echo "ac_add_options --prefix=\"%{_prefix}\"" >> .mozconfig
echo "ac_add_options --libdir=\"%{_libdir}\"" >> .mozconfig
@@ -658,7 +658,7 @@ chmod a-x third_party/rust/ash/src/extensions/nv/*.rs
%if 0%{?use_bundled_cbindgen}
mkdir -p my_rust_vendor
cd my_rust_vendor
-%{__tar} xf %{SOURCE2}
+tar xf %{SOURCE2}
mkdir -p .cargo
cat > .cargo/config <<EOL
[source.crates-io]
@@ -680,24 +680,24 @@ cp %{SOURCE32} %{_buildrootdir}/bin || :
# Do not update config.guess in the ./third_party/rust because that would break
checksums
find ./ -path ./third_party/rust -prune -o -name config.guess -exec cp
/usr/lib/rpm/config.guess {} ';'
-MOZ_OPT_FLAGS=$(echo "%{optflags}" | %{__sed} -e 's/-Wall//')
+MOZ_OPT_FLAGS=$(echo "%{optflags}" | sed -e 's/-Wall//')
#rhbz#1037063
# -Werror=format-security causes build failures when -Wno-format is explicitly given
# for some sources
# Explicitly force the hardening flags for Firefox so it passes the checksec test;
# See also
https://fedoraproject.org/wiki/Changes/Harden_All_Packages
# Workaround for mozbz#1531309
-MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e
's/-Werror=format-security//')
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | sed -e
's/-Werror=format-security//')
# More Fedora specific build flags
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fpermissive"
%if %{?debug_build}
-MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//')
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | sed -e 's/-O2//')
%endif
# If MOZ_DEBUG_FLAGS is empty, firefox's build will default it to "-g"
which
# overrides the -g1 from line above and breaks building on s390/arm
# (OOM when linking, rhbz#1238225)
%ifarch %{arm} %{ix86}
-MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g0/')
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | sed -e 's/-g/-g0/')
export MOZ_DEBUG_FLAGS=" "
%endif
MOZ_LINK_FLAGS="%{build_ldflags}"
@@ -720,9 +720,9 @@ MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -fsanitize=address -ldl"
%ifarch %{arm}
# disable hard-coded LTO due to RAM constraints
-%{__sed} -i '/cargo_rustc_flags += -Clto/d' config/makefiles/rust.mk
-%{__sed} -i '/RUSTFLAGS += -Cembed-bitcode=yes/d' config/makefiles/rust.mk
-%{__sed} -i 's/codegen-units=1/codegen-units=16/' config/makefiles/rust.mk
+sed -i '/cargo_rustc_flags += -Clto/d' config/makefiles/rust.mk
+sed -i '/RUSTFLAGS += -Cembed-bitcode=yes/d' config/makefiles/rust.mk
+sed -i 's/codegen-units=1/codegen-units=16/' config/makefiles/rust.mk
# make sure "-g0" is the last flag so there's no debug info
MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -g0"
@@ -789,7 +789,7 @@ cp %{SOURCE45} .
%if 0%{?run_firefox_tests}
mkdir -p objdir/_virtualenvs/init_py3
-%{__cat} > objdir/_virtualenvs/init_py3/pip.conf << EOF
+cat > objdir/_virtualenvs/init_py3/pip.conf << EOF
[global]
find-links=`pwd`/mochitest-python
no-index=true
@@ -808,26 +808,26 @@ mkdir -p test_results
# set up our default bookmarks
%if !0%{?flatpak}
-%{__cp} -p %{default_bookmarks_file}
objdir/dist/bin/browser/chrome/browser/content/browser/default-bookmarks.html
+cp -p %{default_bookmarks_file}
objdir/dist/bin/browser/chrome/browser/content/browser/default-bookmarks.html
%endif
# Make sure locale works for langpacks
-%{__cat} > objdir/dist/bin/browser/defaults/preferences/firefox-l10n.js << EOF
+cat > objdir/dist/bin/browser/defaults/preferences/firefox-l10n.js << EOF
pref("general.useragent.locale",
"chrome://global/locale/intl.properties");
EOF
DESTDIR=%{buildroot} make -C objdir install
-%{__mkdir_p} %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications}
+mkdir -p %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications}
desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE20}
desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE31}
desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE29}
# set up the firefox start script
-%{__rm} -rf %{buildroot}%{_bindir}/firefox
-%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE21} >
%{buildroot}%{_bindir}/firefox
-%{__chmod} 755 %{buildroot}%{_bindir}/firefox
+rm -rf %{buildroot}%{_bindir}/firefox
+sed -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE21} >
%{buildroot}%{_bindir}/firefox
+chmod 755 %{buildroot}%{_bindir}/firefox
%if 0%{?flatpak}
sed -i -e 's|%FLATPAK_ENV_VARS%|export TMPDIR="$XDG_CACHE_HOME/tmp"|'
%{buildroot}%{_bindir}/firefox
@@ -835,36 +835,36 @@ sed -i -e 's|%FLATPAK_ENV_VARS%|export
TMPDIR="$XDG_CACHE_HOME/tmp"|' %{buildroo
sed -i -e 's|%FLATPAK_ENV_VARS%||' %{buildroot}%{_bindir}/firefox
%endif
-%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE30} >
%{buildroot}%{_bindir}/firefox-x11
-%{__chmod} 755 %{buildroot}%{_bindir}/firefox-x11
-%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE28} >
%{buildroot}%{_bindir}/firefox-wayland
-%{__chmod} 755 %{buildroot}%{_bindir}/firefox-wayland
+sed -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE30} >
%{buildroot}%{_bindir}/firefox-x11
+chmod 755 %{buildroot}%{_bindir}/firefox-x11
+sed -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE28} >
%{buildroot}%{_bindir}/firefox-wayland
+chmod 755 %{buildroot}%{_bindir}/firefox-wayland
-%{__install} -p -D -m 644 %{SOURCE23} %{buildroot}%{_mandir}/man1/firefox.1
+install -p -D -m 644 %{SOURCE23} %{buildroot}%{_mandir}/man1/firefox.1
-%{__rm} -f %{buildroot}/%{mozappdir}/firefox-config
-%{__rm} -f %{buildroot}/%{mozappdir}/update-settings.ini
+rm -f %{buildroot}/%{mozappdir}/firefox-config
+rm -f %{buildroot}/%{mozappdir}/update-settings.ini
for s in 16 22 24 32 48 256; do
- %{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps
- %{__cp} -p browser/branding/official/default${s}.png \
- %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/firefox.png
+ mkdir -p %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps
+ cp -p browser/branding/official/default${s}.png \
+ %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/firefox.png
done
# Install hight contrast icon
-%{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
-%{__cp} -p %{SOURCE25} \
- %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+mkdir -p %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+cp -p %{SOURCE25} \
+ %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
echo > %{name}.lang
%if %{with langpacks}
# Extract langpacks, make any mods needed, repack the langpack, and install it.
-%{__mkdir_p} %{buildroot}%{langpackdir}
-%{__tar} xf %{SOURCE1}
+mkdir -p %{buildroot}%{langpackdir}
+tar xf %{SOURCE1}
for langpack in `ls firefox-langpacks/*.xpi`; do
language=`basename $langpack .xpi`
extensionID=langpack-$language(a)firefox.mozilla.org
- %{__mkdir_p} $extensionID
+ mkdir -p $extensionID
unzip -qq $langpack -d $extensionID
find $extensionID -type f | xargs chmod 644
@@ -872,7 +872,7 @@ for langpack in `ls firefox-langpacks/*.xpi`; do
zip -qq -r9mX ../${extensionID}.xpi *
cd -
- %{__install} -m 644 ${extensionID}.xpi %{buildroot}%{langpackdir}
+ install -m 644 ${extensionID}.xpi %{buildroot}%{langpackdir}
language=`echo $language | sed -e 's/-/_/g'`
%if 0%{?flatpak}
echo "%{langpackdir}/${extensionID}.xpi" >> %{name}.lang
@@ -880,7 +880,7 @@ for langpack in `ls firefox-langpacks/*.xpi`; do
echo "%%lang($language) %{langpackdir}/${extensionID}.xpi" >>
%{name}.lang
%endif
done
-%{__rm} -rf firefox-langpacks
+rm -rf firefox-langpacks
# Install langpack workaround (see #707100, #821169)
function create_default_langpack() {
@@ -909,20 +909,20 @@ create_default_langpack "sv-SE" "sv"
create_default_langpack "zh-TW" "zh"
%endif
-%{__mkdir_p} %{buildroot}/%{mozappdir}/browser/defaults/preferences
+mkdir -p %{buildroot}/%{mozappdir}/browser/defaults/preferences
# System config dir
-%{__mkdir_p} %{buildroot}/%{_sysconfdir}/%{name}/pref
+mkdir -p %{buildroot}/%{_sysconfdir}/%{name}/pref
# System extensions
-%{__mkdir_p} %{buildroot}%{_datadir}/mozilla/extensions/%{firefox_app_id}
-%{__mkdir_p} %{buildroot}%{_libdir}/mozilla/extensions/%{firefox_app_id}
+mkdir -p %{buildroot}%{_datadir}/mozilla/extensions/%{firefox_app_id}
+mkdir -p %{buildroot}%{_libdir}/mozilla/extensions/%{firefox_app_id}
# Copy over the LICENSE
-%{__install} -p -c -m 644 LICENSE %{buildroot}/%{mozappdir}
+install -p -c -m 644 LICENSE %{buildroot}/%{mozappdir}
# Use the system hunspell dictionaries
-%{__rm} -rf %{buildroot}%{mozappdir}/dictionaries
+rm -rf %{buildroot}%{mozappdir}/dictionaries
ln -s %{_datadir}/hunspell %{buildroot}%{mozappdir}/dictionaries
# Enable crash reporter for Firefox application
@@ -930,39 +930,39 @@ ln -s %{_datadir}/hunspell %{buildroot}%{mozappdir}/dictionaries
./mach buildsymbols
sed -i -e "s/\[Crash Reporter\]/[Crash Reporter]\nEnabled=1/"
%{buildroot}/%{mozappdir}/application.ini
# Add debuginfo for
crash-stats.mozilla.com
-%{__mkdir_p} %{buildroot}/%{moz_debug_dir}
-%{__cp} objdir/dist/%{symbols_file_name} %{buildroot}/%{moz_debug_dir}
+mkdir -p %{buildroot}/%{moz_debug_dir}
+cp objdir/dist/%{symbols_file_name} %{buildroot}/%{moz_debug_dir}
%endif
%if 0%{?run_firefox_tests}
-%{__mkdir_p} %{buildroot}/%{version}-%{release}/test_results
-%{__cp} test_results/* %{buildroot}/%{version}-%{release}/test_results
-%{__cp} test_summary.txt %{buildroot}/%{version}-%{release}/
-%{__cp} failures-* %{buildroot}/%{version}-%{release}/ || true
+mkdir -p %{buildroot}/%{version}-%{release}/test_results
+cp test_results/* %{buildroot}/%{version}-%{release}/test_results
+cp test_summary.txt %{buildroot}/%{version}-%{release}/
+cp failures-* %{buildroot}/%{version}-%{release}/ || true
%endif
# Default
-%{__cp} %{SOURCE12} %{buildroot}%{mozappdir}/browser/defaults/preferences
+cp %{SOURCE12} %{buildroot}%{mozappdir}/browser/defaults/preferences
%if %{?use_xdg_file_portal}
echo 'pref("widget.use-xdg-desktop-portal.file-picker", 1);' >>
%{buildroot}%{mozappdir}/browser/defaults/preferences/firefox-redhat-default-prefs.js
%endif
# Copy over run-mozilla.sh
-%{__cp} build/unix/run-mozilla.sh %{buildroot}%{mozappdir}
+cp build/unix/run-mozilla.sh %{buildroot}%{mozappdir}
# Add distribution.ini
-%{__mkdir_p} %{buildroot}%{mozappdir}/distribution
-%{__cp} %{SOURCE26} %{buildroot}%{mozappdir}/distribution
+mkdir -p %{buildroot}%{mozappdir}/distribution
+cp %{SOURCE26} %{buildroot}%{mozappdir}/distribution
# Install appdata file
mkdir -p %{buildroot}%{_datadir}/metainfo
-%{__sed} -e "s/__VERSION__/%{version}/" \
- -e "s/__DATE__/$(date '+%F')/" \
- %{SOURCE33} > %{buildroot}%{_datadir}/metainfo/firefox.appdata.xml
+sed -e "s/__VERSION__/%{version}/" \
+ -e "s/__DATE__/$(date '+%F')/" \
+ %{SOURCE33} > %{buildroot}%{_datadir}/metainfo/firefox.appdata.xml
# Install Gnome search provider files
mkdir -p %{buildroot}%{_datadir}/gnome-shell/search-providers
-%{__cp} %{SOURCE34} %{buildroot}%{_datadir}/gnome-shell/search-providers
+cp %{SOURCE34} %{buildroot}%{_datadir}/gnome-shell/search-providers
# Remove gtk2 support as flash plugin is no longer supported
rm -rf %{buildroot}%{mozappdir}/gtk2/
@@ -1009,10 +1009,10 @@ appstream-util validate-relax --nonet
%{buildroot}%{_datadir}/metainfo/*.appdata
%preun
# is it a final removal?
if [ $1 -eq 0 ]; then
- %{__rm} -rf %{mozappdir}/components
- %{__rm} -rf %{mozappdir}/extensions
- %{__rm} -rf %{mozappdir}/plugins
- %{__rm} -rf %{langpackdir}
+ rm -rf %{mozappdir}/components
+ rm -rf %{mozappdir}/extensions
+ rm -rf %{mozappdir}/plugins
+ rm -rf %{langpackdir}
fi
%post
commit 8c2f692734313638a3a18386377656fb9530a35e
Author: Kalev Lember <klember(a)redhat.com>
Date: Mon Jan 9 15:39:25 2023 +0100
Drop conditionals for F35
Fedora 35 is now EOL.
diff --git a/firefox.spec b/firefox.spec
index c3d5f02..efa282f 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -173,7 +173,7 @@ ExcludeArch: i686
Summary: Mozilla Firefox Web browser
Name: firefox
Version: 108.0.1
-Release: 3%{?pre_tag}%{?dist}
+Release: 4%{?pre_tag}%{?dist}
URL:
https://www.mozilla.org/firefox/
License: MPLv1.1 or GPLv2+ or LGPLv2+
Source0:
https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version...
@@ -754,33 +754,9 @@ echo "ac_add_options MOZ_PGO=1" >> .mozconfig
export CCACHE_DISABLE=1
%endif
-%if 0%{?fedora} > 35
# Require 2 GB of RAM per CPU core
%constrain_build -m 2048
echo "mk_add_options MOZ_MAKE_FLAGS=\"-j%{_smp_build_ncpus}\""
>> .mozconfig
-%else
-# F35 doesn't have %%constrain_build
-MOZ_SMP_FLAGS=-j1
-# On x86_64 architectures, Mozilla can build up to 4 jobs at once in parallel,
-# however builds tend to fail on other arches when building in parallel.
-%ifarch %{ix86} s390x %{arm} aarch64
-[ -z "$RPM_BUILD_NCPUS" ] && \
- RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
-[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
-%endif
-%ifarch x86_64 ppc ppc64 ppc64le
-[ -z "$RPM_BUILD_NCPUS" ] && \
- RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
-[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
-[ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4
-[ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j8
-[ "$RPM_BUILD_NCPUS" -ge 16 ] && MOZ_SMP_FLAGS=-j16
-[ "$RPM_BUILD_NCPUS" -ge 24 ] && MOZ_SMP_FLAGS=-j24
-[ "$RPM_BUILD_NCPUS" -ge 32 ] && MOZ_SMP_FLAGS=-j32
-[ "$RPM_BUILD_NCPUS" -ge 64 ] && MOZ_SMP_FLAGS=-j64
-%endif
-echo "mk_add_options MOZ_MAKE_FLAGS=\"$MOZ_SMP_FLAGS\"" >>
.mozconfig
-%endif
echo "mk_add_options MOZ_SERVICES_SYNC=1" >> .mozconfig
echo "export STRIP=/bin/true" >> .mozconfig
@@ -947,11 +923,7 @@ create_default_langpack "zh-TW" "zh"
# Use the system hunspell dictionaries
%{__rm} -rf %{buildroot}%{mozappdir}/dictionaries
-%if 0%{?fedora} > 35
ln -s %{_datadir}/hunspell %{buildroot}%{mozappdir}/dictionaries
-%else
-ln -s %{_datadir}/myspell %{buildroot}%{mozappdir}/dictionaries
-%endif
# Enable crash reporter for Firefox application
%if %{enable_mozilla_crashreporter}
@@ -975,13 +947,6 @@ sed -i -e "s/\[Crash Reporter\]/[Crash
Reporter]\nEnabled=1/" %{buildroot}/%{moz
echo 'pref("widget.use-xdg-desktop-portal.file-picker", 1);' >>
%{buildroot}%{mozappdir}/browser/defaults/preferences/firefox-redhat-default-prefs.js
%endif
-# Since Fedora 36 the location of dictionaries has changed to /usr/share/hunspell.
-# For backward spec compatibility we set the old path in previous versions.
-# TODO remove when Fedora 35 becomes obsolete
-%if 0%{?fedora} <= 35
-sed -i -e 's|/usr/share/hunspell|/usr/share/myspell|g'
%{buildroot}%{mozappdir}/browser/defaults/preferences/firefox-redhat-default-prefs.js
-%endif
-
# Copy over run-mozilla.sh
%{__cp} build/unix/run-mozilla.sh %{buildroot}%{mozappdir}
@@ -1135,6 +1100,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null
|| :
#---------------------------------------------------------------------
%changelog
+* Mon Jan 09 2023 Kalev Lember <klember(a)redhat.com> - 108.0.1-4
+- Drop conditionals for F35
+
* Wed Dec 21 2022 Martin Stransky <stransky(a)redhat.com>- 108.0.1-3
- Added second arch build fix