Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

error: cannot repair "pynemo-0.0.0.dev0-cp311-cp311-linux_x86_64.whl" to "manylinux_2_28_x86_64" ABI because of the presence of too-recent versioned symbols. You'll need to compile the wheel on an older toolchain. #516

Open
mcleantom opened this issue Nov 6, 2024 · 0 comments

Comments

@mcleantom
Copy link

mcleantom commented Nov 6, 2024

I am trying to make my package both windows and linux compatible, the pyproject.toml for the package is:

[build-system]
requires = [
    "scikit-build-core",
    "pybind11"
]
build-backend = "scikit_build_core.build"

[project]
name = "pynemo"
version = "0.0.0dev0"
description = "Python bindings for nemo"
readme = "README.md"
authors = [
    { name = "Tom McLean",  email = "[email protected]" }
]
dependencies = [
  "fastapi",
  "click"
]

requires-python = ">=3.11"
classifiers = [
  "Development Status :: 4 - Beta",
  "License :: OSI Approved :: MIT License",
  "Programming Language :: Python :: 3 :: Only",
  "Programming Language :: Python :: 3.11",
  "Programming Language :: Python :: 3.12",
]

[tool.scikit-build]
cmake.verbose = true
logging.level = "DEBUG"
cmake.args = [
    "-DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake",
    "-DVCPKG_INSTALLED_DIR=../vcpkg_installed",
    "-DNEMO_BUILD_PYTHON_EXTENSION=ON",
    "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
]
backport.find-python = "0"

[tool.pytest.ini_options]
minversion = "6.0"
addopts = ["-ra", "--showlocals", "--strict-markers", "--strict-config"]
xfail_strict = true
log_cli_level = "INFO"
filterwarnings = [
  "error",
]
testpaths = ["tests"]

[tool.cibuildwheel]
build = "cp*"
skip = ["cp*-musllinux*", "pp*"]
archs = ["x86_64", "AMD64", "arm64"]
manylinux-x86_64-image = "manylinux_2_28"
manylinux-i686-image = "manylinux_2_28"
manylinux-aarch64-image = "manylinux_2_28"
manylinux-ppc64le-image = "manylinux_2_28"
manylinux-s390x-image = "manylinux_2_28"
manylinux-pypy_x86_64-image = "manylinux_2_28"
manylinux-pypy_i686-image = "manylinux_2_28"
manylinux-pypy_aarch64-image = "manylinux_2_28"

[tool.cibuildwheel.linux]
before-all = '''
rm -rf vcpkg
rm -rf vcpkg_installed
yum -y install curl zip unzip tar autoconf automake libtool pkg-config perl-open python3.11-pip
python3.11 -m pip install jinja2
for python in /opt/python/*/bin/python3*; do
    if [ -x "$python" ]; then
        echo "Using Python: $python"
        $python -m pip install jinja2
    fi
done
ln -sf /usr/bin/python3.11 /usr/bin/python3
git clone https://github.com/microsoft/vcpkg.git
./vcpkg/bootstrap-vcpkg.sh
./vcpkg/vcpkg install
'''
archs = ['x86_64']

[tool.cibuildwheel.windows]
archs = ['AMD64']

I can create the wheel but when it gets to auditwheel repair it says:

auditwheel: error: cannot repair "pynemo-0.0.0.dev0-cp311-cp311-linux_x86_64.whl" to "manylinux_2_28_x86_64" ABI because of the presence of too-recent versioned symbols. You'll need to compile the wheel on an older toolchain.

I couldnt post the full debug logs as it was too long, but using auditwheel symbols I am getting

