Hi mentors,

I am looking for some advice regarding to kazv-vodozemac-bindings[0], which I 
am packaging for the kazv Matrix client. The dependency chain is:
kazv -> libkazv -> kazv-vodozemac-bindings -> rust-vodozemac

kazv-vodozemac-bindings is a community fork of the C++ bindings for the 
vodozemac Rust crate[1], it's being actively maintained by people behind the 
kazv project.

Since Rust doesn't guarantee ABI stability, the upstream bumps SONAME every 
time there is a new version of the vodozemac crate.[2] For example, the 
current SONAME for the bindings is libvodozemac.so.0.2.1. This will change for 
every new minor version of vodozemac, and each new version will need to go 
through the NEW queue.

My options seem to be:

- Change the build system to use libvodozemac.so.0 as SONAME and monitor 
symbol changes in packaging, bump SOVERSION accordingly. This route can lead 
to many trips to the NEW queue in the foreseeable future.

- Consider kazv-vodozemac-bindings and libkazv as a whole, and statically link 
libkazv, assume libkazv is the only consumer of the C++ bindings. This can 
conflict with the policy.

Neither option looks ideal to me, and I couldn't find a good package in the 
archive to use as a precedent. Please let me know how I should proceed.

[0]: https://r.lily-is.land/the-kazv-project/vodozemac-bindings
[1]: https://crates.io/crates/vodozemac
[2]: https://r.lily-is.land/the-kazv-project/vodozemac-bindings/commit/
3a3b85bf3043ffa43bd6bc70e571b455a276e749

Thanks.
Yifei


Reply via email to