Bug 72385

Summary: error compiling kdemultimedia-3.1.94/mpeglib_artsplug/decoderBaseObject_impl.h on solaris 8
Product: [Unmaintained] mpeglib Reporter: David Rutitsky <drutitsky>
Component: generalAssignee: Martin Vogt <mvogt>
Status: RESOLVED DUPLICATE    
Severity: normal CC: jjm
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Solaris   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description David Rutitsky 2004-01-11 12:21:37 UTC
Version:            (using KDE KDE 3.1.94)
Installed from:    Compiled From Sources
Compiler:          gcc 3.2 sun sparc
OS:          Solaris

decoderBaseObject_impl.h:67: syntax error before `*' token
decoderBaseObject_impl.cpp: In constructor 
   `DecoderBaseObject_impl::DecoderBaseObject_impl()':
decoderBaseObject_impl.cpp:49: `m_packetQueue' undeclared (first use this 
   function)
decoderBaseObject_impl.cpp:49: (Each undeclared identifier is reported only 
   once for each function it appears in.)
/usr/local/gcc-3.2/include/c++/3.2/bits/stl_threads.h: At global scope:
/usr/local/gcc-3.2/include/c++/3.2/bits/stl_threads.h: In instantiation of `__gthread_mutex_t std::_Swap_lock_struct<0>::_S_swap_lock':
/usr/local/gcc-3.2/include/c++/3.2/bits/stl_threads.h:122:   instantiated from here
/usr/local/gcc-3.2/include/c++/3.2/bits/stl_threads.h:115: warning: missing 
   initializer for member `_pthread_mutex::<anonymous 
   struct>::__pthread_mutex_magic'
gmake[3]: *** [decoderBaseObject_impl.lo] Error 1
gmake[3]: Leaving directory `/home/drutitsky/KDE3/kdemultimedia-3.1.94/mpeglib_artsplug'
gmake[2]: *** [all] Error 2
gmake[2]: Leaving directory `/home/drutitsky/KDE3/kdemultimedia-3.1.94/mpeglib_artsplug'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/home/drutitsky/KDE3/kdemultimedia-3.1.94'
gmake: *** [all] Error 2

Somehow queue was not fond despite of the line "using namespace std;" I was able overcome the problem by implicite use of 
std::queue thow i do not understend why it works, or how it should be. Here my fix:

--- mpeglib_artsplug/decoderBaseObject_impl.h~  2004-01-11 13:09:07.170010000 +0200
+++ mpeglib_artsplug/decoderBaseObject_impl.h   2004-01-11 13:13:35.790006000 +0200
@@ -64,7 +64,7 @@
 
   bool m_streaming;
 
-  queue<DataPacket<mcopbyte>*> *m_packetQueue;
+  std::queue<DataPacket<mcopbyte>*> *m_packetQueue;
 
 public:
Comment 1 Aaron Williams 2004-02-05 00:49:23 UTC
I am having the same problem with kde 3.2.0 using GCC 3.3.2.  To fix it, in decoderBaseObject_impl.cpp, switch the order of the includes between decoderBaseObject_impl.h and ../mpeglib/lib/decoder/decoderPlugin.h so it looks like: 

#include <queue>
#include <iostream>

#include <connect.h>

#include "decoderBaseObject_impl.h"
#include "../mpeglib/lib/decoder/decoderPlugin.h"
#include "debug.h"


This solved the problem for me, both in 3.1.95 and 3.2.0.

-Aaron
Comment 2 David Rutitsky 2004-05-11 14:29:46 UTC
Fixed file in question.
Comment 3 David Rutitsky 2004-05-11 14:33:06 UTC
Sorry, I looked the wrong way. The issue still happends on 3.2.2
Comment 4 Aaron Williams 2004-08-17 23:55:09 UTC
The problem was not fixed.  I still need to swap the two include lines.  This failure happens with gcc 3.3.x and 3.4.1 and is still present in KDE 3.3rc2.

Please swap the order of these two include files and check it in.

make[3]: Entering directory `/var/tmp/kde/archive/3.3/kdemultimedia-3.3.0/mpeglib_artsplug'
creating libarts_mpeglib_la.all_cc.cc ...
if /bin/bash ../libtool --silent --mode=compile --tag=CXX g++ -DHAVE_CONFIG_H -I. -I. -I.. -I../mpeglib/lib -I/opt/kde3/3.3rc2/include/artsc -threads -I/opt/kde/tools/include/glib-2.0 -I/opt/kde/tools/lib/glib-2.0/include -I/opt/kde3/3.3rc2/include/arts -I/opt/kde3/3.3rc2/include -I/opt/qt/qt-3.3.2-2/include   -I/opt/kde/tools/include  -DQT_THREAD_SUPPORT  -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4  -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -W -Wpointer-arith -Wwrite-strings -g -O2 -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION  -MT libarts_mpeglib_la.all_cc.lo -MD -MP -MF ".deps/libarts_mpeglib_la.all_cc.Tpo" -c -o libarts_mpeglib_la.all_cc.lo libarts_mpeglib_la.all_cc.cc; \
then mv -f ".deps/libarts_mpeglib_la.all_cc.Tpo" ".deps/libarts_mpeglib_la.all_cc.Plo"; else rm -f ".deps/libarts_mpeglib_la.all_cc.Tpo"; exit 1; fi
creating libarts_mpeglib_la.all_cpp.cpp ...
if /bin/bash ../libtool --silent --mode=compile --tag=CXX g++ -DHAVE_CONFIG_H -I. -I. -I.. -I../mpeglib/lib -I/opt/kde3/3.3rc2/include/artsc -threads -I/opt/kde/tools/include/glib-2.0 -I/opt/kde/tools/lib/glib-2.0/include -I/opt/kde3/3.3rc2/include/arts -I/opt/kde3/3.3rc2/include -I/opt/qt/qt-3.3.2-2/include   -I/opt/kde/tools/include  -DQT_THREAD_SUPPORT  -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4  -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -W -Wpointer-arith -Wwrite-strings -g -O2 -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION  -MT libarts_mpeglib_la.all_cpp.lo -MD -MP -MF ".deps/libarts_mpeglib_la.all_cpp.Tpo" -c -o libarts_mpeglib_la.all_cpp.lo libarts_mpeglib_la.all_cpp.cpp; \
then mv -f ".deps/libarts_mpeglib_la.all_cpp.Tpo" ".deps/libarts_mpeglib_la.all_cpp.Plo"; else rm -f ".deps/libarts_mpeglib_la.all_cpp.Tpo"; exit 1; fi
In file included from decoderBaseObject_impl.cpp:19,
                 from libarts_mpeglib_la.all_cpp.cpp:2:
