pypa / auditwheel

Auditing and relabeling cross-distribution Linux wheels.
Other
443 stars 145 forks source link

libuuid-7867869b.so.1.3.0: cannot open shared object file: No such file or directory #271

Open bsrdjan opened 4 years ago

bsrdjan commented 4 years ago

The manylinux2014 wheel built on quay.io/pypa/manylinux2014_x86_64 docker image, can't be imported:

ImportError: libuuid-7867869b.so.1.3.0: cannot open shared object file: No such file or directory

The original library dependencies look like this:

$ auditwheel show pynwrfc-2.0.3-cp38-cp38-linux_x86_64.whl

pynwrfc-2.0.3-cp38-cp38-linux_x86_64.whl is consistent with the
following platform tag: "linux_x86_64".

The wheel references external versioned symbols in these system-
provided shared libraries: libc.so.6 with versions {'GLIBC_2.3.4',
'GLIBC_2.4', 'GLIBC_2.2.5', 'GLIBC_2.3', 'GLIBC_2.3.2'}, libsapucum.so
with versions {'libsapucum.so'}, libsapnwrfc.so with versions
{'libsapnwrfc.so'}, libdl.so.2 with versions {'GLIBC_2.2.5'},
libpthread.so.0 with versions {'GLIBC_2.3.2', 'GLIBC_2.2.5'},
libgcc_s.so.1 with versions {'GCC_3.0'}, libuuid.so.1 with versions
{'UUID_1.0'}, librt.so.1 with versions {'GLIBC_2.2.5'}, libm.so.6 with
versions {'GLIBC_2.2.5'}, libstdc++.so.6 with versions {'GLIBCXX_3.4',
'CXXABI_1.3.1', 'CXXABI_1.3'}

The following external shared libraries are required by the wheel:
{
    "libc.so.6": "/lib64/libc-2.17.so",
    "libdl.so.2": "/lib64/libdl-2.17.so",
    "libgcc_s.so.1": "/lib64/libgcc_s-4.8.5-20150702.so.1",
    "libm.so.6": "/lib64/libm-2.17.so",
    "libpthread.so.0": "/lib64/libpthread-2.17.so",
    "librt.so.1": "/lib64/librt-2.17.so",
    "libsapnwrfc.so": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so",
    "libsapucum.so": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
    "libstdc++.so.6": "/lib64/libstdc++.so.6.0.19",
    "libuuid.so.1": "/lib64/libuuid.so.1.3.0"
}

In order to achieve the tag platform tag "manylinux2014_x86_64" the
following shared library dependencies will need to be eliminated:

libsapnwrfc.so, libsapucum.so, libuuid.so.1

In order to achieve the tag platform tag "manylinux2010_x86_64" the
following shared library dependencies will need to be eliminated:

libsapnwrfc.so, libsapucum.so, libuuid.so.1

In order to achieve the tag platform tag "manylinux1_x86_64" the
following shared library dependencies will need to be eliminated:

libsapnwrfc.so, libsapucum.so, libuuid.so.1

The auditwheel repair result looks like this:

$ auditwheel show audit/pynwrfc-2.0.3-cp38-cp38-manylinux2014_x86_64.whl

pynwrfc-2.0.3-cp38-cp38-manylinux2014_x86_64.whl is consistent with
the following platform tag: "manylinux1_x86_64".

The wheel references external versioned symbols in these system-
provided shared libraries: libc.so.6 with versions {'GLIBC_2.3',
'GLIBC_2.3.2', 'GLIBC_2.4', 'GLIBC_2.2.5', 'GLIBC_2.3.4'},
libsapucum-2461e767.so with versions {'libsapucum.so'},
libsapnwrfc-7e060996.so with versions {'libsapnwrfc.so'}, libdl.so.2
with versions {'GLIBC_2.2.5'}, libpthread.so.0 with versions
{'GLIBC_2.2.5', 'GLIBC_2.3.2'}, libgcc_s.so.1 with versions
{'GCC_3.0'}, libuuid-7867869b.so.1.3.0 with versions {'UUID_1.0'},
librt.so.1 with versions {'GLIBC_2.2.5'}, libm.so.6 with versions
{'GLIBC_2.2.5'}, libstdc++.so.6 with versions {'CXXABI_1.3.1',
'GLIBCXX_3.4', 'CXXABI_1.3'}

The following external shared libraries are required by the wheel:
{
    "libc.so.6": "/lib64/libc-2.17.so",
    "libdl.so.2": "/lib64/libdl-2.17.so",
    "libgcc_s.so.1": "/lib64/libgcc_s-4.8.5-20150702.so.1",
    "libm.so.6": "/lib64/libm-2.17.so",
    "libpthread.so.0": "/lib64/libpthread-2.17.so",
    "librt.so.1": "/lib64/librt-2.17.so",
    "libstdc++.so.6": "/lib64/libstdc++.so.6.0.19"
}

The libuuid on centos docker image:

$ ldconfig -p | grep uuid
    libuuid.so.1 (libc6,x86-64) => /lib64/libuuid.so.1
    libuuid.so (libc6,x86-64) => /lib64/libuuid.so

Any ideas how to fix this?

mayeut commented 4 years ago

Can you provide a verbose log of the auditwheel repair and auditwheel show commands please ?

abarrales commented 4 years ago

I'm stuck exactly with the same error, any idea will be really helpful

abarrales commented 4 years ago

The manylinux2014 wheel built on quay.io/pypa/manylinux2014_x86_64 docker image, can't be imported:

ImportError: libuuid-7867869b.so.1.3.0: cannot open shared object file: No such file or directory

The original library dependencies look like this:

