usage: auditwheel [-h] [-V] [-v] command ...
auditwheel: error: cannot repair "./dist/createrepo_c-0.10.0-cp35-cp35m-linux_x86_64.whl" to "manylinux1_x86_64" ABI because of the presence of too-recent versioned symbols. You'll need to compile the wheel on an older toolchain.
(2) The next step was to try to build the wheel using manylinux1 but it failed because the glibs provided by Centos5 is too hold, and createrepo_c seems to require Glibc 2.16 providing the
checksum functionality (based on the build error encountered so far)
To reproduce the build error on manylinux
------------------------------------------------------------
docker pull dockcross/manylinux-x64
docker run --rm dockcross/manylinux-x64 > ~/bin/dockcross-manylinux-x64
chmod +x ~/bin/dockcross-manylinux-x64
# This will mount the current directory as /work in the docker image
~/bin/dockcross-manylinux-x64 bash
export PATH=/opt/python/cp35-cp35m/bin/:$PATH
sudo yum install -y bzip2-devel libxml2-devel xz-devel rpm-devel
pip install nose
CFLAGS=-fdiagnostics-color=always python setup.py bdist_wheel -- -DOPENSSL_ROOT_DIR:PATH=/usr/local/ssl -- -j1
In file included from ../../../src/mergerepo_c.c:42:0:
../../../src/cleanup.h: In function ‘cr_local_array_unref’:
../../../src/cleanup.h:63:1: warning: implicit declaration of function ‘g_array_unref’ [-Wimplicit-function-declaration]
CR_DEFINE_CLEANUP_FUNCTION0(GArray*, cr_local_array_unref, g_array_unref)
^
../../../src/cleanup.h: In function ‘cr_local_checksum_free’:
../../../src/cleanup.h:64:29: error: ‘GChecksum’ undeclared (first use in this function)
CR_DEFINE_CLEANUP_FUNCTION0(GChecksum*, cr_local_checksum_free, g_checksum_free)
^
Can we build a newer glibc statically on manylinux1 ?
------------------------------------------------------------------------------
I gave a try ... but the linux headers version on Centos 5 are too hold.
~/bin/dockcross-manylinux-x64 bash
cd /work
glibc_version=2.16.0
[...]
checking installed Linux kernel header files... TOO OLD!
configure: error: GNU libc requires kernel header files from
Linux 2.6.19 or later to be installed before configuring.
The kernel header files are found usually in /usr/include/asm and
/usr/include/linux; make sure these directories use files from
Linux 2.6.19 or later. This check uses <linux/version.h>, so
make sure that file was built correctly when installing the kernel header
files. To use kernel headers not from /usr/include/linux, use the
configure option --with-headers.
Will manylinux 2010 solve the problem ?
-----------------------------------------------------------
Since
the new manylinux images (manylinux2010) based on Centos6 [1][2] that
will soon be available also expect code to rely on glibc <= 2.12,
this will not address our problem.
How to move forward ?
----------------------------------
Option 1:
Update the code to comply with Centos5 requirements
Option 2:
Or we build the wheel using Centos 7. It won't be possible to upload the wheel on PyPI but we could still have them uploaded as GitHub release. This would allow user to install them doing:
To build the wheel:
Let's give a try:
docker pull dockbuild/centos7-devtoolset4-gcc5:latest
docker run --rm dockbuild/centos7-devtoolset4-gcc5 > ~/bin/dockbuild-centos7-devtoolset4-gcc5
chmod +x ~/bin/dockbuild-centos7-devtoolset4-gcc5
dockbuild-centos7-devtoolset4-gcc5 bash
sudo yum install -y bzip2-devel libxml2-devel xz-devel rpm-devel expat-devel file-devel glib2-devel rpm-devel libcurl-devel sqlite-devel zlib-devel
python -m venv ./venv
source ./venv/bin/activate
python -m pip install --upgrade pip
pip install scikit-build
pip install nose
CFLAGS=-fdiagnostics-color=always python setup.py bdist_wheel -- -DOPENSSL_ROOT_DIR:PATH=/usr/local/ssl -- -j1
Et voila,
Let me know if you have any questions,
Thanks
Jc