Make qtcint dies in v5.28.00.patches

VIVE L’AMOUR!
I am trying to get the newest “v5.28.00.patches” working on an Ubuntu 10.04.1 LTS (i686, gcc 4.4.3).
I configured it enabling all possible options:

Enabled support for asimage, astiff, builtin_afterimage, builtin_ftgl, builtin_freetype, builtin_glew, builtin_pcre, builtin_zlib, cintex, clarens, editline, exceptions, explicitlink, fftw3, gviz, gdml, genvector, gsl_shared, krb5, ldap, mathmore, memstat, minuit2, mysql, opengl, peac, python, qt, qtgsi, reflex, roofit, ruby, rpath, shadowpw, shared, soversion, ssl, table, tmva, unuran, x11, xft, xml, xrootd.

“make qtcint” died … it seems that there are some problems with “long double” …

/…/build/v5.28.00.patches/build/unix/makecintdll.sh linux C++ qtcint qt
(…)
cint/cint/main/cint_tmp -K -w1 -zqtcint -ncint/cint/lib/qt/G__qtcint.cxx -D__MAKECINT__ -DG__MAKECINT -c-1 -Z0 -Icint/cint/lib/qt -p -DQT_GUI_LIB -DQT_CORE_LIB -DQT_DLL -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -I/mkspecs/default -I. -I/usr/include/qt4 -I/usr/include/qt4/Qt -I/usr/include/qt4/Qt3Support -I/usr/include/qt4/QtAssistant -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtDBus -I/usr/include/qt4/QtDesigner -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtHelp -I/usr/include/qt4/QtMultimedia -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4/QtScript -I/usr/include/qt4/QtScriptTools -I/usr/include/qt4/QtSql -I/usr/include/qt4/QtSvg -I/usr/include/qt4/QtTest -I/usr/include/qt4/QtUiTools -I/usr/include/qt4/QtWebKit -I/usr/include/qt4/QtXml -I/usr/include/qt4/QtXmlPatterns qtcint.h
Error: Symbol longdouble is not defined in current scope /usr/include/qt4/QtCore/qglobal.h:2086:
!!!Removing cint/cint/lib/qt/G__qtcint.cxx cint/cint/lib/qt/G__qtcint.h !!!
(…)
g++: cint/cint/lib/qt/G__qtcint.o: No such file or directory
mv: cannot stat `cint/cint/include/qtcint.so’: No such file or directory

… lines 2068 - 2087 of the file “/usr/include/qt4/QtCore/qglobal.h” …

/*
QTypeInfo primitive specializations
*/
Q_DECLARE_TYPEINFO(bool, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(char, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(signed char, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(uchar, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(short, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(ushort, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(int, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(uint, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(long, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(ulong, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(qint64, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(quint64, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(float, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(double, Q_PRIMITIVE_TYPE);
#ifndef Q_OS_DARWIN
Q_DECLARE_TYPEINFO(long double, Q_PRIMITIVE_TYPE);
#endif

I am stupid. No?
Pepe Le Pew.

Hi,

I’ll have a look tomorrow. Thanks for your report!

Cheers, Axel.

Hi,

I was able to reproduce the same issue in the trunk. I have uploaded a fix there; if it doesn’t break any of the dependent projects (ROOT seems to be happy with my change) then I will upload it to 5-28-00-patches probably during the weekend. I.e. you can try the trunk for now, or wait until <= Monday for v5-28-00-patches.

Cheers, Axel.

Hi Axel,
“qtcint” relies on the customized CPP macros provided via ./cint/lib/qt/qtcint.h to hide the “too complex and useless on CINT level” Qt constructions. Hope it helps.

Hi Valeri,

I know, I’m the one maintaining it :slight_smile: It works now up to Qt 4.7.

The relevant patches have also arrived in v5-28-00-patches.

Cheers, Axel.

:smiley:

It (i.e. “qtcint.so”) can be compiled and linked now. =D>
There are some suspicious warnings, though … <img src="/uploads/default/original/2X/8/84c2fe9464a4066c00e1bd5978e913e7869cbb07.gif" width=“22” height=“16” alt=":-"" title=“Whistle”/>

(…)
cint/cint/main/cint_tmp -K -w1 -zqtcint -ncint/cint/lib/qt/G__qtcint.cxx … qtcint.h
/usr/include/qt4/QtCore/qstring.h:598:
Note: Bit-field not accessible from interpreter
/usr/include/qt4/QtCore/qobject.h:100:
Warning: Pure virtual destructor may cause problem. Define as ‘virtual ~QObjectData() { }’
/usr/include/qt4/QtGui/qtextdocument.h:98:
Warning: Pure virtual destructor may cause problem. Define as ‘virtual ~QAbstractUndoItem() { }’
(…)

It’s on Ubuntu 10.04.1 LTS, i686, gcc 4.4.3, QT 4.6.2.

[quote=“Pepe Le Pew”]There are some suspicious warnings, though … <img src="/uploads/default/original/2X/8/84c2fe9464a4066c00e1bd5978e913e7869cbb07.gif" width=“22” height=“16” alt=":-"" title=“Whistle”/>
(…)
cint/cint/main/cint_tmp -K -w1 -zqtcint -ncint/cint/lib/qt/G__qtcint.cxx … qtcint.h
/usr/include/qt4/QtCore/qstring.h:598:
Note: Bit-field not accessible from interpreter
…Warning: Pure virtual destructor may cause problem. Define as ‘virtual ~QObjectData() { }’
/usr/include/qt4/QtGui/qtextdocument.h:98:
Warning: Pure virtual destructor may cause problem. Define as ‘virtual ~QAbstractUndoItem() { }’
(…)
[/quote]The qtcint doesn’t expose 100% of the Qt publics interfaces to the interpreter. CINT is the C++ “interpreter”. It is no C++ compiler anyway.
You may ignore the messages the Note: Bit-field not accessible from interpreteralike. Many GUI functions can not be created from the CINT by many reasons. The full-fledged Qt-based ROOT application requires ACLiC or full-fledged compilation-linking-shared-lib-creating/dynamic loading etc.
For example, it is useless to create the CINT dictionary for the abstarct class because one can not subclass it with CINT anyway.

[quote=“fine”][quote=“Pepe Le Pew”]There are some suspicious warnings, though … <img src="/uploads/default/original/2X/8/84c2fe9464a4066c00e1bd5978e913e7869cbb07.gif" width=“22” height=“16” alt=":-"" title=“Whistle”/>
(…)
cint/cint/main/cint_tmp -K -w1 -zqtcint -ncint/cint/lib/qt/G__qtcint.cxx … qtcint.h
/usr/include/qt4/QtCore/qstring.h:598:
Note: Bit-field not accessible from interpreter
…Warning: Pure virtual destructor may cause problem. Define as ‘virtual ~QObjectData() { }’
/usr/include/qt4/QtGui/qtextdocument.h:98:
Warning: Pure virtual destructor may cause problem. Define as ‘virtual ~QAbstractUndoItem() { }’
(…)
[/quote]The qtcint doesn’t (can not) expose 100% of the Qt public interfaces (doc.trolltech.com/4.7/classes.html) to the interpreter. CINT is the C++ “interpreter”. It is no C++ compiler anyway.
You may ignore the messages the Note: Bit-field not accessible from interpreteralike. Many GUI functions can not be created from the CINT by many reasons. The full-fledged Qt-based ROOT application requires ACLiC or full-fledged compilation-linking-shared-lib-creating/dynamic loading etc.
For example, it is useless to create the CINT dictionary for the abstarct class because one can not subclass it with CINT anyway.[/quote]

[quote=“Pepe Le Pew”]There are some suspicious warnings, though … <img src="/uploads/default/original/2X/8/84c2fe9464a4066c00e1bd5978e913e7869cbb07.gif" width=“22” height=“16” alt=":-"" title=“Whistle”/>
(…)
cint/cint/main/cint_tmp -K -w1 -zqtcint -ncint/cint/lib/qt/G__qtcint.cxx … qtcint.h
/usr/include/qt4/QtCore/qstring.h:598:
Note: Bit-field not accessible from interpreter
…Warning: Pure virtual destructor may cause problem. Define as ‘virtual ~QObjectData() { }’
/usr/include/qt4/QtGui/qtextdocument.h:98:
Warning: Pure virtual destructor may cause problem. Define as ‘virtual ~QAbstractUndoItem() { }’
(…)
[/quote]The qtcint doesn’t (can not) expose 100% of the Qt public interfaces (doc.trolltech.com/4.7/classes.html) to the interpreter. CINT is the C++ “interpreter”. It is no C++ compiler anyway.
You may ignore the messages the Note: Bit-field not accessible from interpreteralike. It does expose some subset that we found useful :wink: . Let me know as soon as you find any Qt function you need from RootCint and can not use yet.Many GUI functions can not be created from the CINT by many reasons. The full-fledged Qt-based ROOT application requires ACLiC or full-fledged compilation-linking-shared-lib-creating/dynamic loading etc

And what about these two “Warning: Pure virtual destructor may cause problem.” messages? :question:

Hi,

you can ignore these warnings; they are a mixture of CINT not seeing nor understanding everything and Qt doing nasty things.

Cheers, Axel.