Dear Fedora,
it looks like the libfastjson-0.99.7 update that was submitted as an
update for all branches contained an unannounced ABI break:
$ abipkgdiff --d1 libfastjson-debuginfo-0.99.6-1.fc26.x86_64.rpm --d2
libfastjson-debuginfo-0.99.7-1.fc26.x86_64.rpm --devel1
libfastjson-devel-0.99.6-1.fc26.x86_64.rpm --devel2
libfastjson-devel-0.99.7-1.fc26.x86_64.rpm libfastjson-0.99.6-1.fc26.x86_64.rpm
libfastjson-0.99.7-1.fc26.x86_64.rpm
================ changes of 'libfastjson.so.4.1.0'===============
Functions changes summary: 3 Removed, 1 Changed (57 filtered out), 4 Added functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
3 Removed functions:
'function void fjson_object_free_userdata(fjson_object*, void*)'
{fjson_object_free_userdata}
'function void fjson_object_set_serializer(fjson_object*, void*)'
{fjson_object_set_serializer}
'function int fjson_object_userdata_to_json_string(fjson_object*, int, int)'
{fjson_object_userdata_to_json_string}
4 Added functions:
'function void fjson_global_do_case_sensitive_comparison(const int)'
{fjson_global_do_case_sensitive_comparison}
'function size_t fjson_object_dump_buffered(fjson_object*, int, char*, size_t,
void*)' {fjson_object_dump_buffered}
'function size_t fjson_object_size(fjson_object*)' {fjson_object_size}
'function size_t fjson_object_size_ext(fjson_object*, int)'
{fjson_object_size_ext}
1 function with some indirect sub-type change:
[C]'function int fjson_object_array_add(fjson_object*, fjson_object*)' at
json_object.c:1001:1 has some indirect sub-type changes:
parameter 1 of type 'fjson_object*' has sub-type changes:
in pointed to type 'struct fjson_object' at json_object_private.h:51:1:
type size changed from 2176 to 2048 bits
1 data member deletion:
'void* fjson_object::_userdata', at offset 2112 (in bits) at
json_object_private.h:74:1
1 data member change:
type of 'data fjson_object::o' changed:
1 data member changes (1 filtered):
type of 'double data::c_double' changed:
entity changed from 'double' to 'struct
__anonymous_struct__' at json_object_private.h:60:1
type size changed from 64 to 128 bits
================ end of changes of 'libfastjson.so.4.1.0'===============
This breaks, for example, rsyslog-8.30.0-3, which was compiled against
libfastjson-0.99.7, but didn't go out together with it, so when I ran
dnf update, the set contained only new rsyslog, which, when run with
libfastjson-0.99.6 (same SONAME!) simply dies:
# rsyslogd -n
rsyslogd: symbol lookup error: rsyslogd: undefined symbol:
fjson_global_do_case_sensitive_comparison
Dear maintainers, please use abipkgdiff when doing library updates.
Upstreams do break ABI without bumping SONAME sometimes.
Regards,
Dominik
--
Fedora
https://getfedora.org | RPMFusion
http://rpmfusion.org
There should be a science of discontent. People need hard times and
oppression to develop psychic muscles.
-- from "Collected Sayings of Muad'Dib" by the Princess Irulan