decoderBaseObject_impl.h:67: error: ISO C++ forbids declaration of `queue' with no type
decoderBaseObject_impl.h:67: error: expected `;' before '<' token
In file included from libarts_mpeglib_la.all_cpp.cpp:2:
decoderBaseObject_impl.cpp: In constructor `DecoderBaseObject_impl::DecoderBaseObject_impl()':
decoderBaseObject_impl.cpp:49: error: `m_packetQueue' undeclared (first use this function)
decoderBaseObject_impl.cpp:49: error: (Each undeclared identifier is reported only once for each function it appears in.)
decoderBaseObject_impl.cpp: In destructor `virtual DecoderBaseObject_impl::~DecoderBaseObject_impl()':
decoderBaseObject_impl.cpp:70: error: `m_packetQueue' undeclared (first use this function)
decoderBaseObject_impl.cpp: In member function `virtual void DecoderBaseObject_impl::process_indata(Arts::DataPacket<Arts::mcopbyte>*)':
decoderBaseObject_impl.cpp:177: error: `m_packetQueue' undeclared (first use this function)
decoderBaseObject_impl.cpp: In member function `void DecoderBaseObject_impl::processQueue()':
decoderBaseObject_impl.cpp:184: error: `m_packetQueue' undeclared (first use this function)
nullPlayObject_impl.cpp: At global scope:
nullPlayObject_impl.cpp:26: warning: unused parameter 'filename'
make[3]: *** [libarts_mpeglib_la.all_cpp.lo] Error 1
make[3]: Leaving directory `/var/tmp/kde/archive/3.3/kdemultimedia-3.3.0/mpeglib_artsplug'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/var/tmp/kde/archive/3.3/kdemultimedia-3.3.0/mpeglib_artsplug'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/kde/archive/3.3/kdemultimedia-3.3.0'
make: *** [all] Error 2

If you include decoderBaseObject_impl.h before ../mpeglib/lib/decoder/decoderPlugin.h then everything compiles fine.  I don't know why the order matters, but it does.  This same fix works for gcc 3.2.x, gcc 3.3.x and 3.4.x.

-Aaron
Comment 5 Jaime PeƱalba 2005-02-22 15:43:06 UTC
changin

#include "../mpeglib/lib/decoder/decoderPlugin.h"
#include "decoderBaseObject_impl.h"

to

#include "decoderBaseObject_impl.h"
#include "../mpeglib/lib/decoder/decoderPlugin.h"

Works for me with gcc-3.4.2 and gcc-3.3.2.
We hope it will be fixed, cause its an old known compilation bug.
Comment 6 Bernd Kuhls 2005-02-22 15:44:27 UTC
This bug is fixed now: http://bugs.kde.org/show_bug.cgi?id=70269#c12
Comment 7 Thiago Macieira 2005-02-23 01:41:24 UTC
Aye.

*** This bug has been marked as a duplicate of 70269 ***