Description
The manylinux1
images are starting show their age and therefore make the maintenance of the Linux wheels quite troublesome. OpenCV 3.4.10 and 4.3.0 cannot be built on manylinux1
images due to too old glibc:
/io/opencv/modules/core/src/parallel.cpp:943:56: error: ‘CPU_COUNT’ was not declared in this scope
unsigned cpu_count_cpu_set = CPU_COUNT(&cpu_set);
In practice this means that the manylinux1
(CentOS 5) needs to be updated to manylinux2010
(CentOS 6) or manylinux2014
(CentOS 7). Considering that the CentOS 6 will be deprecated later this year it's better move straight to manylinux2014
. The manylinux2014
tag support is not yet fully rolled out (pypa/manylinux#338). However, there are only some minor issues remaining and they will get solved likely during the next few months.
This upgrade will most likely have positive effects to the OpenCV performance (see: #287). Additionally, external dependencies, such as Qt, can be updated to more recent versions.
What needs to be done:
- Prepare new custom Dockerfiles which extend from
manylinux2014
similarly to the currentmanylinux1
Dockerfiles- Install Qt 5 (preferably via package manager, currently Qt 4.8.7 is built from sources)
- Check if Cmake is present. If not, it could be probably set as a Python dependency similarly to
numpy
- Check if custom OpenSSL build is needed
- Build latest FFmpeg from sources
- Check if other often requested 3rd party dependencies can be enabled easily by installing them via package manager (must check license terms) Edit: this needs more work, needs to be done later when first working versions of the new wheels have been released
- Clean up other stuff from the Dockerfiles
- Check
setup.py
custom rules and patches- Enable IPP if possible
- Remove other custom rules which are not needed
- Check if OpenEXR patch is still needed