Hello,

I'm a developer with the MacPorts package management system.

When built with scons 2.3, the libserf dynamic library on macOS has 
current_version and compatibility_version information recorded in it, as it 
should:

$ otool -L opt/local/lib/libserf-1.dylib | head -n 2
opt/local/lib/libserf-1.dylib:
        /opt/local/lib/libserf-1.dylib (compatibility version 1.3.4, current 
version 1.3.4)

When built with scons 2.4.1 or later, it does not:

$ otool -L opt/local/lib/libserf-1.dylib | head -n 2
opt/local/lib/libserf-1.dylib:
        /opt/local/lib/libserf-1.dylib (compatibility version 0.0.0, current 
version 0.0.0)

We were quite surprised to discover this had occurred, after we rebuilt libserf 
due to an openssl upgrade, coincidentally after scons had been updated. 
Everything else that used libserf then broke, complaining that it was trying to 
load an older version of the library than it had been built with.

It is mentioned in the scons change log that InstallVersionedLib, which serf 
uses, doesn't honor SHLIBVERSION anymore:

https://github.com/SConsProject/scons/blob/rel_2.4.1/src/CHANGES.txt#L39

I have a fiery passionate hatred for scons (and refer you to the "Please 
consider dropping scons" and "I now officially declare myself completely beaten 
by scons" threads, and also invite you to ponder the notion that the developers 
of scons thought it acceptable to break backward compatibility in this manner 
in a bugfix release) and don't wish to try to figure out how to fix this. Do 
you have any ideas?

Here is the MacPorts bug report:

https://trac.macports.org/ticket/50854


Reply via email to