pynemo/_core.cpython-311-x86_64-linux-gnu.so is manylinux_2_28 compliant.
pynemo/ld-2.28.so is manylinux_2_28 compliant.
pynemo/ld-linux-x86-64.so.2 is manylinux_2_28 compliant.
pynemo/libc-2.28.so is manylinux_2_28 compliant.
pynemo/libc.so.6 is manylinux_2_28 compliant.
pynemo/libdl-2.28.so is not manylinux_2_28 compliant because it links the following forbidden libraries:
libc.so.6       offending symbols: _dl_signal_error@@GLIBC_PRIVATE, _dl_vsym@@GLIBC_PRIVATE, _dl_addr@@GLIBC_PRIVATE, _dl_sym@@GLIBC_PRIVATE, _dl_rtld_di_serinfo@@GLIBC_PRIVATE
pynemo/libdl.so.2 is not manylinux_2_28 compliant because it links the following forbidden libraries:
libc.so.6       offending symbols: _dl_signal_error@@GLIBC_PRIVATE, _dl_vsym@@GLIBC_PRIVATE, _dl_addr@@GLIBC_PRIVATE, _dl_sym@@GLIBC_PRIVATE, _dl_rtld_di_serinfo@@GLIBC_PRIVATE
pynemo/libgcc_s-8-20210514.so.1 is manylinux_2_28 compliant.
pynemo/libgcc_s.so.1 is manylinux_2_28 compliant.
pynemo/libm-2.28.so is not manylinux_2_28 compliant because it links the following forbidden libraries:
libc.so.6       offending versions: GLIBC_PRIVATE
pynemo/libm.so.6 is not manylinux_2_28 compliant because it links the following forbidden libraries:
libc.so.6       offending versions: GLIBC_PRIVATE
pynemo/libpthread-2.28.so is not manylinux_2_28 compliant because it links the following forbidden libraries:
libc.so.6       offending symbols: __libc_siglongjmp@@GLIBC_PRIVATE, __tsearch@@GLIBC_PRIVATE, __getrlimit@@GLIBC_PRIVATE, __libc_dlclose@@GLIBC_PRIVATE, __libc_fatal@@GLIBC_PRIVATE, __sigtimedwait@@GLIBC_PRIVATE, __mmap@@GLIBC_PRIVATE, __libc_system@@GLIBC_PRIVATE, __munmap@@GLIBC_PRIVATE, __libc_fork@@GLIBC_PRIVATE, _IO_enable_locks@@GLIBC_PRIVATE, __write_nocancel@@GLIBC_PRIVATE, _dl_deallocate_tls@@GLIBC_PRIVATE, __call_tls_dtors@@GLIBC_PRIVATE, __libc_thread_freeres@@GLIBC_PRIVATE, __mprotect@@GLIBC_PRIVATE, __clock_gettime@@GLIBC_PRIVATE, __libc_fcntl64@@GLIBC_PRIVATE, __nanosleep_nocancel@@GLIBC_PRIVATE, __libc_current_sigrtmax_private@@GLIBC_PRIVATE, __tdelete@@GLIBC_PRIVATE, __libc_dlopen_mode@@GLIBC_PRIVATE, __read_nocancel@@GLIBC_PRIVATE, _dl_make_stack_executable@@GLIBC_PRIVATE, __libc_pthread_init@@GLIBC_PRIVATE, __ctype_init@@GLIBC_PRIVATE, __libc_dlsym@@GLIBC_PRIVATE, __tfind@@GLIBC_PRIVATE, __open64_nocancel@@GLIBC_PRIVATE, __libc_current_sigrtmin_private@@GLIBC_PRIVATE, __madvise@@GLIBC_PRIVATE, __pause_nocancel@@GLIBC_PRIVATE, __mktemp@@GLIBC_PRIVATE, __twalk@@GLIBC_PRIVATE, _dl_allocate_tls@@GLIBC_PRIVATE, __tunable_get_val@@GLIBC_PRIVATE, _dl_get_tls_static_info@@GLIBC_PRIVATE, __libc_alloca_cutoff@@GLIBC_PRIVATE, _dl_allocate_tls_init@@GLIBC_PRIVATE, __close_nocancel@@GLIBC_PRIVATE, __libc_allocate_rtsig_private@@GLIBC_PRIVATE, __libc_longjmp@@GLIBC_PRIVATE
pynemo/libpthread.so.0 is not manylinux_2_28 compliant because it links the following forbidden libraries:
libc.so.6       offending symbols: __libc_siglongjmp@@GLIBC_PRIVATE, __tsearch@@GLIBC_PRIVATE, __getrlimit@@GLIBC_PRIVATE, __libc_dlclose@@GLIBC_PRIVATE, __libc_fatal@@GLIBC_PRIVATE, __sigtimedwait@@GLIBC_PRIVATE, __mmap@@GLIBC_PRIVATE, __libc_system@@GLIBC_PRIVATE, __munmap@@GLIBC_PRIVATE, __libc_fork@@GLIBC_PRIVATE, _IO_enable_locks@@GLIBC_PRIVATE, __write_nocancel@@GLIBC_PRIVATE, _dl_deallocate_tls@@GLIBC_PRIVATE, __call_tls_dtors@@GLIBC_PRIVATE, __libc_thread_freeres@@GLIBC_PRIVATE, __mprotect@@GLIBC_PRIVATE, __clock_gettime@@GLIBC_PRIVATE, __libc_fcntl64@@GLIBC_PRIVATE, __nanosleep_nocancel@@GLIBC_PRIVATE, __libc_current_sigrtmax_private@@GLIBC_PRIVATE, __tdelete@@GLIBC_PRIVATE, __libc_dlopen_mode@@GLIBC_PRIVATE, __read_nocancel@@GLIBC_PRIVATE, _dl_make_stack_executable@@GLIBC_PRIVATE, __libc_pthread_init@@GLIBC_PRIVATE, __ctype_init@@GLIBC_PRIVATE, __libc_dlsym@@GLIBC_PRIVATE, __tfind@@GLIBC_PRIVATE, __open64_nocancel@@GLIBC_PRIVATE, __libc_current_sigrtmin_private@@GLIBC_PRIVATE, __madvise@@GLIBC_PRIVATE, __pause_nocancel@@GLIBC_PRIVATE, __mktemp@@GLIBC_PRIVATE, __twalk@@GLIBC_PRIVATE, _dl_allocate_tls@@GLIBC_PRIVATE, __tunable_get_val@@GLIBC_PRIVATE, _dl_get_tls_static_info@@GLIBC_PRIVATE, __libc_alloca_cutoff@@GLIBC_PRIVATE, _dl_allocate_tls_init@@GLIBC_PRIVATE, __close_nocancel@@GLIBC_PRIVATE, __libc_allocate_rtsig_private@@GLIBC_PRIVATE, __libc_longjmp@@GLIBC_PRIVATE
pynemo/librt-2.28.so is not manylinux_2_28 compliant because it links the following forbidden libraries:
libc.so.6       offending symbols: __recv@@GLIBC_PRIVATE, __libc_pwrite@@GLIBC_PRIVATE, __libc_fatal@@GLIBC_PRIVATE, __libc_pread@@GLIBC_PRIVATE, __pthread_barrier_init@@GLIBC_PRIVATE, __pthread_unwind@@GLIBC_PRIVATE, __pthread_get_minstack@@GLIBC_PRIVATE, __libc_dlopen_mode@@GLIBC_PRIVATE, __pthread_barrier_wait@@GLIBC_PRIVATE, __libc_dlsym@@GLIBC_PRIVATE, __socket@@GLIBC_PRIVATE, __pthread_attr_copy@@GLIBC_PRIVATE, __shm_directory@@GLIBC_PRIVATE, __fortify_fail@@GLIBC_PRIVATE, __close_nocancel@@GLIBC_PRIVATE
libpthread.so.0 offending symbols: __recv@@GLIBC_PRIVATE, __libc_pwrite@@GLIBC_PRIVATE, __libc_fatal@@GLIBC_PRIVATE, __libc_pread@@GLIBC_PRIVATE, __pthread_barrier_init@@GLIBC_PRIVATE, __pthread_unwind@@GLIBC_PRIVATE, __pthread_get_minstack@@GLIBC_PRIVATE, __libc_dlopen_mode@@GLIBC_PRIVATE, __pthread_barrier_wait@@GLIBC_PRIVATE, __libc_dlsym@@GLIBC_PRIVATE, __socket@@GLIBC_PRIVATE, __pthread_attr_copy@@GLIBC_PRIVATE, __shm_directory@@GLIBC_PRIVATE, __fortify_fail@@GLIBC_PRIVATE, __close_nocancel@@GLIBC_PRIVATE
pynemo/librt.so.1 is not manylinux_2_28 compliant because it links the following forbidden libraries:
libpthread.so.0 offending symbols: __recv@@GLIBC_PRIVATE, __libc_pwrite@@GLIBC_PRIVATE, __libc_fatal@@GLIBC_PRIVATE, __libc_pread@@GLIBC_PRIVATE, __pthread_barrier_init@@GLIBC_PRIVATE, __pthread_unwind@@GLIBC_PRIVATE, __pthread_get_minstack@@GLIBC_PRIVATE, __libc_dlopen_mode@@GLIBC_PRIVATE, __pthread_barrier_wait@@GLIBC_PRIVATE, __libc_dlsym@@GLIBC_PRIVATE, __socket@@GLIBC_PRIVATE, __pthread_attr_copy@@GLIBC_PRIVATE, __shm_directory@@GLIBC_PRIVATE, __fortify_fail@@GLIBC_PRIVATE, __close_nocancel@@GLIBC_PRIVATE
libc.so.6       offending symbols: __recv@@GLIBC_PRIVATE, __libc_pwrite@@GLIBC_PRIVATE, __libc_fatal@@GLIBC_PRIVATE, __libc_pread@@GLIBC_PRIVATE, __pthread_barrier_init@@GLIBC_PRIVATE, __pthread_unwind@@GLIBC_PRIVATE, __pthread_get_minstack@@GLIBC_PRIVATE, __libc_dlopen_mode@@GLIBC_PRIVATE, __pthread_barrier_wait@@GLIBC_PRIVATE, __libc_dlsym@@GLIBC_PRIVATE, __socket@@GLIBC_PRIVATE, __pthread_attr_copy@@GLIBC_PRIVATE, __shm_directory@@GLIBC_PRIVATE, __fortify_fail@@GLIBC_PRIVATE, __close_nocancel@@GLIBC_PRIVATE
pynemo/libstdc++.so.6 is manylinux_2_28 compliant.
pynemo/libstdc++.so.6.0.25 is manylinux_2_28 compliant.