$ auditwheel show pynwrfc-2.0.3-cp38-cp38-linux_x86_64.whl

pynwrfc-2.0.3-cp38-cp38-linux_x86_64.whl is consistent with the
following platform tag: "linux_x86_64".

The wheel references external versioned symbols in these system-
provided shared libraries: libc.so.6 with versions {'GLIBC_2.3.4',
'GLIBC_2.4', 'GLIBC_2.2.5', 'GLIBC_2.3', 'GLIBC_2.3.2'}, libsapucum.so
with versions {'libsapucum.so'}, libsapnwrfc.so with versions
{'libsapnwrfc.so'}, libdl.so.2 with versions {'GLIBC_2.2.5'},
libpthread.so.0 with versions {'GLIBC_2.3.2', 'GLIBC_2.2.5'},
libgcc_s.so.1 with versions {'GCC_3.0'}, libuuid.so.1 with versions
{'UUID_1.0'}, librt.so.1 with versions {'GLIBC_2.2.5'}, libm.so.6 with
versions {'GLIBC_2.2.5'}, libstdc++.so.6 with versions {'GLIBCXX_3.4',
'CXXABI_1.3.1', 'CXXABI_1.3'}

The following external shared libraries are required by the wheel:
{
    "libc.so.6": "/lib64/libc-2.17.so",
    "libdl.so.2": "/lib64/libdl-2.17.so",
    "libgcc_s.so.1": "/lib64/libgcc_s-4.8.5-20150702.so.1",
    "libm.so.6": "/lib64/libm-2.17.so",
    "libpthread.so.0": "/lib64/libpthread-2.17.so",
    "librt.so.1": "/lib64/librt-2.17.so",
    "libsapnwrfc.so": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so",
    "libsapucum.so": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
    "libstdc++.so.6": "/lib64/libstdc++.so.6.0.19",
    "libuuid.so.1": "/lib64/libuuid.so.1.3.0"
}

In order to achieve the tag platform tag "manylinux2014_x86_64" the
following shared library dependencies will need to be eliminated:

libsapnwrfc.so, libsapucum.so, libuuid.so.1

In order to achieve the tag platform tag "manylinux2010_x86_64" the
following shared library dependencies will need to be eliminated:

libsapnwrfc.so, libsapucum.so, libuuid.so.1

In order to achieve the tag platform tag "manylinux1_x86_64" the
following shared library dependencies will need to be eliminated:

libsapnwrfc.so, libsapucum.so, libuuid.so.1

The auditwheel repair result looks like this:

$ auditwheel show audit/pynwrfc-2.0.3-cp38-cp38-manylinux2014_x86_64.whl

pynwrfc-2.0.3-cp38-cp38-manylinux2014_x86_64.whl is consistent with
the following platform tag: "manylinux1_x86_64".

The wheel references external versioned symbols in these system-
provided shared libraries: libc.so.6 with versions {'GLIBC_2.3',
'GLIBC_2.3.2', 'GLIBC_2.4', 'GLIBC_2.2.5', 'GLIBC_2.3.4'},
libsapucum-2461e767.so with versions {'libsapucum.so'},
libsapnwrfc-7e060996.so with versions {'libsapnwrfc.so'}, libdl.so.2
with versions {'GLIBC_2.2.5'}, libpthread.so.0 with versions
{'GLIBC_2.2.5', 'GLIBC_2.3.2'}, libgcc_s.so.1 with versions
{'GCC_3.0'}, libuuid-7867869b.so.1.3.0 with versions {'UUID_1.0'},
librt.so.1 with versions {'GLIBC_2.2.5'}, libm.so.6 with versions
{'GLIBC_2.2.5'}, libstdc++.so.6 with versions {'CXXABI_1.3.1',
'GLIBCXX_3.4', 'CXXABI_1.3'}

The following external shared libraries are required by the wheel:
{
    "libc.so.6": "/lib64/libc-2.17.so",
    "libdl.so.2": "/lib64/libdl-2.17.so",
    "libgcc_s.so.1": "/lib64/libgcc_s-4.8.5-20150702.so.1",
    "libm.so.6": "/lib64/libm-2.17.so",
    "libpthread.so.0": "/lib64/libpthread-2.17.so",
    "librt.so.1": "/lib64/librt-2.17.so",
    "libstdc++.so.6": "/lib64/libstdc++.so.6.0.19"
}

The libuuid on centos docker image:

$ ldconfig -p | grep uuid
  libuuid.so.1 (libc6,x86-64) => /lib64/libuuid.so.1
  libuuid.so (libc6,x86-64) => /lib64/libuuid.so

Any ideas how to fix this?

Were you able to fix it? I'm trying to create a wheel with all the dependencies from sap nwrfcsdk, the wheel is installed succesfully however when I import pyrfc is when I get this error:

libuuid-XXXxx.so.1.3.0: cannot open shared object file: No such file or directory

I guess is something related with the internal use of libsapnwrfc.so

I'll let you know if I'm able to fix it.

bsrdjan commented 4 years ago

Please find the verbose logs. The wheel is built on ubuntu:latest and auditwheel done on quay.io/pypa/manylinux2014_x86_64 based docker container.

show

