rnpgp / sexpp

C++ Library for SEXP (S-expressions)
Other
7 stars 4 forks source link

ABI breakage (0.8.7 => 0.9.0) #53

Closed remicollet closed 3 months ago

remicollet commented 3 months ago

See abi-compliance-checker report https://rpms.remirepo.net/compat_reports/libsexpp/0.8.7_to_0.9.0/compat_report.html

And rnp build is failing

/builddir/build/BUILD/rnp-v0.17.1/src/librekey/key_store_g10.cpp: In member function ‘void gnupg_sexp_t::add_mpi(const std::string&, const pgp_mpi_t&)’:
/builddir/build/BUILD/rnp-v0.17.1/src/librekey/key_store_g10.cpp:342:46: error: ‘std::__cxx11::basic_string<unsigned char>’ is not a base of ‘sexp::sexp_simple_string_t’
  342 |             data.std::basic_string<uint8_t>::append(mpi.mpi + idx, len - idx);
      |                                              ^~~~~~
/builddir/build/BUILD/rnp-v0.17.1/src/librekey/key_store_g10.cpp: In function ‘bool g23_parse_seckey(pgp_key_pkt_t&, const uint8_t*, size_t, const char*)’:
/builddir/build/BUILD/rnp-v0.17.1/src/librekey/key_store_g10.cpp:809:51: error: ‘const class sexp::sexp_simple_string_t’ has no member named ‘c_str’
  809 |       id_str_pair::lookup(g10_alg_aliases, alg_bt.c_str(), PGP_PKA_NOTHING));
      |                                                   ^~~~~

So API is changed BUT soname is unchanged. (switching from 0.8.7 to 0.9.0 for the soname is not enough, as only the first number is used for compact.)

$  readelf  -a /usr/lib64/libsexpp.so | grep SONAME
 0x000000000000000e (SONAME)             Library soname: [libsexpp.so.0]
ni4 commented 3 months ago

Thanks for reporting! cc @maxirmx

maxirmx commented 3 months ago

There is no release for tag v0.9.0