Problem building pyside-1.2.1 on AIX (seems to be an issue with shiboken)



  • I've built pyside-1.2.1 on Solaris, HP-UX, and RHEL. Now I'm trying to build it on AIX. The build errors with:
    @
    [ 19%] Building CXX object PySide/QtGui/CMakeFiles/QtGui.dir/PySide/QtGui/qkeyevent_wrapper.cpp.o
    cd /opt/build/pyside-qt4.8+1.2.1/PySide/QtGui && /opt/TWWfsw/gcc44/bin/g++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQtGui_EXPORTS -O2 -fPIC -I/opt/TWWfsw/libqt48/include/gcc44 -I/opt/TWWfsw/libqt48/include/gcc44/QtGui -I/opt/TWWfsw/libqt48/include/gcc44/QtCore -I/opt/build/pyside-qt4.8+1.2.1/PySide/QtGui/QtGui -I/opt/build/pyside-qt4.8+1.2.1/PySide/QtGui -I/opt/build/pyside-qt4.8+1.2.1/PySide/QtGui/PySide/QtGui -I/opt/build/pyside-qt4.8+1.2.1/PySide -I/opt/TWWfsw/libqt48/lib/python27/include/shiboken -I/opt/build/pyside-qt4.8+1.2.1/libpyside -I/opt/TWWfsw/python27/include/python2.7 -I/opt/build/pyside-qt4.8+1.2.1/PySide/QtCore/PySide/QtCore -o CMakeFiles/QtGui.dir/PySide/QtGui/qkeyevent_wrapper.cpp.o -c /opt/build/pyside-qt4.8+1.2.1/PySide/QtGui/PySide/QtGui/qkeyevent_wrapper.cpp
    /opt/build/pyside-qt4.8+1.2.1/PySide/QtGui/PySide/QtGui/qkeyevent_wrapper.cpp: In function 'PyObject* Sbk_QKeyEvent_get_autor(PyObject*, void*)':
    /opt/build/pyside-qt4.8+1.2.1/PySide/QtGui/PySide/QtGui/qkeyevent_wrapper.cpp:686: error: attempt to take address of bit-field structure member 'QKeyEvent::autor'
    /opt/build/pyside-qt4.8+1.2.1/PySide/QtGui/PySide/QtGui/qkeyevent_wrapper.cpp: In function 'int Sbk_QKeyEvent_set_autor(PyObject*, PyObject*, void*)':
    /opt/build/pyside-qt4.8+1.2.1/PySide/QtGui/PySide/QtGui/qkeyevent_wrapper.cpp:706: error: attempt to take address of bit-field structure member 'QKeyEvent::autor'
    gmake[2]: *** [PySide/QtGui/CMakeFiles/QtGui.dir/PySide/QtGui/qkeyevent_wrapper.cpp.o] Error 1
    gmake[2]: Leaving directory `/opt/build/pyside-qt4.8+1.2.1'
    @

    Looking at PySide/QtGui/PySide/QtGui/qkeyevent_wrapper.cpp, the problematic section is:
    @
    static PyObject* Sbk_QKeyEvent_get_autor(PyObject* self, void*)
    {
    ::QKeyEvent* cppSelf = 0;
    SBK_UNUSED(cppSelf)
    if (!Shiboken::Object::isValid(self))
    return 0;
    cppSelf = ((::QKeyEvent*)Shiboken::Conversions::cppPointer(SbkPySide_QtGuiTy
    pes[SBK_QKEYEVENT_IDX], (SbkObject*)self));
    PyObject* pyOut = Shiboken::Conversions::copyToPython(Shiboken::Conversions:
    :PrimitiveTypeConverter<uint>(), &cppSelf->autor);
    return pyOut;
    }
    @

    The problem is &cppSelf->autor. Taking the address of a bit-field is not allowed. Looking at this same file on Solaris, HP-UX, and Linux shows the function as:
    @
    static PyObject* Sbk_QKeyEvent_get_autor(PyObject* self, void*)
    {
    ::QKeyEvent* cppSelf = 0;
    SBK_UNUSED(cppSelf)
    if (!Shiboken::Object::isValid(self))
    return 0;
    cppSelf = ((::QKeyEvent*)Shiboken::Conversions::cppPointer(SbkPySide_QtGuiTypes[SBK_QKEYEVENT_IDX], (SbkObject*)self));
    uint cppOut_local = cppSelf->autor;
    PyObject* pyOut = Shiboken::Conversions::copyToPython(Shiboken::Conversions::PrimitiveTypeConverter<uint>(), &cppOut_local);
    return pyOut;
    }
    @

    Note the assingment of cppSelf->autor to cppOut_local. So, it seems like shiboken generated something different for !AIX platforms. Any idea why this is the case and how to get the shiboken behavior on AIX to match that on Linux?



  • Issue resolved. I posted a "patch":":http://lists.qt-project.org/pipermail/pyside/2014-April/002013.html on the pyside mailing list.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.