[www-admin@69bb468528a8 dist]$ auditwheel -v show pynwrfc-2.0.6-cp38-cp38-linux_x86_64.whl
DEBUG:auditwheel.wheel_abi:processing: pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so
DEBUG:auditwheel.lddtree:parse_ld_so_conf(//etc/ld.so.conf)
DEBUG:auditwheel.lddtree:  glob: //etc/ld.so.conf.d/*.conf
DEBUG:auditwheel.lddtree:  parse_ld_so_conf(//etc/ld.so.conf.d/nwrfcsdk.conf)
DEBUG:auditwheel.lddtree:linker ldpaths: {'conf': ['/usr/local/sap/nwrfcsdk/lib', '/lib', '/lib64/', '/usr/lib', '/usr/lib64'], 'env': ['/opt/rh/devtoolset-9/root/usr/lib64', '/opt/rh/devtoolset-9/root/usr/lib', '/usr/local/lib64', '/usr/local/lib'], 'interp': []}
DEBUG:auditwheel.lddtree:lddtree(pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so)
DEBUG:auditwheel.lddtree:  ldpaths[rpath]   = []
DEBUG:auditwheel.lddtree:  ldpaths[runpath] = []
DEBUG:auditwheel.lddtree:lddtree(/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libdl-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libc-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/ld-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/librt-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libpthread-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libuuid.so.1.3.0)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libstdc++.so.6.0.19)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libm-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libgcc_s-4.8.5-20150702.so.1)
DEBUG:auditwheel.lddtree:lddtree(/usr/local/sap/nwrfcsdk/lib/libsapucum.so)
DEBUG:auditwheel.wheel_abi:key libsapucum.so, value libsapucum.so
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:key libsapnwrfc.so, value libsapnwrfc.so
DEBUG:auditwheel.wheel_abi:{
    "pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so": {
        "interp": null,
        "path": "pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so",
        "realpath": "pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so",
        "needed": [
            "libsapnwrfc.so",
            "libsapucum.so",
            "libstdc++.so.6",
            "libm.so.6",
            "libgcc_s.so.1",
            "libpthread.so.0",
            "libc.so.6"
        ],
        "rpath": [],
        "runpath": [],
        "libs": {
            "libsapnwrfc.so": {
                "realpath": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so",
                "path": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so",
                "needed": [
                    "libdl.so.2",
                    "librt.so.1",
                    "libuuid.so.1",
                    "libstdc++.so.6",
                    "libm.so.6",
                    "libgcc_s.so.1",
                    "libpthread.so.0",
                    "libc.so.6"
                ]
            },
            "libdl.so.2": {
                "realpath": "/lib64/libdl-2.17.so",
                "path": "/lib64/libdl.so.2",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libc.so.6": {
                "realpath": "/lib64/libc-2.17.so",
                "path": "/lib64/libc.so.6",
                "needed": [
                    "ld-linux-x86-64.so.2"
                ]
            },
            "ld-linux-x86-64.so.2": {
                "realpath": "/lib64/ld-2.17.so",
                "path": "/lib64/ld-linux-x86-64.so.2",
                "needed": []
            },
            "librt.so.1": {
                "realpath": "/lib64/librt-2.17.so",
                "path": "/lib64/librt.so.1",
                "needed": [
                    "libpthread.so.0",
                    "libc.so.6"
                ]
            },
            "libpthread.so.0": {
                "realpath": "/lib64/libpthread-2.17.so",
                "path": "/lib64/libpthread.so.0",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libuuid.so.1": {
                "realpath": "/lib64/libuuid.so.1.3.0",
                "path": "/lib64/libuuid.so.1",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libstdc++.so.6": {
                "realpath": "/lib64/libstdc++.so.6.0.19",
                "path": "/lib64/libstdc++.so.6",
                "needed": [
                    "libm.so.6",
                    "libc.so.6",
                    "ld-linux-x86-64.so.2",
                    "libgcc_s.so.1"
                ]
            },
            "libm.so.6": {
                "realpath": "/lib64/libm-2.17.so",
                "path": "/lib64/libm.so.6",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libgcc_s.so.1": {
                "realpath": "/lib64/libgcc_s-4.8.5-20150702.so.1",
                "path": "/lib64/libgcc_s.so.1",
                "needed": [
                    "libc.so.6"
                ]
            },
            "libsapucum.so": {
                "realpath": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
                "path": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
                "needed": [
                    "libdl.so.2",
                    "librt.so.1",
                    "libstdc++.so.6",
                    "libm.so.6",
                    "libgcc_s.so.1",
                    "libpthread.so.0",
                    "libc.so.6"
                ]
            }
        }
    }
}
DEBUG:auditwheel.wheel_abi:external reference info
DEBUG:auditwheel.wheel_abi:{
    "linux_x86_64": {
        "libs": {
            "libdl.so.2": "/lib64/libdl-2.17.so",
            "libm.so.6": "/lib64/libm-2.17.so",
            "libuuid.so.1": "/lib64/libuuid.so.1.3.0",
            "libpthread.so.0": "/lib64/libpthread-2.17.so",
            "libc.so.6": "/lib64/libc-2.17.so",
            "libsapucum.so": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
            "librt.so.1": "/lib64/librt-2.17.so",
            "libgcc_s.so.1": "/lib64/libgcc_s-4.8.5-20150702.so.1",
            "libstdc++.so.6": "/lib64/libstdc++.so.6.0.19",
            "libsapnwrfc.so": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so"
        },
        "priority": 0
    },
    "manylinux1_x86_64": {
        "libs": {
            "libuuid.so.1": "/lib64/libuuid.so.1.3.0",
            "libsapucum.so": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
            "libsapnwrfc.so": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so"
        },
        "priority": 100
    },
    "manylinux2010_x86_64": {
        "libs": {
            "libuuid.so.1": "/lib64/libuuid.so.1.3.0",
            "libsapucum.so": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
            "libsapnwrfc.so": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so"
        },
        "priority": 90
    },
    "manylinux2014_x86_64": {
        "libs": {
            "libuuid.so.1": "/lib64/libuuid.so.1.3.0",
            "libsapucum.so": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
            "libsapnwrfc.so": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so"
        },
        "priority": 80
    }
}
DEBUG:auditwheel.wheel_abi:path /lib64/libuuid.so.1.3.0, key libc.so.6, value GLIBC_2.3
DEBUG:auditwheel.wheel_abi:path /lib64/libuuid.so.1.3.0, key libc.so.6, value GLIBC_2.3.4
DEBUG:auditwheel.wheel_abi:path /lib64/libuuid.so.1.3.0, key libc.so.6, value GLIBC_2.4
DEBUG:auditwheel.wheel_abi:path /lib64/libuuid.so.1.3.0, key libc.so.6, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapucum.so, key libdl.so.2, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapucum.so, key libpthread.so.0, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapucum.so, key libc.so.6, value GLIBC_2.3.4
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapucum.so, key libc.so.6, value GLIBC_2.4
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapucum.so, key libc.so.6, value GLIBC_2.3
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapucum.so, key libc.so.6, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libgcc_s.so.1, value GCC_3.0
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libuuid.so.1, value UUID_1.0
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libdl.so.2, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key librt.so.1, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libm.so.6, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libstdc++.so.6, value CXXABI_1.3.1
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libstdc++.so.6, value CXXABI_1.3
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libstdc++.so.6, value GLIBCXX_3.4
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libpthread.so.0, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libpthread.so.0, value GLIBC_2.3.2
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libc.so.6, value GLIBC_2.4
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libc.so.6, value GLIBC_2.3.2
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libc.so.6, value GLIBC_2.3.4
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libc.so.6, value GLIBC_2.3
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libc.so.6, value GLIBC_2.2.5

