Skip to content

DMF/FTY: Fix linking of libnutscan.so etc. to NOT pull in the libraries we plan to load dynamically #2349

@jimklimov

Description

@jimklimov

Follow-up from #2275 and investigation started in its comment trail:

Also impacts nutconf as a consumer of this library.

In master-branch builds (on FreeBSD 12 agent):

$ ldd /tmp/nut/tools/nut-scanner/.libs/libnutscan.so
/tmp/nut/tools/nut-scanner/.libs/libnutscan.so:
        libutil.so.9 => /lib/libutil.so.9 (0x800679000)
        libltdl.so.7 => /usr/local/lib/libltdl.so.7 (0x800691000)
        librt.so.1 => /usr/lib/librt.so.1 (0x80069e000)
        libssl.so.11 => /usr/local/lib/libssl.so.11 (0x8006a7000)
        libcrypto.so.11 => /usr/local/lib/libcrypto.so.11 (0x801025000)
        libthr.so.3 => /lib/libthr.so.3 (0x80073d000)
        libc.so.7 => /lib/libc.so.7 (0x80024e000)

$ ldd /tmp/nut/tools/nut-scanner/.libs/nut-scanner
/tmp/nut/tools/nut-scanner/.libs/nut-scanner:
        libnutscan.so.2 => not found (0)
        libutil.so.9 => /lib/libutil.so.9 (0x80064f000)
        libltdl.so.7 => /usr/local/lib/libltdl.so.7 (0x800667000)
        librt.so.1 => /usr/lib/librt.so.1 (0x800674000)
        libssl.so.11 => /usr/local/lib/libssl.so.11 (0x80067d000)
        libcrypto.so.11 => /usr/local/lib/libcrypto.so.11 (0x800713000)
        libthr.so.3 => /lib/libthr.so.3 (0x800a05000)
        libc.so.7 => /lib/libc.so.7 (0x800a32000)

In FTY branch builds:

$ ldd tools/nut-scanner/.libs/libnutscan.so
tools/nut-scanner/.libs/libnutscan.so:
        librt.so.1 => /usr/lib/librt.so.1 (0x800679000)
        libutil.so.9 => /lib/libutil.so.9 (0x800682000)
        libnetsnmp.so.40 => /usr/local/lib/libnetsnmp.so.40 (0x80069a000)
        libltdl.so.7 => /usr/local/lib/libltdl.so.7 (0x80075a000)
        liblua-5.1.so => /usr/local/lib/liblua-5.1.so (0x800767000)
        libxml2.so.2 => /usr/local/lib/libxml2.so.2 (0x80102c000)
        libz.so.6 => /lib/libz.so.6 (0x80079e000)
        liblzma.so.5 => /usr/lib/liblzma.so.5 (0x8007ba000)
        libm.so.5 => /lib/libm.so.5 (0x8011c6000)
        libssl.so.11 => /usr/local/lib/libssl.so.11 (0x8011f8000)
        libcrypto.so.11 => /usr/local/lib/libcrypto.so.11 (0x80128e000)
        libthr.so.3 => /lib/libthr.so.3 (0x801580000)
        libc.so.7 => /lib/libc.so.7 (0x80024e000)
        libkvm.so.7 => /lib/libkvm.so.7 (0x8007e6000)
        libdevstat.so.7 => /lib/libdevstat.so.7 (0x8015ad000)
        libcrypto.so.111 => /lib/libcrypto.so.111 (0x8015b6000)
        libmd.so.6 => /lib/libmd.so.6 (0x8018a8000)
        libelf.so.2 => /lib/libelf.so.2 (0x8018c6000)

$ ldd tools/nut-scanner/.libs/nut-scanner
tools/nut-scanner/.libs/nut-scanner:
        libnutscan.so.2 => not found (0)
        librt.so.1 => /usr/lib/librt.so.1 (0x80064f000)
        libutil.so.9 => /lib/libutil.so.9 (0x800658000)
        libnetsnmp.so.40 => /usr/local/lib/libnetsnmp.so.40 (0x800670000)
        libltdl.so.7 => /usr/local/lib/libltdl.so.7 (0x800730000)
        liblua-5.1.so => /usr/local/lib/liblua-5.1.so (0x80073d000)
        libxml2.so.2 => /usr/local/lib/libxml2.so.2 (0x800774000)
        libz.so.6 => /lib/libz.so.6 (0x80090e000)
        liblzma.so.5 => /usr/lib/liblzma.so.5 (0x80092a000)
        libm.so.5 => /lib/libm.so.5 (0x800956000)
        libssl.so.11 => /usr/local/lib/libssl.so.11 (0x800988000)
        libcrypto.so.11 => /usr/local/lib/libcrypto.so.11 (0x800a1e000)
        libthr.so.3 => /lib/libthr.so.3 (0x800d10000)
        libc.so.7 => /lib/libc.so.7 (0x800d3d000)
        libkvm.so.7 => /lib/libkvm.so.7 (0x801133000)
        libdevstat.so.7 => /lib/libdevstat.so.7 (0x801146000)
        libcrypto.so.111 => /lib/libcrypto.so.111 (0x80114f000)
        libmd.so.6 => /lib/libmd.so.6 (0x801441000)
        libelf.so.2 => /lib/libelf.so.2 (0x80145f000)

I think DMF-related recipes did mention some quick and dirty approaches, so this may be among them.

Probably related to the investigated problem about mis-matched libssl/libcrypto shared objects; although per master screenshot above, it would still be a problem - just delayed to the moment of dynamic load (nut-scanner bin and lib do refer to /usr/local/lib/ versions of crypto).

Metadata

Metadata

Assignees

No one assigned

    Labels

    CIEntries related to continuous integration infrastructure (here CI = tools + scripts + recipes)DMFNUT Data/Dynamic Mapping File/Format/Functionality featureSNMPbugnut-scannernutconfNUT configuration library and toolportabilityWe want NUT to build and run everywhere possible

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions