Project

General

Profile

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. 

Back