SWIG bindings overlinking against C library dependencies
The SWIG bindings (at least for python) are being overlinked against all of the dependencies of the upstream C library. See the example for the latest lalframe
release RPM on CIT:
[NOTE: overlinking is the case for all lalsuite libraries, lalframe
just demonstrates the issue most clearly]
$ ldd /usr/lib64/python2.7/site-packages/lalframe/_lalframe.so
linux-vdso.so.1 => (0x00007ffc94bb8000)
liblalframe.so.10 => /lib64/liblalframe.so.10 (0x00007fe8fc4cc000)
liblalsupport.so.12 => /lib64/liblalsupport.so.12 (0x00007fe8fc167000)
libz.so.1 => /lib64/libz.so.1 (0x00007fe8fbf51000)
liblal.so.14 => /lib64/liblal.so.14 (0x00007fe8fbbe1000)
libgsl.so.0 => /lib64/libgsl.so.0 (0x00007fe8fb7b8000)
libgslcblas.so.0 => /lib64/libgslcblas.so.0 (0x00007fe8fb57b000)
libfftw3.so.3 => /lib64/libfftw3.so.3 (0x00007fe8fb092000)
libfftw3f.so.3 => /lib64/libfftw3f.so.3 (0x00007fe8fab6e000)
libFrame.so.1 => /lib64/libFrame.so.1 (0x00007fe8fa8f3000)
libframecppc.so.3 => /lib64/libframecppc.so.3 (0x00007fe8fa6b0000)
libm.so.6 => /lib64/libm.so.6 (0x00007fe8fa3ae000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe8fa192000)
libc.so.6 => /lib64/libc.so.6 (0x00007fe8f9dc5000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fe8f9bc1000)
libsz.so.2 => /lib64/libsz.so.2 (0x00007fe8f99be000)
libhdf5.so.8 => /lib64/libhdf5.so.8 (0x00007fe8f93c7000)
libhdf5_hl.so.8 => /lib64/libhdf5_hl.so.8 (0x00007fe8f9193000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fe8f8f7d000)
libsatlas.so.3 => /usr/lib64/atlas/libsatlas.so.3 (0x00007fe8f8367000)
libframecpp.so.12 => /usr/lib64/libframecpp.so.12 (0x00007fe8f815d000)
libframecpp8.so.7 => /usr/lib64/libframecpp8.so.7 (0x00007fe8f7def000)
libframecpp7.so.4 => /usr/lib64/libframecpp7.so.4 (0x00007fe8f7b47000)
libframecpp6.so.8 => /usr/lib64/libframecpp6.so.8 (0x00007fe8f7822000)
libframecpp4.so.8 => /usr/lib64/libframecpp4.so.8 (0x00007fe8f752e000)
libframecpp3.so.6 => /usr/lib64/libframecpp3.so.6 (0x00007fe8f728e000)
libframecppcmn.so.9 => /usr/lib64/libframecppcmn.so.9 (0x00007fe8f7004000)
libldastoolsal.so.6 => /usr/lib64/libldastoolsal.so.6 (0x00007fe8f6d7a000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007fe8f6918000)
librt.so.1 => /usr/lib64/librt.so.1 (0x00007fe8f6710000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fe8f6409000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe8fc9ae000)
libaec.so.0 => /lib64/libaec.so.0 (0x00007fe8f6201000)
libgfortran.so.3 => /lib64/libgfortran.so.3 (0x00007fe8f5edf000)
libquadmath.so.0 => /lib64/libquadmath.so.0 (0x00007fe8f5ca3000)
I would have (naïvely) presumed that the lalframe/_lalframe.so
library would link against liblalframe.so
and not much else.
Have I misunderstood the way that SWIG bindings are linked?
Or, is there a way to disable the over-linking, especially when building the SWIG bindings separately from the C library, as is done for conda?