Skip to content

Output of auditwheel show is confusing #675

@vladh

Description

@vladh

If I run auditwheel show on my wheel I get the following:

python_wheel-0.1.0-cp313-cp313-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.4', 'GLIBC_2.2.5', 'GLIBC_2.32', 'GLIBC_ABI_DT_RELR',
'GLIBC_2.3', 'GLIBC_2.34', 'GLIBC_2.38', 'GLIBC_2.11', 'GLIBC_2.14',
'GLIBC_2.28', 'GLIBC_2.33', 'GLIBC_2.3.4'}, libgcc_s.so.1 with
versions {'GCC_3.0', 'GCC_3.3.1'}, libstdc++.so.6 with versions
{'GLIBCXX_3.4', 'CXXABI_1.3.9', 'GLIBCXX_3.4.29', 'CXXABI_1.3.2',
'GLIBCXX_3.4.18', 'CXXABI_1.3', 'CXXABI_1.3.15', 'GLIBCXX_3.4.21',
'CXXABI_1.3.3', 'CXXABI_1.3.13', 'GLIBCXX_3.4.20', 'CXXABI_1.3.5'},
libz.so.1 with versions {'ZLIB_1.2.3.4'}, libm.so.6 with versions
{'GLIBC_2.29', 'GLIBC_2.2.5'}, libpng16.so.16 with versions
{'PNG16_0'}

This constrains the platform tag to "manylinux_2_39_x86_64". In order
to achieve a more compatible tag, you would need to recompile a new
wheel from source on a system with earlier versions of these
libraries, such as a recent manylinux image.

If I run auditwheel lddtree on my extension module, I get the following:

