[vtkusers] AppImage packaging: GLEW could not be initialized

Elvis Stansvik elvis.stansvik at orexplore.com
Mon Jul 11 16:14:53 EDT 2016


2016-07-11 22:06 GMT+02:00 Ken Martin <ken.martin at kitware.com>:

> glew failing to initialize typically means that opengl has not been
> initialized, specifically by creating an opengl context. e.g. the
> this->ContextId is 0. Such as around calls to
>
> glXCreateContextAttribsARB
>
> in vtkXOpenGLRenderWindow.cxx.
>

Ah, thanks for the pointers. I'll dig around.


>
>
> FWIW I do not believe we support the Intel HD3000 on Linux for OpenGL2.
> You would need either mesa with software rendering, a more recent intel
> CPU, or a dedicated graphics card and driver.
>

Hm, but the application runs fine if it's built on the machine itself. I
only have this problem with the AppImage (so I think it has something to do
with how I build/package it as such). It's a Thinkpad X220 (Sandybridge)
with HD 3000 graphics, running 11.2.2 and the 2.99.917+668+gc28e62f version
of the intel driver.

When I run it like this (built on the target laptop), the VTK 7.0.0 I use
is configured with

  for lib in EXPAT FREETYPE JPEG PNG TIFF ZLIB LIBXML2 OGGTHEORA TWISTED
ZOPE SIX AUTOBAHN MPI4PY JSONCPP GLEW GL2PS; do
    cmake_system_flags+="-DVTK_USE_SYSTEM_${lib}:BOOL=ON "
  done

cmake \
    -Wno-dev \
    -DCMAKE_SKIP_RPATH=ON \
    -DBUILD_SHARED_LIBS:BOOL=ON \
    -DCMAKE_INSTALL_PREFIX:FILEPATH=/usr \
    -DBUILD_DOCUMENTATION:BOOL=ON \
    -DDOCUMENTATION_HTML_HELP:BOOL=ON \
    -DDOCUMENTATION_HTML_TARZ:BOOL=ON \
    -DBUILD_EXAMPLES:BOOL=ON \
    -DVTK_USE_FFMPEG_ENCODER:BOOL=ON \
    -DVTK_BUILD_ALL_MODULES:BOOL=ON \
    -DVTK_USE_LARGE_DATA:BOOL=ON \
    -DVTK_QT_VERSION:STRING="5" \
    -DVTK_WRAP_JAVA:BOOL=ON \
    -DVTK_WRAP_PYTHON:BOOL=ON \
    -DVTK_WRAP_TCL:BOOL=ON \
    -DCMAKE_CXX_FLAGS="-D__STDC_CONSTANT_MACROS" \
    -DVTK_CUSTOM_LIBRARY_SUFFIX="" \
    -DVTK_INSTALL_INCLUDE_DIR:PATH=include/vtk \
    -DVTK_INSTALL_TCL_DIR=/usr/lib/tcl${_tkver}/vtk/ \
    -DVTK_PYTHON_VERSION=3 \
    -DPYTHON_EXECUTABLE=/usr/bin/python3 \
    -DPYTHON_INCLUDE_DIR=/usr/include/python3.5m \
    -DPYTHON_LIBRARY=/usr/lib/libpython3.5m.so \
    -DVTK_USE_SYSTEM_HDF5=OFF \
    ${cmake_system_flags} \
    -DCMAKE_BUILD_TYPE=Release \
    "${srcdir}/VTK-$pkgver" \
    -GNinja

and so uses the OpenGL2 backend.

But you're saying this shouldn't really work?

Elvis


