FLAMEGPU/FLAMEGPU2-visualiser

Manylinux Compliance: remove GLU as a dependency.

ptheywood opened this issue · 0 comments

As part of FLAMEGPU/FLAMEGPU2#647 and FLAMEGPU/FLAMEGPU2#648, if we want to distribute python wheels with visusliation enabled via pypi, linux wheels need to be manylinux compliant.

We're targetting manylinux2014, as this is the oldest (i.e. most portable) choice that is sensible.

As part of this, we need to use the legacy opengl ABI, so we do not have to package gl libraries that are essentially driver specific.

I.e. we have dependencies on libOpenGL.so, libGLdispatch.so or libGLX.so (and potentially others).

CMake can be configured to prefer / use the older GL option (#77), but if a .so being loaded dynamically depends on the newer gl abi (glnvd) then it is implicilty required, breaking manylinux packaging.

So far, libGLU.so as packaged on ubuntu 20.04 (and potentially centos7) links against some of these libraries. GLU was last updated in 1998, and is essentially only useful for the fixed function pipeline. We can remove this dependency quite easily, by not providing the gluLookAt interface in NoClipCamera which is not being used anyway. The error checkign mechanism then no longer needs to call gluErrorString. Once both these are gone we can build without requiring GLU.

However on ubuntu this does not prevent ldd reporting that libGLdispatch and libGLX dependencies are still required.
Grepping the output of LDD piped into LDD, libGL.so apparently depends on libGLdispatch and libGLX, and libGLX also depends on libGLdispatch. This disagrees with my current understanding of the legacy / new GL ABI.

Centos 7's libGL.so also depends on libGLX.so and libGLdispatch.so, even though they are not in the manylinux supported dependencies, so I'm unsure if auditwheel will try to package them or not (if this is the only source of these dependencies.

  • Remove gluLookAt
  • Remove gluErrorString
  • Remove CMake handling of libGLU

Once this is done:

  • See if auditwheel/manylinux2014 will then produce viable, portable wheels.