pynwrfc-2.0.6-cp38-cp38-linux_x86_64.whl is consistent with the
following platform tag: "linux_x86_64".

The wheel references external versioned symbols in these system-
provided shared libraries: libsapucum.so with versions
{'libsapucum.so'}, libc.so.6 with versions {'GLIBC_2.3.4',
'GLIBC_2.4', 'GLIBC_2.3.2', 'GLIBC_2.2.5', 'GLIBC_2.3'},
libsapnwrfc.so with versions {'libsapnwrfc.so'}, libdl.so.2 with
versions {'GLIBC_2.2.5'}, libpthread.so.0 with versions
{'GLIBC_2.3.2', 'GLIBC_2.2.5'}, libgcc_s.so.1 with versions
{'GCC_3.0'}, libuuid.so.1 with versions {'UUID_1.0'}, librt.so.1 with
versions {'GLIBC_2.2.5'}, libm.so.6 with versions {'GLIBC_2.2.5'},
libstdc++.so.6 with versions {'GLIBCXX_3.4', 'CXXABI_1.3',
'CXXABI_1.3.1'}

The following external shared libraries are required by the wheel:
{
    "libc.so.6": "/lib64/libc-2.17.so",
    "libdl.so.2": "/lib64/libdl-2.17.so",
    "libgcc_s.so.1": "/lib64/libgcc_s-4.8.5-20150702.so.1",
    "libm.so.6": "/lib64/libm-2.17.so",
    "libpthread.so.0": "/lib64/libpthread-2.17.so",
    "librt.so.1": "/lib64/librt-2.17.so",
    "libsapnwrfc.so": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so",
    "libsapucum.so": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
    "libstdc++.so.6": "/lib64/libstdc++.so.6.0.19",
    "libuuid.so.1": "/lib64/libuuid.so.1.3.0"
}

In order to achieve the tag platform tag "manylinux2014_x86_64" the
following shared library dependencies will need to be eliminated:

libsapnwrfc.so, libsapucum.so, libuuid.so.1

In order to achieve the tag platform tag "manylinux2010_x86_64" the
following shared library dependencies will need to be eliminated:

libsapnwrfc.so, libsapucum.so, libuuid.so.1

In order to achieve the tag platform tag "manylinux1_x86_64" the
following shared library dependencies will need to be eliminated:

libsapnwrfc.so, libsapucum.so, libuuid.so.1

repair