And the first bit of the output of the full logs:

DEBUG:auditwheel.wheel_abi:full_elftree:
{
    "pynemo/_core.cpython-311-x86_64-linux-gnu.so": {
        "interp": null,
        "path": "pynemo/_core.cpython-311-x86_64-linux-gnu.so",
        "realpath": "pynemo/_core.cpython-311-x86_64-linux-gnu.so",
        "needed": [
            "libpthread.so.0",
            "librt.so.1",
            "libdl.so.2",
            "libstdc++.so.6",
            "libm.so.6",
            "libgcc_s.so.1",
            "libc.so.6",
            "ld-linux-x86-64.so.2"
        ],
        "rpath": [],
        "runpath": [],
        "libs": {
            "libpthread.so.0": {
                "realpath": "/lib64/libpthread-2.28.so",
                "path": "/lib64/libpthread.so.0",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libc.so.6": {
                "realpath": "/lib64/libc-2.28.so",
                "path": "/lib64/libc.so.6",
                "needed": [
                    "ld-linux-x86-64.so.2"
                ]
            },
            "ld-linux-x86-64.so.2": {
                "realpath": "/lib64/ld-2.28.so",
                "path": "/lib64/ld-linux-x86-64.so.2",
                "needed": []
            },
            "librt.so.1": {
                "realpath": "/lib64/librt-2.28.so",
                "path": "/lib64/librt.so.1",
                "needed": [
                    "libpthread.so.0",
                    "libc.so.6"
                ]
            },
            "libdl.so.2": {
                "realpath": "/lib64/libdl-2.28.so",
                "path": "/lib64/libdl.so.2",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libstdc++.so.6": {
                "realpath": "/lib64/libstdc++.so.6.0.25",
                "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.28.so",
                "path": "/lib64/libm.so.6",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libgcc_s.so.1": {
                "realpath": "/lib64/libgcc_s-8-20210514.so.1",
                "path": "/lib64/libgcc_s.so.1",
                "needed": [
                    "libc.so.6"
                ]
            }
        }
    },
    "pynemo/ld-2.28.so": {
        "interp": null,
        "path": "pynemo/ld-2.28.so",
        "realpath": "pynemo/ld-2.28.so",
        "needed": [],
        "rpath": [],
        "runpath": [],
        "libs": {}
    },
    "pynemo/libc-2.28.so": {
        "interp": "/lib64/ld-linux-x86-64.so.2",
        "path": "pynemo/libc-2.28.so",
        "realpath": "pynemo/libc-2.28.so",
        "needed": [
            "ld-linux-x86-64.so.2"
        ],
        "rpath": [],
        "runpath": [],
        "libs": {
            "ld-linux-x86-64.so.2": {
                "path": "/lib64/ld-linux-x86-64.so.2",
                "realpath": "/lib64/ld-2.28.so",
                "needed": []
            }
        }
    },
    "pynemo/libdl-2.28.so": {
        "interp": null,
        "path": "pynemo/libdl-2.28.so",
        "realpath": "pynemo/libdl-2.28.so",
        "needed": [
            "libc.so.6",
            "ld-linux-x86-64.so.2"
        ],
        "rpath": [],
        "runpath": [],
        "libs": {
            "libc.so.6": {
                "realpath": "/lib64/libc-2.28.so",
                "path": "/lib64/libc.so.6",
                "needed": [
                    "ld-linux-x86-64.so.2"
                ]
            },
            "ld-linux-x86-64.so.2": {
                "realpath": "/lib64/ld-2.28.so",
                "path": "/lib64/ld-linux-x86-64.so.2",
                "needed": []
            }
        }
    },
    "pynemo/libgcc_s-8-20210514.so.1": {
        "interp": null,
        "path": "pynemo/libgcc_s-8-20210514.so.1",
        "realpath": "pynemo/libgcc_s-8-20210514.so.1",
        "needed": [
            "libc.so.6"
        ],
        "rpath": [],
        "runpath": [],
        "libs": {
            "libc.so.6": {
                "realpath": "/lib64/libc-2.28.so",
                "path": "/lib64/libc.so.6",
                "needed": [
                    "ld-linux-x86-64.so.2"
                ]
            },
            "ld-linux-x86-64.so.2": {
                "realpath": "/lib64/ld-2.28.so",
                "path": "/lib64/ld-linux-x86-64.so.2",
                "needed": []
            }
        }
    },
    "pynemo/libm-2.28.so": {
        "interp": null,
        "path": "pynemo/libm-2.28.so",
        "realpath": "pynemo/libm-2.28.so",
        "needed": [
            "libc.so.6",
            "ld-linux-x86-64.so.2"
        ],
        "rpath": [],
        "runpath": [],
        "libs": {
            "libc.so.6": {
                "realpath": "/lib64/libc-2.28.so",
                "path": "/lib64/libc.so.6",
                "needed": [
                    "ld-linux-x86-64.so.2"
                ]
            },
            "ld-linux-x86-64.so.2": {
                "realpath": "/lib64/ld-2.28.so",
                "path": "/lib64/ld-linux-x86-64.so.2",
                "needed": []
            }
        }
    },
    "pynemo/libpthread-2.28.so": {
        "interp": "/lib64/ld-linux-x86-64.so.2",
        "path": "pynemo/libpthread-2.28.so",
        "realpath": "pynemo/libpthread-2.28.so",
        "needed": [
            "libc.so.6",
            "ld-linux-x86-64.so.2"
        ],
        "rpath": [],
        "runpath": [],
        "libs": {
            "ld-linux-x86-64.so.2": {
                "path": "/lib64/ld-linux-x86-64.so.2",
                "realpath": "/lib64/ld-2.28.so",
                "needed": []
            },
            "libc.so.6": {
                "realpath": "/lib64/libc-2.28.so",
                "path": "/lib64/libc.so.6",
                "needed": [
                    "ld-linux-x86-64.so.2"
                ]
            }
        }
    },
    "pynemo/librt-2.28.so": {
        "interp": null,
        "path": "pynemo/librt-2.28.so",
        "realpath": "pynemo/librt-2.28.so",
        "needed": [
            "libpthread.so.0",
            "libc.so.6"
        ],
        "rpath": [],
        "runpath": [],
        "libs": {
            "libpthread.so.0": {
                "realpath": "/lib64/libpthread-2.28.so",
                "path": "/lib64/libpthread.so.0",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libc.so.6": {
                "realpath": "/lib64/libc-2.28.so",
                "path": "/lib64/libc.so.6",
                "needed": [
                    "ld-linux-x86-64.so.2"
                ]
            },
            "ld-linux-x86-64.so.2": {
                "realpath": "/lib64/ld-2.28.so",
                "path": "/lib64/ld-linux-x86-64.so.2",
                "needed": []
            }
        }
    },
    "pynemo/libstdc++.so.6.0.25": {
        "interp": null,
        "path": "pynemo/libstdc++.so.6.0.25",
        "realpath": "pynemo/libstdc++.so.6.0.25",
        "needed": [
            "libm.so.6",
            "libc.so.6",
            "ld-linux-x86-64.so.2",
            "libgcc_s.so.1"
        ],
        "rpath": [],
        "runpath": [],
        "libs": {
            "libm.so.6": {
                "realpath": "/lib64/libm-2.28.so",
                "path": "/lib64/libm.so.6",
                "needed": [
                    "libc.so.6",
                    "ld-linux-x86-64.so.2"
                ]
            },
            "libc.so.6": {
                "realpath": "/lib64/libc-2.28.so",
                "path": "/lib64/libc.so.6",
                "needed": [
                    "ld-linux-x86-64.so.2"
                ]
            },
            "ld-linux-x86-64.so.2": {
                "realpath": "/lib64/ld-2.28.so",
                "path": "/lib64/ld-linux-x86-64.so.2",
                "needed": []
            },
            "libgcc_s.so.1": {
                "realpath": "/lib64/libgcc_s-8-20210514.so.1",
                "path": "/lib64/libgcc_s.so.1",
                "needed": [
                    "libc.so.6"
                ]
            }
        }
    }
}

I am not sure why I am getting a too-recent versioned error as I am building my library inside a manylinux_2_28 container. How can I fix this issue? Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant