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
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org

Reply via email to