[www-admin@69bb468528a8 dist]$ auditwheel -v repair pynwrfc-2.0.6-cp38-cp38-linux_x86_64.whl
INFO:auditwheel.main_repair:Repairing pynwrfc-2.0.6-cp38-cp38-linux_x86_64.whl
DEBUG:auditwheel.wheel_abi:processing: pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so
DEBUG:auditwheel.lddtree:parse_ld_so_conf(//etc/ld.so.conf)
DEBUG:auditwheel.lddtree:  glob: //etc/ld.so.conf.d/*.conf
DEBUG:auditwheel.lddtree:  parse_ld_so_conf(//etc/ld.so.conf.d/nwrfcsdk.conf)
DEBUG:auditwheel.lddtree:linker ldpaths: {'conf': ['/usr/local/sap/nwrfcsdk/lib', '/lib', '/lib64/', '/usr/lib', '/usr/lib64'], 'env': ['/opt/rh/devtoolset-9/root/usr/lib64', '/opt/rh/devtoolset-9/root/usr/lib', '/usr/local/lib64', '/usr/local/lib'], 'interp': []}
DEBUG:auditwheel.lddtree:lddtree(pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so)
DEBUG:auditwheel.lddtree:  ldpaths[rpath]   = []
DEBUG:auditwheel.lddtree:  ldpaths[runpath] = []
DEBUG:auditwheel.lddtree:lddtree(/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libdl-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libc-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/ld-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/librt-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libpthread-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libuuid.so.1.3.0)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libstdc++.so.6.0.19)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libm-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libgcc_s-4.8.5-20150702.so.1)
DEBUG:auditwheel.lddtree:lddtree(/usr/local/sap/nwrfcsdk/lib/libsapucum.so)
DEBUG:auditwheel.wheel_abi:key libsapucum.so, value libsapucum.so
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:key libsapnwrfc.so, value libsapnwrfc.so
DEBUG:auditwheel.wheel_abi:{
    "pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so": {
        "interp": null,
        "path": "pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so",
        "realpath": "pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so",
        "needed": [
            "libsapnwrfc.so",
            "libsapucum.so",
            "libstdc++.so.6",
            "libm.so.6",
            "libgcc_s.so.1",
            "libpthread.so.0",
            "libc.so.6"
        ],
        "rpath": [],
        "runpath": [],
        "libs": {
            "libsapnwrfc.so": {
                "realpath": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so",
                "path": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so",
                "needed": [
                    "libdl.so.2",
                    "librt.so.1",
                    "libuuid.so.1",
                    "libstdc++.so.6",
                    "libm.so.6",
                    "libgcc_s.so.1",
                    "libpthread.so.0",
                    "libc.so.6"
                ]
            },
            "libdl.so.2": {
                "realpath": "/lib64/libdl-2.17.so",
                "path": "/lib64/libdl.so.2",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libc.so.6": {
                "realpath": "/lib64/libc-2.17.so",
                "path": "/lib64/libc.so.6",
                "needed": [
                    "ld-linux-x86-64.so.2"
                ]
            },
            "ld-linux-x86-64.so.2": {
                "realpath": "/lib64/ld-2.17.so",
                "path": "/lib64/ld-linux-x86-64.so.2",
                "needed": []
            },
            "librt.so.1": {
                "realpath": "/lib64/librt-2.17.so",
                "path": "/lib64/librt.so.1",
                "needed": [
                    "libpthread.so.0",
                    "libc.so.6"
                ]
            },
            "libpthread.so.0": {
                "realpath": "/lib64/libpthread-2.17.so",
                "path": "/lib64/libpthread.so.0",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libuuid.so.1": {
                "realpath": "/lib64/libuuid.so.1.3.0",
                "path": "/lib64/libuuid.so.1",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libstdc++.so.6": {
                "realpath": "/lib64/libstdc++.so.6.0.19",
                "path": "/lib64/libstdc++.so.6",
                "needed": [
                    "libm.so.6",
                    "libc.so.6",
                    "ld-linux-x86-64.so.2",
                    "libgcc_s.so.1"
                ]
            },
            "libm.so.6": {
                "realpath": "/lib64/libm-2.17.so",
                "path": "/lib64/libm.so.6",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libgcc_s.so.1": {
                "realpath": "/lib64/libgcc_s-4.8.5-20150702.so.1",
                "path": "/lib64/libgcc_s.so.1",
                "needed": [
                    "libc.so.6"
                ]
            },
            "libsapucum.so": {
                "realpath": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
                "path": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
                "needed": [
                    "libdl.so.2",
                    "librt.so.1",
                    "libstdc++.so.6",
                    "libm.so.6",
                    "libgcc_s.so.1",
                    "libpthread.so.0",
                    "libc.so.6"
                ]
            }
        }
    }
}
DEBUG:auditwheel.wheel_abi:external reference info
DEBUG:auditwheel.wheel_abi:{
    "linux_x86_64": {
        "libs": {
            "libm.so.6": "/lib64/libm-2.17.so",
            "libsapucum.so": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
            "libc.so.6": "/lib64/libc-2.17.so",
            "libdl.so.2": "/lib64/libdl-2.17.so",
            "librt.so.1": "/lib64/librt-2.17.so",
            "libgcc_s.so.1": "/lib64/libgcc_s-4.8.5-20150702.so.1",
            "libpthread.so.0": "/lib64/libpthread-2.17.so",
            "libstdc++.so.6": "/lib64/libstdc++.so.6.0.19",
            "libsapnwrfc.so": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so",
            "libuuid.so.1": "/lib64/libuuid.so.1.3.0"
        },
        "priority": 0
    },
    "manylinux1_x86_64": {
        "libs": {
            "libsapnwrfc.so": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so",
            "libsapucum.so": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
            "libuuid.so.1": "/lib64/libuuid.so.1.3.0"
        },
        "priority": 100
    },
    "manylinux2010_x86_64": {
        "libs": {
            "libsapnwrfc.so": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so",
            "libsapucum.so": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
            "libuuid.so.1": "/lib64/libuuid.so.1.3.0"
        },
        "priority": 90
    },
    "manylinux2014_x86_64": {
        "libs": {
            "libsapnwrfc.so": "/usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so",
            "libsapucum.so": "/usr/local/sap/nwrfcsdk/lib/libsapucum.so",
            "libuuid.so.1": "/lib64/libuuid.so.1.3.0"
        },
        "priority": 80
    }
}
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libgcc_s.so.1, value GCC_3.0
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libuuid.so.1, value UUID_1.0
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libdl.so.2, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key librt.so.1, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libm.so.6, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libstdc++.so.6, value CXXABI_1.3.1
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libstdc++.so.6, value CXXABI_1.3
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libstdc++.so.6, value GLIBCXX_3.4
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libpthread.so.0, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libpthread.so.0, value GLIBC_2.3.2
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libc.so.6, value GLIBC_2.4
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libc.so.6, value GLIBC_2.3.2
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libc.so.6, value GLIBC_2.3.4
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libc.so.6, value GLIBC_2.3
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so, key libc.so.6, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapucum.so, key libdl.so.2, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapucum.so, key libpthread.so.0, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapucum.so, key libc.so.6, value GLIBC_2.3.4
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapucum.so, key libc.so.6, value GLIBC_2.4
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapucum.so, key libc.so.6, value GLIBC_2.3
DEBUG:auditwheel.wheel_abi:path /usr/local/sap/nwrfcsdk/lib/libsapucum.so, key libc.so.6, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:path /lib64/libuuid.so.1.3.0, key libc.so.6, value GLIBC_2.3
DEBUG:auditwheel.wheel_abi:path /lib64/libuuid.so.1.3.0, key libc.so.6, value GLIBC_2.3.4
DEBUG:auditwheel.wheel_abi:path /lib64/libuuid.so.1.3.0, key libc.so.6, value GLIBC_2.4
DEBUG:auditwheel.wheel_abi:path /lib64/libuuid.so.1.3.0, key libc.so.6, value GLIBC_2.2.5
DEBUG:auditwheel.repair:Grafting: /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so -> pynwrfc.libs/libsapnwrfc-7e060996.so
DEBUG:auditwheel.repair:Grafting: /usr/local/sap/nwrfcsdk/lib/libsapucum.so -> pynwrfc.libs/libsapucum-2461e767.so
DEBUG:auditwheel.repair:Grafting: /lib64/libuuid.so.1.3.0 -> pynwrfc.libs/libuuid-506df98b.so.1.3.0
DEBUG:auditwheel.repair:Setting RPATH: pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so to "$ORIGIN/../pynwrfc.libs"
INFO:auditwheel.wheeltools:Previous filename tags: linux_x86_64
INFO:auditwheel.wheeltools:New filename tags: manylinux2014_x86_64
INFO:auditwheel.wheeltools:Previous WHEEL info tags: cp38-cp38-linux_x86_64
INFO:auditwheel.wheeltools:New WHEEL info tags: cp38-cp38-manylinux2014_x86_64
DEBUG:auditwheel.wheel_abi:processing: pynwrfc.libs/libuuid-506df98b.so.1.3.0
DEBUG:auditwheel.lddtree:lddtree(pynwrfc.libs/libuuid-506df98b.so.1.3.0)
DEBUG:auditwheel.lddtree:  ldpaths[rpath]   = []
DEBUG:auditwheel.lddtree:  ldpaths[runpath] = []
DEBUG:auditwheel.lddtree:lddtree(/lib64/libc-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/ld-2.17.so)
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.3
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.3.4
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.4
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:processing: pynwrfc.libs/libsapucum-2461e767.so
DEBUG:auditwheel.lddtree:lddtree(pynwrfc.libs/libsapucum-2461e767.so)
DEBUG:auditwheel.lddtree:  ldpaths[rpath]   = []
DEBUG:auditwheel.lddtree:  ldpaths[runpath] = []
DEBUG:auditwheel.lddtree:lddtree(/lib64/libdl-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libc-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/ld-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/librt-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libpthread-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libstdc++.so.6.0.19)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libm-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libgcc_s-4.8.5-20150702.so.1)
DEBUG:auditwheel.wheel_abi:key libdl.so.2, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:key libpthread.so.0, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.3.4
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.4
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.3
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:processing: pynwrfc.libs/libsapnwrfc-7e060996.so
DEBUG:auditwheel.lddtree:lddtree(pynwrfc.libs/libsapnwrfc-7e060996.so)
DEBUG:auditwheel.lddtree:  ldpaths[rpath]   = []
DEBUG:auditwheel.lddtree:  ldpaths[runpath] = []
DEBUG:auditwheel.lddtree:lddtree(/lib64/libdl-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libc-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/ld-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/librt-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libpthread-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libstdc++.so.6.0.19)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libm-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libgcc_s-4.8.5-20150702.so.1)
DEBUG:auditwheel.wheel_abi:key libgcc_s.so.1, value GCC_3.0
DEBUG:auditwheel.wheel_abi:key libuuid-506df98b.so.1.3.0, value UUID_1.0
DEBUG:auditwheel.wheel_abi:key libdl.so.2, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:key librt.so.1, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:key libm.so.6, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:key libstdc++.so.6, value CXXABI_1.3.1
DEBUG:auditwheel.wheel_abi:key libstdc++.so.6, value CXXABI_1.3
DEBUG:auditwheel.wheel_abi:key libstdc++.so.6, value GLIBCXX_3.4
DEBUG:auditwheel.wheel_abi:key libpthread.so.0, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:key libpthread.so.0, value GLIBC_2.3.2
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.4
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.3.2
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.3.4
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.3
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:processing: pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so
DEBUG:auditwheel.lddtree:lddtree(pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so)
DEBUG:auditwheel.lddtree:  ldpaths[rpath]   = ['/var/tmp/tmp9zk75le5/pynwrfc.libs']
DEBUG:auditwheel.lddtree:  ldpaths[runpath] = []
DEBUG:auditwheel.lddtree:lddtree(/var/tmp/tmp9zk75le5/pynwrfc.libs/libsapnwrfc-7e060996.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libdl-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libc-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/ld-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/librt-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libpthread-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/var/tmp/tmp9zk75le5/pynwrfc.libs/libuuid-506df98b.so.1.3.0)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libstdc++.so.6.0.19)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libm-2.17.so)
DEBUG:auditwheel.lddtree:lddtree(/lib64/libgcc_s-4.8.5-20150702.so.1)
DEBUG:auditwheel.lddtree:lddtree(/var/tmp/tmp9zk75le5/pynwrfc.libs/libsapucum-2461e767.so)
DEBUG:auditwheel.wheel_abi:key libsapucum-2461e767.so, value libsapucum.so
DEBUG:auditwheel.wheel_abi:key libc.so.6, value GLIBC_2.2.5
DEBUG:auditwheel.wheel_abi:key libsapnwrfc-7e060996.so, value libsapnwrfc.so
DEBUG:auditwheel.policy.external_references:RPATH FTW: libsapucum-2461e767.so
DEBUG:auditwheel.policy.external_references:RPATH FTW: libsapnwrfc-7e060996.so
DEBUG:auditwheel.policy.external_references:RPATH FTW: libuuid-506df98b.so.1.3.0
DEBUG:auditwheel.policy.external_references:RPATH FTW: libsapnwrfc-7e060996.so
DEBUG:auditwheel.policy.external_references:RPATH FTW: libsapucum-2461e767.so
DEBUG:auditwheel.policy.external_references:RPATH FTW: libuuid-506df98b.so.1.3.0
DEBUG:auditwheel.policy.external_references:RPATH FTW: libsapnwrfc-7e060996.so
DEBUG:auditwheel.policy.external_references:RPATH FTW: libsapucum-2461e767.so
DEBUG:auditwheel.policy.external_references:RPATH FTW: libuuid-506df98b.so.1.3.0
DEBUG:auditwheel.policy.external_references:RPATH FTW: libsapnwrfc-7e060996.so
DEBUG:auditwheel.policy.external_references:RPATH FTW: libsapucum-2461e767.so
DEBUG:auditwheel.policy.external_references:RPATH FTW: libuuid-506df98b.so.1.3.0
DEBUG:auditwheel.wheel_abi:{
    "pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so": {
        "interp": null,
        "path": "pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so",
        "realpath": "pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so",
        "needed": [
            "libsapnwrfc-7e060996.so",
            "libsapucum-2461e767.so",
            "libstdc++.so.6",
            "libm.so.6",
            "libgcc_s.so.1",
            "libpthread.so.0",
            "libc.so.6"
        ],
        "rpath": [
            "/var/tmp/tmp9zk75le5/pynwrfc.libs"
        ],
        "runpath": [],
        "libs": {
            "libsapnwrfc-7e060996.so": {
                "realpath": "/var/tmp/tmp9zk75le5/pynwrfc.libs/libsapnwrfc-7e060996.so",
                "path": "/var/tmp/tmp9zk75le5/pynwrfc.libs/libsapnwrfc-7e060996.so",
                "needed": [
                    "libdl.so.2",
                    "librt.so.1",
                    "libuuid-506df98b.so.1.3.0",
                    "libstdc++.so.6",
                    "libm.so.6",
                    "libgcc_s.so.1",
                    "libpthread.so.0",
                    "libc.so.6"
                ]
            },
            "libdl.so.2": {
                "realpath": "/lib64/libdl-2.17.so",
                "path": "/lib64/libdl.so.2",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libc.so.6": {
                "realpath": "/lib64/libc-2.17.so",
                "path": "/lib64/libc.so.6",
                "needed": [
                    "ld-linux-x86-64.so.2"
                ]
            },
            "ld-linux-x86-64.so.2": {
                "realpath": "/lib64/ld-2.17.so",
                "path": "/lib64/ld-linux-x86-64.so.2",
                "needed": []
            },
            "librt.so.1": {
                "realpath": "/lib64/librt-2.17.so",
                "path": "/lib64/librt.so.1",
                "needed": [
                    "libpthread.so.0",
                    "libc.so.6"
                ]
            },
            "libpthread.so.0": {
                "realpath": "/lib64/libpthread-2.17.so",
                "path": "/lib64/libpthread.so.0",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libuuid-506df98b.so.1.3.0": {
                "realpath": "/var/tmp/tmp9zk75le5/pynwrfc.libs/libuuid-506df98b.so.1.3.0",
                "path": "/var/tmp/tmp9zk75le5/pynwrfc.libs/libuuid-506df98b.so.1.3.0",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libstdc++.so.6": {
                "realpath": "/lib64/libstdc++.so.6.0.19",
                "path": "/lib64/libstdc++.so.6",
                "needed": [
                    "libm.so.6",
                    "libc.so.6",
                    "ld-linux-x86-64.so.2",
                    "libgcc_s.so.1"
                ]
            },
            "libm.so.6": {
                "realpath": "/lib64/libm-2.17.so",
                "path": "/lib64/libm.so.6",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libgcc_s.so.1": {
                "realpath": "/lib64/libgcc_s-4.8.5-20150702.so.1",
                "path": "/lib64/libgcc_s.so.1",
                "needed": [
                    "libc.so.6"
                ]
            },
            "libsapucum-2461e767.so": {
                "realpath": "/var/tmp/tmp9zk75le5/pynwrfc.libs/libsapucum-2461e767.so",
                "path": "/var/tmp/tmp9zk75le5/pynwrfc.libs/libsapucum-2461e767.so",
                "needed": [
                    "libdl.so.2",
                    "librt.so.1",
                    "libstdc++.so.6",
                    "libm.so.6",
                    "libgcc_s.so.1",
                    "libpthread.so.0",
                    "libc.so.6"
                ]
            }
        }
    }
}
DEBUG:auditwheel.wheel_abi:external reference info
DEBUG:auditwheel.wheel_abi:{
    "linux_x86_64": {
        "libs": {
            "libm.so.6": "/lib64/libm-2.17.so",
            "libc.so.6": "/lib64/libc-2.17.so",
            "libdl.so.2": "/lib64/libdl-2.17.so",
            "librt.so.1": "/lib64/librt-2.17.so",
            "libgcc_s.so.1": "/lib64/libgcc_s-4.8.5-20150702.so.1",
            "libpthread.so.0": "/lib64/libpthread-2.17.so",
            "libstdc++.so.6": "/lib64/libstdc++.so.6.0.19"
        },
        "priority": 0
    },
    "manylinux1_x86_64": {
        "libs": {},
        "priority": 100
    },
    "manylinux2010_x86_64": {
        "libs": {},
        "priority": 90
    },
    "manylinux2014_x86_64": {
        "libs": {},
        "priority": 80
    }
}
INFO:auditwheel.main_repair:Wheel is eligible for a higher priority tag. You requested manylinux2014_x86_64 but I have found this wheel is eligible for manylinux1_x86_64.
DEBUG:auditwheel.repair:Grafting: /usr/local/sap/nwrfcsdk/lib/libsapnwrfc.so -> pynwrfc.libs/libsapnwrfc-7e060996.so
DEBUG:auditwheel.repair:Grafting: /usr/local/sap/nwrfcsdk/lib/libsapucum.so -> pynwrfc.libs/libsapucum-2461e767.so
DEBUG:auditwheel.repair:Grafting: /lib64/libuuid.so.1.3.0 -> pynwrfc.libs/libuuid-506df98b.so.1.3.0
DEBUG:auditwheel.repair:Setting RPATH: pyrfc/pyrfc.cpython-38-x86_64-linux-gnu.so to "$ORIGIN/../pynwrfc.libs"
INFO:auditwheel.wheeltools:Previous filename tags: linux_x86_64
INFO:auditwheel.wheeltools:New filename tags: manylinux1_x86_64
INFO:auditwheel.wheeltools:Previous WHEEL info tags: cp38-cp38-linux_x86_64
INFO:auditwheel.wheeltools:New WHEEL info tags: cp38-cp38-manylinux1_x86_64
INFO:auditwheel.main_repair:
Fixed-up wheel written to /home/www-admin/src/NG-APPS/PyRFC/dist/wheelhouse/pynwrfc-2.0.6-cp38-cp38-manylinux1_x86_64.whl