>
> Ken
>
>
>
>
> On Mon, Jul 11, 2016 at 3:54 PM, Elvis Stansvik <
> elvis.stansvik at orexplore.com> wrote:
>
>> I now have a minimal example I can share:
>>
>>     https://drive.google.com/open?id=0B1a2u6qVxaL7S2d3OF9uR3Q2amc
>>
>> This is an AppImage (hello.appimage), built just the way I build my
>> application. It shows a sphere in a QVTKWidget. The download is 62 MB since
>> the VTK bundled in the image includes debugging symbols.
>>
>> It would be great if other people could download and execute the image on
>> their distros, to see if it runs. I've tested it only on Kubuntu 16.04
>> (where it works) and Arch Linux (where it crashes like described in
>> previous mails).
>>
>> Specifically it would be _very_ interesting if someone with
>>
>> 1. Arch Linux, or
>> 2. a somewhat old Intel graphics chipset, or (even better)
>> 3. both of the above,
>>
>> could try running it, and see if they can reproduce my crash (failure to
>> initialize GLEW).
>>
>> I'm attaching the sources and scripts (hello.tar.gz) from which I built
>> this example. If you want to build it yourself, just type "make" in the
>> extracted directory. All you need is Docker and Make, everything else is
>> taken care of inside a CentOS 6 Docker container.
>>
>> Many thanks in advance.
>>
>> Elvis
>>
>> 2016-07-11 17:27 GMT+02:00 Elvis Stansvik <elvis.stansvik at orexplore.com>:
>>
>>> Hi all,
>>>
>>> In exploring different deployment options, I'm now trying to create an
>>> AppImage of a VTK+Qt application. For those who don't know, AppImage is a
>>> packaging format where the application, including (almost) all of its
>>> dependencies are put into a self-extracting ISO image called an AppImage.
>>>
>>> Doing this takes quite a bit of manual work, but if you do things
>>> correctly and build the image on a good base system (I'm using CentOS 6),
>>> the image should run on a multitude of distros.
>>>
>>> I've had some success: The resulting image runs on e.g. Ubuntu Xenial.
>>>
>>> I'm now trying it on my Arch Linux laptop (not a common/easy target for
>>> AppImages, but I'd like to make it work since I run it personally), and get:
>>>
>>> ERROR: In /tmp/VTK-7.0.0/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx,
>>> line 533
>>> vtkXOpenGLRenderWindow (0x1e48140): GLEW could not be initialized.
>>>
>>> This is due to a glewInit() call failing during initialization of the
>>> render window, and I've debugged it to the underlying call to
>>> glGetString(GL_VERSION) in VTK's forked GLEW library returning NULL.
>>>
>>> Does anyone have an idea why this might happen? The VTK I'm using here
>>> is configured as follows:
>>>
>>> cmake3 \
>>>     -DCMAKE_INSTALL_PREFIX=/usr \
>>>     -DVTK_Group_Qt=ON \
>>>     -DVTK_QT_VERSION=5 \
>>>     -DVTK_Group_Imaging=ON \
>>>     -DVTK_Group_Views=ON \
>>>     -DVTK_Group_MPI=OFF \
>>>     -DVTK_Group_Tk=OFF \
>>>     -DVTK_Group_Web=OFF \
>>>     -DBUILD_TESTING=OFF \
>>>     -DVTK_USE_SYSTEM_LIBRARIES=ON \
>>>     -DVTK_USE_SYSTEM_LIBPROJ4=OFF \
>>>     -DCMAKE_BUILD_TYPE=Debug \
>>>     ..
>>>
>>> And it uses the OpenGL2 backend.
>>>
>>> It was built inside a CentOS 6 Docker container on a Kubuntu 16.04 host
>>> with HD 4400 Intel graphics adapter. The target system is an older laptop
>>> with up-to-date Arch Linux and a weaker HD 3000 Intel graphics adapter.
>>>
>>> Now, packaging apps that use OpenGL is a bit tricky, because you can't
>>> bundle e.g. libX11, libGL and some other libraries that are dependant on
>>> the user's graphics adapter/environment.
>>>
>>> The libraries that I've chosen to _not_ bundle are:
>>>
>>>     libz.so.1
>>>     libm.so.6
>>>     libSM.so.6
>>>     libICE.so.6
>>>     libX11.so.6
>>>     libXext.so.6
>>>     libXt.so.6
>>>     libstdc++.so.6
>>>     libgcc_s.so.1
>>>     libc.so.6
>>>     libpthread.so.0
>>>     librt.so.1
>>>     libGL.so.1
>>>     libdl.so.2
>>>     libuuid.so.1
>>>     libxcb.so.1
>>>     libxcb-dri3.so.0
>>>     libxcb-present.so.0
>>>     libxcb-randr.so.0
>>>     libxcb-xfixes.so.0
>>>     libxcb-render.so.0
>>>     libxcb-shape.so.0
>>>     libxcb-sync.so.1
>>>     libxshmfence.so.1
>>>     libglapi.so.0
>>>     libXdamage.so.1
>>>     libXfixes.so.3
>>>     libX11-xcb.so.1
>>>     libxcb-glx.so.0
>>>     libxcb-dri2.so.0
>>>     libXxf86vm.so.1
>>>     libdrm.so.2
>>>     libXau.so.6
>>>     libXdmcp.so.6
>>>
>>> This may be a little too liberal, and it could be that I should be
>>> bundling some of these. But it seems to work fine since the AppImage runs
>>> without problem on Kubuntu 16.04.
>>>
>>> The application also runs fine if I build VTK and the application
>>> "normally" on the Arch host and run it (using OpenGL2 backend), so the
>>> graphics adapter should be capable enough. It's just when I try to run the
>>> CentOS 6-built AppImage on the Arch host that it fails.
>>>
>>> The application essentially just creates a QVTKWidget and renders a
>>> volume into its rendering window.
>>>
>>> I saw that one (perhaps likely?) reason for glGetString(GL_VERSION)
>>> returning NULL is that initialization of the GL context failed (or wasn't
>>> fully done yet). If this is the case, does anyone know where I can debug
>>> this further in VTK? Where is the OpenGL context in VTK set up when using
>>> QVTKWidget + OpenGL2 backend?
>>>
>>> Finally: Has anyone else tried packaging VTK applications as AppImages?
>>>
>>> I know ParaView is provided as a prebuilt Linux binary with VTK bundled,
>>> so I can imagine the ParaView folks has ran into some issues like this?
>>>
>>> Thanks in advance for any advice.
>>>
>>> Elvis
>>>
>>
>>
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the VTK FAQ at:
>> http://www.vtk.org/Wiki/VTK_FAQ
>>
>> Search the list archives at: http://markmail.org/search/?q=vtkusers
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/vtkusers
>>
>>
>
>
> --
> Ken Martin PhD
> Chairman & CFO
> Kitware Inc.
> 28 Corporate Drive
> Clifton Park NY 12065
> 518 371 3971
>
> This communication, including all attachments, contains confidential and
> legally privileged information, and it is intended only for the use of the
> addressee.  Access to this email by anyone else is unauthorized. If you are
> not the intended recipient, any disclosure, copying, distribution or any
> action taken in reliance on it is prohibited and may be unlawful. If you
> received this communication in error please notify us immediately and
> destroy the original message.  Thank you.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160711/8c31b71f/attachment.html>


More information about the vtkusers mailing list