Bug #14756
Updated by Nathan Cutler about 8 years ago
The following Having installed the 10.0.2 ceph package on my openSUSE Tumbleweed system, I see that many of the versioned shared libraries installed in src/erasure-code result in the following shared objects that need /usr/lib64/ceph/erasure-code do not seem to be packaged (in the main ceph package) but not versioned: have sane version numbers: <pre> libec_isa.so $ ls -1 /usr/lib64/ceph/erasure-code/ libec_jerasure.so libec_example.so libec_jerasure_generic.so libec_example.so.0 libec_jerasure_neon.so libec_example.so.0.0.0 libec_jerasure_sse3.so libec_fail_to_initialize.so libec_jerasure_sse4.so libec_fail_to_initialize.so.0 libec_lrc.so libec_fail_to_initialize.so.0.0.0 libec_shec.so libec_fail_to_register.so libec_shec_generic.so libec_fail_to_register.so.0 libec_shec_neon.so libec_fail_to_register.so.0.0.0 libec_shec_sse3.so libec_hangs.so libec_shec_sse4.so libec_hangs.so.0 </pre> The plugins in src/test/erasure-code are used in "make check" only. There is no sense in versioning or packaging them: <pre> libec_hangs.so.0.0.0 libec_example.so libec_isa.so libec_fail_to_initialize.so libec_jerasure_generic.so libec_fail_to_register.so libec_jerasure.so libec_hangs.so libec_jerasure_sse3.so libec_missing_entry_point.so libec_jerasure_sse4.so libec_missing_version.so libec_lrc.so libec_test_jerasure_generic.so ... libec_test_jerasure_neon.so ... etc. libec_test_jerasure_sse3.so </pre> Looking more closely, we see that for example libec_jerasure_sse4 has <code>-module -avoid-version</code> in its LDFLAGS, while libec_example (for example) does not: <pre> libec_test_jerasure_sse4.so $ grep -r libec_jerasure_sse4_la_LDFLAGS libec_test_shec_generic.so src/erasure-code/jerasure/Makefile.am:libec_jerasure_sse4_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared libec_test_shec_neon.so src/erasure-code/jerasure/Makefile.am:libec_jerasure_sse4_la_LDFLAGS += -export-symbols-regex '.*__erasure_code_.*' libec_test_shec_sse3.so $ grep -r libec_example_la_LDFLAGS libec_test_shec_sse4.so src/test/erasure-code/Makefile.am:libec_example_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex '.*__erasure_code_.*' </pre> So the fix would appear to be straightforward.