Tim, Darrell,
No new patches and I experienced a build failure with tdebase in tonights build. I looked at the recent commits and I cannot determine if one is responsible for this change or not. The failure is one I've not seen before involving kicker and quicklaunch. Here is the error. I'm not quite sure what broke other than a scope issue with 'erase' from kicker/quicklaunch includes:
[ 94%] Building CXX object klipper/CMakeFiles/klipper-module.dir/klipper_tdeinit_module.cpp.o Linking CXX shared module klipper.so In file included from /build/src/tdebase/kicker/applets/launcher/quickbuttongroup.h:12:0, from /build/src/tdebase/kicker/applets/launcher/quicklauncher.cpp:58: /build/src/tdebase/kicker/applets/launcher/easyvector.h: In instantiation of 'void EasyVector<VALUE, CHECKINDEX>::eraseAt(EasyVector<VALUE, CHECKINDEX>::Index) [with VALUE = QuickButton*; bool CHECKINDEX = true; EasyVector<VALUE, CHECKINDEX>::Index = int]': /build/src/tdebase/kicker/applets/launcher/quicklauncher.cpp:296:29: required from here /build/src/tdebase/kicker/applets/launcher/easyvector.h:90:5: error: 'erase' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] /build/src/tdebase/kicker/applets/launcher/easyvector.h:90:5: note: declarations in dependent base 'std::vector<QuickButton*, std::allocator<QuickButton*> >' are not found by unqualified lookup /build/src/tdebase/kicker/applets/launcher/easyvector.h:90:5: note: use 'this->erase' instead /build/src/tdebase/kicker/applets/launcher/easyvector.h: In instantiation of 'void EasyVector<VALUE, CHECKINDEX>::insertAt(EasyVector<VALUE, CHECKINDEX>::Index, const VALUE&) [with VALUE = QuickButton*; bool CHECKINDEX = true; EasyVector<VALUE, CHECKINDEX>::Index = int]': /build/src/tdebase/kicker/applets/launcher/quicklauncher.cpp:432:41: required from here /build/src/tdebase/kicker/applets/launcher/easyvector.h:111:5: error: 'insert' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] /build/src/tdebase/kicker/applets/launcher/easyvector.h:111:5: note: declarations in dependent base 'std::vector<QuickButton*, std::allocator<QuickButton*> >' are not found by unqualified lookup /build/src/tdebase/kicker/applets/launcher/easyvector.h:111:5: note: use 'this->insert' instead In file included from /build/src/tdebase/kicker/applets/launcher/quickbuttongroup.h:12:0, from /build/src/tdebase/kicker/applets/launcher/quicklauncher.cpp:58: /build/src/tdebase/kicker/applets/launcher/easyvector.h: In instantiation of 'void EasyVector<VALUE, CHECKINDEX>::insertAt(EasyVector<VALUE, CHECKINDEX>::Index, const EasyVector<VALUE, CHECKINDEX>&) [with VALUE = QuickButton*; bool CHECKINDEX = true; EasyVector<VALUE, CHECKINDEX>::Index = int]': /build/src/tdebase/kicker/applets/launcher/quicklauncher.cpp:653:46: required from here /build/src/tdebase/kicker/applets/launcher/easyvector.h:119:5: error: 'insert' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] /build/src/tdebase/kicker/applets/launcher/easyvector.h:119:5: note: declarations in dependent base 'std::vector<QuickButton*, std::allocator<QuickButton*> >' are not found by unqualified lookup /build/src/tdebase/kicker/applets/launcher/easyvector.h:119:5: note: use 'this->insert' instead [ 94%] Built target klipper-module Scanning dependencies of target kcontroledit [ 95%] Building CXX object kmenuedit/CMakeFiles/kcontroledit.dir/kcontroledit_tdeinit_executable.cpp.o Linking CXX executable kcontroledit make[2]: *** [kicker/applets/launcher/CMakeFiles/launcher_panelapplet-module.dir/quicklauncher.cpp.o] Error 1 make[1]: *** [kicker/applets/launcher/CMakeFiles/launcher_panelapplet-module.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... [ 95%] Building CXX object ksysguard/gui/SensorDisplayLib/CMakeFiles/sensordisplays-static.dir/SensorLogger.cc.o [ 95%] Built target klipper [ 95%] Building CXX object ksysguard/gui/SensorDisplayLib/CMakeFiles/sensordisplays-static.dir/SensorLoggerDlg.cc.o [ 95%] Built target kcontroledit [ 95%] Building CXX object ksysguard/gui/SensorDisplayLib/CMakeFiles/sensordisplays-static.dir/SensorLoggerSettings.cc.o [ 95%] Building CXX object ksysguard/gui/SensorDisplayLib/CMakeFiles/sensordisplays-static.dir/ListViewSettings.cc.o [ 95%] Building CXX object ksysguard/gui/SensorDisplayLib/CMakeFiles/sensordisplays-static.dir/SignalPlotter.cc.o [ 95%] Building CXX object ksysguard/gui/SensorDisplayLib/CMakeFiles/sensordisplays-static.dir/ListViewSettingsWidget.cpp.o [ 95%] Building CXX object ksysguard/gui/SensorDisplayLib/CMakeFiles/sensordisplays-static.dir/LogFileSettings.cpp.o [ 95%] Building CXX object ksysguard/gui/SensorDisplayLib/CMakeFiles/sensordisplays-static.dir/MultiMeterSettingsWidget.cpp.o [ 95%] Building CXX object ksysguard/gui/SensorDisplayLib/CMakeFiles/sensordisplays-static.dir/SensorLoggerDlgWidget.cpp.o [ 96%] Building CXX object ksysguard/gui/SensorDisplayLib/CMakeFiles/sensordisplays-static.dir/SensorLoggerSettingsWidget.cpp.o Linking CXX static library libsensordisplays.a [ 96%] Built target sensordisplays-static make: *** [all] Error 2
Does this look like it is due to a recent commit?
On 04/04/2012 10:20 PM, David C. Rankin wrote:
/build/src/tdebase/kicker/applets/launcher/easyvector.h:90:5: error: 'erase' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
Damn,
I got tdebase to build, but this is the first time I had to use -fpermissive on the new code. Any idea why that suddenly became required?
/build/src/tdebase/kicker/applets/launcher/easyvector.h:90:5: error: 'erase' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
Damn,
I got tdebase to build, but this is the first time I had to use -fpermissive on the new code. Any idea why that suddenly became required?
http://gcc.gnu.org/onlinedocs/gcc-4.0.4/gcc/C_002b_002b-Dialect-Options.html:
-fpermissive Downgrade some diagnostics about nonconformant code from errors to warnings. Thus, using -fpermissive will allow some nonconforming code to compile.
Loosely interpreted: the gcc developers are anal?
Loosely interpreted: the original developers of that code were sloppy?
I suppose in the long run we all address these issues with a newer gcc. Eventually we'll need a cheat sheet to help one another with appropriate corrections in the old code base. Probably this summer when I tinker with the next likely Slackware release I get to deal with the problems too. Or retire.
As I am moving along at a snail's pace learning C++, the latter option sounds palatable. :)
Darrell
On 04/04/2012 10:53 PM, Darrell Anderson wrote:
I suppose in the long run we all address these issues with a newer gcc. Eventually we'll need a cheat sheet to help one another with appropriate corrections in the old code base. Probably this summer when I tinker with the next likely Slackware release I get to deal with the problems too. Or retire.
As I am moving along at a snail's pace learning C++, the latter option sounds palatable. :)
Darrell
Retire? That just gives you more time to focus on C++ :)
On Wed, 04 Apr 2012 22:39:05 -0500 "David C. Rankin" drankinatty@suddenlinkmail.com wrote:
On 04/04/2012 10:20 PM, David C. Rankin wrote:
/build/src/tdebase/kicker/applets/launcher/easyvector.h:90:5: error: 'erase' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
Damn,
I got tdebase to build, but this is the first time I had to use -fpermissive on the new code. Any idea why that suddenly became required?
Quick fix: add this-> to calls to inherited std::vector::erase() function. Long fix: get rid of/rewrite this broken* code which doesn't seem to add much compared to a C++98 compliant std::vector (std::vector::at() does bound-checking already, for example).
* wrapping a STL container by public inheritance, seriously ?
On 04/04/2012 11:37 PM, /dev/ammo42 wrote:
On Wed, 04 Apr 2012 22:39:05 -0500 "David C. Rankin" drankinatty@suddenlinkmail.com wrote:
On 04/04/2012 10:20 PM, David C. Rankin wrote:
/build/src/tdebase/kicker/applets/launcher/easyvector.h:90:5: error: 'erase' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
Damn,
I got tdebase to build, but this is the first time I had to use -fpermissive on the new code. Any idea why that suddenly became required?
Quick fix: add this-> to calls to inherited std::vector::erase() function. Long fix: get rid of/rewrite this broken* code which doesn't seem to add much compared to a C++98 compliant std::vector (std::vector::at() does bound-checking already, for example).
- wrapping a STL container by public inheritance, seriously ?
dev/ammo
You are way way ahead of me (that's normal) so thanks. Now when you say:
Quick fix: add this-> to calls to inherited std::vector::erase()
are you saying to pick to the code and find the std::vector::erase() calls and make them this->std::vector::erase() ?
I'll give it a go and report back -- will be tomorrow.
On Wed, 04 Apr 2012 23:52:03 -0500 "David C. Rankin" drankinatty@suddenlinkmail.com wrote:
On 04/04/2012 11:37 PM, /dev/ammo42 wrote:
On Wed, 04 Apr 2012 22:39:05 -0500 "David C. Rankin" drankinatty@suddenlinkmail.com wrote:
On 04/04/2012 10:20 PM, David C. Rankin wrote:
/build/src/tdebase/kicker/applets/launcher/easyvector.h:90:5: error: 'erase' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
Damn,
I got tdebase to build, but this is the first time I had to use -fpermissive on the new code. Any idea why that suddenly became required?
Quick fix: add this-> to calls to inherited std::vector::erase() function. Long fix: get rid of/rewrite this broken* code which doesn't seem to add much compared to a C++98 compliant std::vector (std::vector::at() does bound-checking already, for example).
- wrapping a STL container by public inheritance, seriously ?
dev/ammo
You are way way ahead of me (that's normal) so thanks. Now when you say:
Quick fix: add this-> to calls to inherited std::vector::erase()
are you saying to pick to the code and find the std::vector::erase() calls and make them this->std::vector::erase() ?
Yes. Actually it's what gcc was saying you :
/build/src/tdebase/kicker/applets/launcher/easyvector.h:90:5: note: use 'this->erase' instead
(from your build log)
I'll give it a go and report back -- will be tomorrow.
On 04/05/2012 12:01 AM, /dev/ammo42 wrote:
Yes. Actually it's what gcc was saying you :
/build/src/tdebase/kicker/applets/launcher/easyvector.h:90:5: note: use 'this->erase' instead
(from your build log)
I've got to learn gcc -- it's like Chinese most of the time :)
No new patches and I experienced a build failure with tdebase in tonights build. I looked at the recent commits and I cannot determine if one is responsible for this change or not. The failure is one I've not seen before involving kicker and quicklaunch. Here is the error. I'm not quite sure what broke other than a scope issue with 'erase' from kicker/quicklaunch includes:
Does this look like it is due to a recent commit?
Nope --- looks like Yet Another Bleeding Edge build issue.... tdebase builds fine here but we both know I'm a few versions behind with build tools.
I don't have a clue about the cause of the error. Web search turned up nothing....
Darrell