Le Sat, 30 Apr 2011 16:57:41 -0500,
"David C. Rankin" <drankinatty(a)suddenlinkmail.com> a écrit :
Guys,
I have finally gotten a few minutes to dive back into Trinity. To
my chagrin, we have Arch has bumped from gcc 4.5 to gcc 4.6. I am
having problems building Qt3. Adding to the difficulty, the Qt3 build
script for Arch has been through a number of changes lately and I
haven't had time to verify the new build script under gcc 4.5 before
the jump to gcc 4.6. So I am working to understand whether this build
failure is gcc related or if it is a normal screw-up on my end.
The build is failing in the middle of the build, so this leads me
to think this might be gcc related. If anybody can look at the error
and determine whether this is a gcc issue or not, I would greatly
appreciate it. I think what I'll do is drop back to a build script
that I know was working on gcc 4.5 and confirm, but in the interim, I
thought I would post the error in hope somebody else had seen this
already. What does this error look like to the masters?:
g++ -c -pipe -Wall -W -march=i686 -mtune=generic -O2 -pipe
-D_REENTRANT -fPIC -DQT_SHARED -DQT_NO_DEBUG -DQT_THREAD_SUPPORT
-DQT_THREAD_SUPPORT -D_LARGEFILE_SOURCE -D_LARGE_FILES
-D_FILE_OFFSET_BITS=64 -DQT_NO_IMAGEIO_MNG -DQT_NO_IMAGEIO_JPEG
-DQT_NO_IMAGEIO_PNG -DQT_BUILTIN_GIF_READER=1 -DQT_NO_STYLE_MAC
-DQT_NO_STYLE_AQUA -DQT_NO_STYLE_INTERLACE -DQT_NO_STYLE_WINDOWSXP
-DQT_NO_STYLE_COMPACT -DQT_NO_STYLE_POCKETPC
-I/home/david/tblds/trinity-qt3/src/qt-x11-free-3.3.8b/mkspecs/linux-g++
-I. -I/usr/include/freetype2 -I3rdparty/opentype -I../include
-I/usr/X11R6/include -I/usr/X11R6/include -I.moc/release-shared-mt/
-o .obj/release-shared-mt/qapplication_x11.o
kernel/qapplication_x11.cpp In file included
from ../include/qmap.h:49:0, from kernel/qmime.h:46, from
kernel/qevent.h:48, from kernel/qobject.h:48,
from kernel/qwidget.h:46,
from kernel/qdesktopwidget.h:43,
from kernel/qapplication.h:45,
from kernel/qapplication_x11.cpp:67:
../include/qvaluelist.h:91:13: error: ‘ptrdiff_t’ does not name a type
../include/qvaluelist.h:167:13: error: ‘ptrdiff_t’ does not name a
type In file included from ../include/qmap.h:49:0,
from kernel/qmime.h:46,
from kernel/qevent.h:48,
from kernel/qobject.h:48,
from kernel/qwidget.h:46,
from kernel/qdesktopwidget.h:43,
from kernel/qapplication.h:45,
from kernel/qapplication_x11.cpp:67:
../include/qvaluelist.h:427:13: error: ‘ptrdiff_t’ does not name a
type In file included from kernel/qmime.h:46:0,
from kernel/qevent.h:48,
from kernel/qobject.h:48,
from kernel/qwidget.h:46,
from kernel/qdesktopwidget.h:43,
from kernel/qapplication.h:45,
from kernel/qapplication_x11.cpp:67:
../include/qmap.h:110:13: error: ‘ptrdiff_t’ does not name a type
../include/qmap.h:226:13: error: ‘ptrdiff_t’ does not name a type
In file included from kernel/qmime.h:46:0,
from kernel/qevent.h:48,
from kernel/qobject.h:48,
from kernel/qwidget.h:46,
from kernel/qdesktopwidget.h:43,
from kernel/qapplication.h:45,
from kernel/qapplication_x11.cpp:67:
../include/qmap.h:607:13: error: ‘ptrdiff_t’ does not name a type
kernel/qapplication_x11.cpp: In member function ‘int
QApplication::x11ProcessEvent(XEvent*)’:
kernel/qapplication_x11.cpp:3693:54: warning: suggest parentheses
around ‘&&’ within ‘||’ [-Wparentheses]
kernel/qapplication_x11.cpp:3706:54: warning: suggest parentheses
around ‘&&’ within ‘||’ [-Wparentheses]
kernel/qapplication_x11.cpp: In member function ‘bool
QETWidget::translateMouseEvent(const XEvent*)’:
kernel/qapplication_x11.cpp:4122:30: warning: suggest parentheses
around ‘&&’ within ‘||’ [-Wparentheses]
kernel/qapplication_x11.cpp: In member function ‘bool
QETWidget::translateKeyEventInternal(const XEvent*, int&, QString&,
int&, char&, int&, QEvent::Type&, bool)’:
kernel/qapplication_x11.cpp:5161:8: warning: suggest explicit braces
to avoid ambiguous ‘else’ [-Wparentheses]
kernel/qapplication_x11.cpp:5232:52: warning: suggest parentheses
around ‘&&’ within ‘||’ [-Wparentheses]
kernel/qapplication_x11.cpp:5235:52: warning: suggest parentheses
around ‘&&’ within ‘||’ [-Wparentheses]
kernel/qapplication_x11.cpp: In function ‘int
isPaintOrScrollDoneEvent(Display*, XEvent*, XPointer)’:
kernel/qapplication_x11.cpp:5524:34: warning: suggest parentheses
around ‘&&’ within ‘||’ [-Wparentheses]
make[2]: *** [.obj/release-shared-mt/qapplication_x11.o] Error 1
make[2]: Leaving directory
`/home/david/tblds/trinity-qt3/src/qt-x11-free-3.3.8b/src'
make[1]: *** [sub-src] Error 2
make[1]: Leaving directory
`/home/david/tblds/trinity-qt3/src/qt-x11-free-3.3.8b' make: ***
[init] Error 2 ==> ERROR: A failure occurred in build().
Aborting...
I'll go try an older build script that used qt-x11-free-3.3.8
instead of qt-x11-free-3.3.8b. I'll report back :p
This is probably a g++-4.6
related error.
http://gcc.gnu.org/gcc-4.6/changes.html says :
"Most libstdc++ standard headers have been changed to no longer
include the cstddef header as an implementation detail. Code that
relied on that header being included as side-effect of including other
standard headers will need to include cstddef explicitly."
And the unpatched qvaluelist.h includes <iterator> and <list>, but not
<cstddef>.
So we probably just need to patch the error-producing headers to
#include <cstddef>.