The universal wheel installed on ubuntu:latest, shows following import error:

----> 1 from pyrfc import *

~/.pyenv/versions/3.8.2/envs/py382/lib/python3.8/site-packages/pyrfc/__init__.py in <module>
     37 )
     38
---> 39 from .pyrfc import (
     40     get_nwrfclib_version,
     41     Connection,

ImportError: libuuid-506df98b.so.1.3.0: cannot open shared object file: No such file or directory

The ldconfig on ubuntu:latest shows:

$ ldconfig -p | grep uuid
    libuuid.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libuuid.so.1

and on quay.io/pypa/manylinux2014_x86_64

ldconfig -p | grep uuid
    libuuid.so.1 (libc6,x86-64) => /lib64/libuuid.so.1
    libuuid.so (libc6,x86-64) => /lib64/libuuid.so
bsrdjan commented 4 years ago

Also noticed that pip uninstall of manylinux wheel shows:

$ pip uninstall pynwrfc
Found existing installation: pynwrfc 2.0.6
Uninstalling pynwrfc-2.0.6:
  Would remove:
    /home/www-admin/.pyenv/versions/3.8.2/envs/py382/lib/python3.8/site-packages/pynwrfc-2.0.6.dist-info/*
    /home/www-admin/.pyenv/versions/3.8.2/envs/py382/lib/python3.8/site-packages/pynwrfc.libs/libsapnwrfc-7e060996.so
    /home/www-admin/.pyenv/versions/3.8.2/envs/py382/lib/python3.8/site-packages/pynwrfc.libs/libsapucum-2461e767.so
    /home/www-admin/.pyenv/versions/3.8.2/envs/py382/lib/python3.8/site-packages/pynwrfc.libs/libuuid-506df98b.so.1.3.0
    /home/www-admin/.pyenv/versions/3.8.2/envs/py382/lib/python3.8/site-packages/pyrfc/*
Proceed (y/n)? y
  Successfully uninstalled pynwrfc-2.0.6

and uninstall of the standard wheel:

$ pip uninstall pynwrfc
Found existing installation: pynwrfc 2.0.6
Uninstalling pynwrfc-2.0.6:
  Would remove:
    /home/www-admin/.pyenv/versions/3.8.2/envs/py382/lib/python3.8/site-packages/pynwrfc-2.0.6.dist-info/*
    /home/www-admin/.pyenv/versions/3.8.2/envs/py382/lib/python3.8/site-packages/pyrfc/*
Proceed (y/n)? y
  Successfully uninstalled pynwrfc-2.0.6

The libsapnwrfc, libsapucum and libuuid are packed into universal wheel package, I assume as dependencies, so that the package can work on "any" Linux?

That makes another problem for pynwrfc package because libsap* libs must not be distributed inside the manylinux package. These libs must be separately acquired via SAP approved channel and installed on a target Linux systems as prerequisites. The manylinux should be shipped without SAP libs. Is that possible and how? Why is libuuid copied and can it be avoided, because that is also considered as a prerequisite for pynwrfc package ?

abarrales commented 4 years ago

Hey bsrdjan

I was able to workaround the error, instead of use auditwheel to repair and found the libraries for pyrfc I used patchelf manually to add and updates the rpath for pyrfc.cpython-36m-x86_64-linux-gnu.so, but just libsapnwrfc and libsapucum without libuuid, however you right pynwrfc must be downloaded only in an authorized way and not be distribuited as wheel or package but you can do it for internal use, in my case I'm testing it for Python Shell in AWS Glue, I can package PyRFC and deploy as .whl library with Glue Jobs, getting an ETL Serverless Solution with the benefits of a Managed Service such a Glue.

In regard your last question about why is copied as requisite for pynwrfc, My best guess is because auditwheel seach all linked libraries and in any way libuuid end as a linked and needed library for PyRFC.

I haven't tested connection yet (just import PyRFC library without errors) and I need to test more PyRFC functionality, I'll let you know.