Output of auditwheel lddtree
INFO:auditwheel.main_lddtree:{
    "interpreter": null,
    "libc": "<Libc.GLIBC: 'glibc'>",
    "path": "_core.cpython-313-x86_64-linux-gnu.so",
    "realpath": "_core.cpython-313-x86_64-linux-gnu.so",
    "platform": {
        "_elf_osabi": "ELFOSABI_SYSV",
        "_elf_class": 64,
        "_elf_little_endian": true,
        "_elf_machine": "EM_X86_64",
        "_base_arch": "<Architecture.x86_64: 'x86_64'>",
        "_ext_arch": null,
        "_error_msg": null
    },
    "needed": [
        "libfreetype.so.6",
        "libstdc++.so.6",
        "libm.so.6",
        "libgcc_s.so.1",
        "libc.so.6"
    ],
    "rpath": [],
    "runpath": [],
    "libraries": {
        "libfreetype.so.6": {
            "soname": "libfreetype.so.6",
            "path": "/lib/libfreetype.so.6",
            "realpath": "/lib/libfreetype.so.6.20.4",
            "platform": {
                "_elf_osabi": "ELFOSABI_SYSV",
                "_elf_class": 64,
                "_elf_little_endian": true,
                "_elf_machine": "EM_X86_64",
                "_base_arch": "<Architecture.x86_64: 'x86_64'>",
                "_ext_arch": null,
                "_error_msg": null
            },
            "needed": [
                "libz.so.1",
                "libbz2.so.1.0",
                "libpng16.so.16",
                "libbrotlidec.so.1",
                "libc.so.6"
            ]
        },
        "libz.so.1": {
            "soname": "libz.so.1",
            "path": "/lib/libz.so.1",
            "realpath": "/lib/libz.so.1.3.1",
            "platform": {
                "_elf_osabi": "ELFOSABI_SYSV",
                "_elf_class": 64,
                "_elf_little_endian": true,
                "_elf_machine": "EM_X86_64",
                "_base_arch": "<Architecture.x86_64: 'x86_64'>",
                "_ext_arch": null,
                "_error_msg": null
            },
            "needed": [
                "libc.so.6"
            ]
        },
        "libc.so.6": {
            "soname": "libc.so.6",
            "path": "/lib/libc.so.6",
            "realpath": "/lib/libc.so.6",
            "platform": {
                "_elf_osabi": "ELFOSABI_LINUX",
                "_elf_class": 64,
                "_elf_little_endian": true,
                "_elf_machine": "EM_X86_64",
                "_base_arch": "<Architecture.x86_64: 'x86_64'>",
                "_ext_arch": null,
                "_error_msg": null
            },
            "needed": [
                "ld-linux-x86-64.so.2"
            ]
        },
        "ld-linux-x86-64.so.2": {
            "soname": "ld-linux-x86-64.so.2",
            "path": "/lib/ld-linux-x86-64.so.2",
            "realpath": "/lib/ld-linux-x86-64.so.2",
            "platform": {
                "_elf_osabi": "ELFOSABI_LINUX",
                "_elf_class": 64,
                "_elf_little_endian": true,
                "_elf_machine": "EM_X86_64",
                "_base_arch": "<Architecture.x86_64: 'x86_64'>",
                "_ext_arch": null,
                "_error_msg": null
            },
            "needed": []
        },
        "libbz2.so.1.0": {
            "soname": "libbz2.so.1.0",
            "path": "/lib/libbz2.so.1.0",
            "realpath": "/lib/libbz2.so.1.0.8",
            "platform": {
                "_elf_osabi": "ELFOSABI_SYSV",
                "_elf_class": 64,
                "_elf_little_endian": true,
                "_elf_machine": "EM_X86_64",
                "_base_arch": "<Architecture.x86_64: 'x86_64'>",
                "_ext_arch": null,
                "_error_msg": null
            },
            "needed": [
                "libc.so.6"
            ]
        },
        "libpng16.so.16": {
            "soname": "libpng16.so.16",
            "path": "/lib/libpng16.so.16",
            "realpath": "/lib/libpng16.so.16.54.0",
            "platform": {
                "_elf_osabi": "ELFOSABI_SYSV",
                "_elf_class": 64,
                "_elf_little_endian": true,
                "_elf_machine": "EM_X86_64",
                "_base_arch": "<Architecture.x86_64: 'x86_64'>",
                "_ext_arch": null,
                "_error_msg": null
            },
            "needed": [
                "libz.so.1",
                "libm.so.6",
                "libc.so.6"
            ]
        },
        "libm.so.6": {
            "soname": "libm.so.6",
            "path": "/lib/libm.so.6",
            "realpath": "/lib/libm.so.6",
            "platform": {
                "_elf_osabi": "ELFOSABI_LINUX",
                "_elf_class": 64,
                "_elf_little_endian": true,
                "_elf_machine": "EM_X86_64",
                "_base_arch": "<Architecture.x86_64: 'x86_64'>",
                "_ext_arch": null,
                "_error_msg": null
            },
            "needed": [
                "libc.so.6",
                "ld-linux-x86-64.so.2"
            ]
        },
        "libbrotlidec.so.1": {
            "soname": "libbrotlidec.so.1",
            "path": "/lib/libbrotlidec.so.1",
            "realpath": "/lib/libbrotlidec.so.1.2.0",
            "platform": {
                "_elf_osabi": "ELFOSABI_SYSV",
                "_elf_class": 64,
                "_elf_little_endian": true,
                "_elf_machine": "EM_X86_64",
                "_base_arch": "<Architecture.x86_64: 'x86_64'>",
                "_ext_arch": null,
                "_error_msg": null
            },
            "needed": [
                "libbrotlicommon.so.1",
                "libc.so.6"
            ]
        },
        "libbrotlicommon.so.1": {
            "soname": "libbrotlicommon.so.1",
            "path": "/lib/libbrotlicommon.so.1",
            "realpath": "/lib/libbrotlicommon.so.1.2.0",
            "platform": {
                "_elf_osabi": "ELFOSABI_SYSV",
                "_elf_class": 64,
                "_elf_little_endian": true,
                "_elf_machine": "EM_X86_64",
                "_base_arch": "<Architecture.x86_64: 'x86_64'>",
                "_ext_arch": null,
                "_error_msg": null
            },
            "needed": [
                "libc.so.6"
            ]
        },
        "libstdc++.so.6": {
            "soname": "libstdc++.so.6",
            "path": "/lib/libstdc++.so.6",
            "realpath": "/lib/libstdc++.so.6.0.34",
            "platform": {
                "_elf_osabi": "ELFOSABI_LINUX",
                "_elf_class": 64,
                "_elf_little_endian": true,
                "_elf_machine": "EM_X86_64",
                "_base_arch": "<Architecture.x86_64: 'x86_64'>",
                "_ext_arch": null,
                "_error_msg": null
            },
            "needed": [
                "libm.so.6",
                "libc.so.6",
                "ld-linux-x86-64.so.2",
                "libgcc_s.so.1"
            ]
        },
        "libgcc_s.so.1": {
            "soname": "libgcc_s.so.1",
            "path": "/lib/libgcc_s.so.1",
            "realpath": "/lib/libgcc_s.so.1",
            "platform": {
                "_elf_osabi": "ELFOSABI_SYSV",
                "_elf_class": 64,
                "_elf_little_endian": true,
                "_elf_machine": "EM_X86_64",
                "_base_arch": "<Architecture.x86_64: 'x86_64'>",
                "_ext_arch": null,
                "_error_msg": null
            },
            "needed": [
                "libc.so.6",
                "ld-linux-x86-64.so.2"
            ]
        }
    }
}

The output of auditwheel lddtree includes libfreetype.so.6. The output of auditwheel show does not. I would expect both outputs to include libfreetype.so.6. I think this is confusing. Maybe I'm misunderstanding something! But I still think this interface could be more intuitive for users.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions