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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions