Code::Blocks Forums

Developer forums (C::B DEVELOPMENT STRICTLY!) => Development => Topic started by: ironhead on June 15, 2012, 09:20:10 pm

Title: Something broke between 8045 and 8050
Post by: ironhead on June 15, 2012, 09:20:10 pm
I'm compiling C::B using MinGW GCC 4.7.0 and with the '-fpermissive' workaround I was able to compile up to 8045.  I just updated to 8050 and now the compilation is failing (existing with a status code of 1).
Title: Re: Something broke between 8045 and 8050
Post by: oBFusCATed on June 15, 2012, 09:48:19 pm
And the error is?
Also have you tried a clean build (removing .obj, devel and output, even the pchs)?
Title: Re: Something broke between 8045 and 8050
Post by: ironhead on June 16, 2012, 06:10:25 am
And the error is?

Many - 988 to be exact: http://emergedesktop.org/8050_error.txt (http://emergedesktop.org/8050_error.txt)

Also have you tried a clean build (removing .obj, devel and output, even the pchs)?

Didn't help unfortunately.
Title: Re: Something broke between 8045 and 8050
Post by: MortenMacFly on June 16, 2012, 08:14:47 am
I'm compiling C::B using MinGW GCC 4.7.0 and with the '-fpermissive' workaround I was able to compile up to 8045.  I just updated to 8050 and now the compilation is failing (existing with a status code of 1).
What platform? I cannot reproduce.
Title: Re: Something broke between 8045 and 8050
Post by: MortenMacFly on June 16, 2012, 08:27:40 am
I cannot reproduce.
Well - I could finally (was using the wrong compiler before). I recalled a fix which I have just committed. Try again and report back, please.
Title: Re: Something broke between 8045 and 8050
Post by: ironhead on June 16, 2012, 03:37:28 pm
I cannot reproduce.
Well - I could finally (was using the wrong compiler before). I recalled a fix which I have just committed. Try again and report back, please.

I got a little further and the error count is down, but unfortunately it still didn't work: http://emergedesktop.org/8055_error.txt (http://emergedesktop.org/8055_error.txt).
Title: Re: Something broke between 8045 and 8050
Post by: Jenna on June 16, 2012, 03:47:01 pm
Works here with -fpermissive hack (fc17 64-bit).
Only tested with automake in clean fedora 17 chroot.
Title: Re: Something broke between 8045 and 8050
Post by: stahta01 on June 16, 2012, 03:55:13 pm
I cannot reproduce.
Well - I could finally (was using the wrong compiler before). I recalled a fix which I have just committed. Try again and report back, please.

I got a little further and the error count is down, but unfortunately it still didn't work: http://emergedesktop.org/8055_error.txt (http://emergedesktop.org/8055_error.txt).

Those are only warnings; there is no Compiler errors in your txt file.
CB is falsely reporting the Compiler warnings as errors. 

SET The CB value of max number of errors to 0 for unlimited.
Or, fix the regex in CB to ignore the warnings (or treat them as warnings instead of errors)

Tim S.
Title: Re: Something broke between 8045 and 8050
Post by: ironhead on June 16, 2012, 09:01:15 pm
I found the source of the build failure, it turns out it has nothing to do with the compilation:

Code
Running target post-build steps
zip -jq9 devel\share\CodeBlocks\manager_resources.zip sdk\resources\*.xrc
cmd /c "cd sdk\resources & zip -0 -q ..\..\devel\share\CodeBlocks\manager_resources.zip images\*.png images\12x12\*.png images\16x16\*.png"
zip I/O error: No such file or directory
zip error: Could not create output file (devel/share/CodeBlocks/manager_resources.zip)

With out the devel/share/CodeBlocks directory pre-existing (i.e. you delete, or on first compilation) the zip fails, causing the whole thing to crap out. If I create the directory before hand the compilation will complete.

Those are only warnings; there is no Compiler errors in your txt file.
CB is falsely reporting the Compiler warnings as errors. 

SET The CB value of max number of errors to 0 for unlimited.
Or, fix the regex in CB to ignore the warnings (or treat them as warnings instead of errors)

Agreed, but I'm having one heck of time getting the regex to work.  I have:
(http://emergedesktop.org/Advanced_Compiler_Options.png)

Which works in the "Test String" but doesn't work when compiling.  Help would be appreciated.
Title: Re: Something broke between 8045 and 8050
Post by: Jenna on June 16, 2012, 09:40:08 pm
I found the source of the build failure, it turns out it has nothing to do with the compilation:
Which works in the "Test String" but doesn't work when compiling.  Help would be appreciated.

I'm on fedora 17 now, which has gcc 4.7 as default compiler.
I will see, if I can fix it.
Title: Re: Something broke between 8045 and 8050
Post by: Jenna on June 16, 2012, 10:16:36 pm
You can try this one:
Code
([][{}() \t#%$~[:alnum:]&_:+/\.-]+):([0-9]+):[0-9]+:[ \t]+([Rr]equired from.*)
Title: Re: Something broke between 8045 and 8050
Post by: killerbot on June 16, 2012, 11:33:50 pm
You can try this one:
Code
([][{}() \t#%$~[:alnum:]&_:+/\.-]+):([0-9]+):[0-9]+:[ \t]+([Rr]equired from.*)
that was one I had on the top list of things to fix ;-)

Commit please if it works ok :-)
Title: Re: Something broke between 8045 and 8050
Post by: stahta01 on June 16, 2012, 11:56:04 pm
You can try this one:
Code
([][{}() \t#%$~[:alnum:]&_:+/\.-]+):([0-9]+):[0-9]+:[ \t]+([Rr]equired from.*)

It did not work for me; but, I have never messed with the compiler regex adv. options before.

Tim S.

two example lines from Windows
Code
include\scripting\sqplus\sqplus.h|1751|  required from 'SqPlus::SQClassDef<TClassType>& SqPlus::SQClassDef<TClassType>::func(Func, const SQChar*) [with Func = ProjectFile* (cbProject::*)(int); TClassType = cbProject; SqPlus::SQClassDef<TClassType> = SqPlus::SQClassDef<cbProject>; SQChar = char]'|
H:\SourceCode\OpenSourceCode\Apps\IDEs\CodeBlocks\codeblocks-wx28-SJLJ\src\sdk\scripting\bindings\scriptbindings.cpp|519|  required from here|
Title: Re: Something broke between 8045 and 8050
Post by: Jenna on June 17, 2012, 12:23:12 am
You can try this one:
Code
([][{}() \t#%$~[:alnum:]&_:+/\.-]+):([0-9]+):[0-9]+:[ \t]+([Rr]equired from.*)

It did not work for me; but, I have never messed with the compiler regex adv. options before.

Tim S.

two example lines from Windows
Code
include\scripting\sqplus\sqplus.h|1751|  required from 'SqPlus::SQClassDef<TClassType>& SqPlus::SQClassDef<TClassType>::func(Func, const SQChar*) [with Func = ProjectFile* (cbProject::*)(int); TClassType = cbProject; SqPlus::SQClassDef<TClassType> = SqPlus::SQClassDef<cbProject>; SQChar = char]'|
H:\SourceCode\OpenSourceCode\Apps\IDEs\CodeBlocks\codeblocks-wx28-SJLJ\src\sdk\scripting\bindings\scriptbindings.cpp|519|  required from here|
Can you post the cooresponding lines from the "Build log" and not from the "Build messages" tab ?
Title: Re: Something broke between 8045 and 8050
Post by: stahta01 on June 17, 2012, 01:45:21 am
Build log different spot

Code
H:\SourceCode\OpenSourceCode\Apps\IDEs\CodeBlocks\codeblocks-wx28-SJLJ\src\sdk\scripting\bindings\scriptbindings.cpp:680:98:   required from here
include\scripting\sqplus/sqplus.h:626:5: warning: 'Push' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
In file included from H:\SourceCode\OpenSourceCode\Apps\IDEs\CodeBlocks\codeblocks-wx28-SJLJ\src\sdk\scripting\bindings\scriptbindings.cpp:28:0:
include\scripting\bindings/sc_base_types.h:74:1: note: 'void SqPlus::Push(HSQUIRRELVM, TargetFilenameGenerationPolicy)' declared here, later in the translation unit
In file included from include\scripting\bindings/sc_base_types.h:26:0,
                 from H:\SourceCode\OpenSourceCode\Apps\IDEs\CodeBlocks\codeblocks-wx28-SJLJ\src\sdk\scripting\bindings\scriptbindings.cpp:28:
include\scripting\sqplus/sqplus.h: In instantiation of 'static SQInteger SqPlus::ReturnSpecialization<RT>::Call(RT (*)(P1, P2), HSQUIRRELVM, SQInteger) [with P1 = const wxString&; P2 = const wxString&; RT = bool; SQInteger = int; HSQUIRRELVM = SQVM*]':
include\scripting\sqplus/sqplus.h:1111:53:   required from 'SQInteger SqPlus::Call(RT (*)(P1, P2), HSQUIRRELVM, SQInteger) [with RT = bool; P1 = const wxString&; P2 = const wxString&; SQInteger = int; HSQUIRRELVM = SQVM*]'
include\scripting\sqplus/sqplus.h:1194:26:   required from 'static SQInteger SqPlus::DirectCallFunction<Func>::Dispatch(HSQUIRRELVM) [with Func = bool (*)(const wxString&, const wxString&); SQInteger = int; HSQUIRRELVM = SQVM*]'
include\scripting\sqplus/sqplus.h:1293:3:   required from 'void SqPlus::sq_pushdirectclosure(HSQUIRRELVM, Func, SQUnsignedInteger) [with Func = bool (*)(const wxString&, const wxString&); HSQUIRRELVM = SQVM*; SQUnsignedInteger = unsigned int]'
include\scripting\sqplus/sqplus.h:1330:3:   required from 'void SqPlus::Register(HSQUIRRELVM, Func, const SQChar*) [with Func = bool (*)(const wxString&, const wxString&); HSQUIRRELVM = SQVM*; SQChar = char]'
include\scripting\sqplus/sqplus.h:1376:3:   required from 'void SqPlus::Register(HSQUIRRELVM, HSQOBJECT, Func, const SQChar*) [with Func = bool (*)(const wxString&, const wxString&); HSQUIRRELVM = SQVM*; HSQOBJECT = tagSQObject; SQChar = char]'
include\scripting\sqplus/sqplus.h:1781:5:   required from 'SqPlus::SQClassDef<TClassType>& SqPlus::SQClassDef<TClassType>::staticFunc(Func, const SQChar*) [with Func = bool (*)(const wxString&, const wxString&); TClassType = CompilerFactory; SqPlus::SQClassDef<TClassType> = SqPlus::SQClassDef<CompilerFactory>; SQChar = char]'

Related spot from build message

Code
H:\SourceCode\OpenSourceCode\Apps\IDEs\CodeBlocks\codeblocks-wx28-SJLJ\src\sdk\scripting\bindings\scriptbindings.cpp|680|  required from here|
include\scripting\sqplus\sqplus.h|626|warning: 'Push' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]|
include\scripting\bindings\sc_base_types.h|74|note: 'void SqPlus::Push(HSQUIRRELVM, TargetFilenameGenerationPolicy)' declared here, later in the translation unit|
include\scripting\sqplus\sqplus.h|1111|  required from 'SQInteger SqPlus::Call(RT (*)(P1, P2), HSQUIRRELVM, SQInteger) [with RT = bool; P1 = const wxString&; P2 = const wxString&; SQInteger = int; HSQUIRRELVM = SQVM*]'|
include\scripting\sqplus\sqplus.h|1194|  required from 'static SQInteger SqPlus::DirectCallFunction<Func>::Dispatch(HSQUIRRELVM) [with Func = bool (*)(const wxString&, const wxString&); SQInteger = int; HSQUIRRELVM = SQVM*]'|
include\scripting\sqplus\sqplus.h|1293|  required from 'void SqPlus::sq_pushdirectclosure(HSQUIRRELVM, Func, SQUnsignedInteger) [with Func = bool (*)(const wxString&, const wxString&); HSQUIRRELVM = SQVM*; SQUnsignedInteger = unsigned int]'|
include\scripting\sqplus\sqplus.h|1330|  required from 'void SqPlus::Register(HSQUIRRELVM, Func, const SQChar*) [with Func = bool (*)(const wxString&, const wxString&); HSQUIRRELVM = SQVM*; SQChar = char]'|
include\scripting\sqplus\sqplus.h|1376|  required from 'void SqPlus::Register(HSQUIRRELVM, HSQOBJECT, Func, const SQChar*) [with Func = bool (*)(const wxString&, const wxString&); HSQUIRRELVM = SQVM*; HSQOBJECT = tagSQObject; SQChar = char]'|
include\scripting\sqplus\sqplus.h|1781|  required from 'SqPlus::SQClassDef<TClassType>& SqPlus::SQClassDef<TClassType>::staticFunc(Func, const SQChar*) [with Func = bool (*)(const wxString&, const wxString&); TClassType = CompilerFactory; SqPlus::SQClassDef<TClassType> = SqPlus::SQClassDef<CompilerFactory>; SQChar = char]'|
H:\SourceCode\OpenSourceCode\Apps\IDEs\CodeBlocks\codeblocks-wx28-SJLJ\src\sdk\scripting\bindings\scriptbindings.cpp|681|  required from here|
include\scripting\sqplus\sqplus.h|638|warning: 'Push' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]|
include\scripting\bindings\sc_base_types.h|74|note: 'void SqPlus::Push(HSQUIRRELVM, TargetFilenameGenerationPolicy)' declared here, later in the translation unit|

Currently rebuild the full Code::Blocks project will attach minimal build log when done.
Note: Using these option on cpp file(s) "-std=gnu++0x -fpermissive"

Tim S.

[attachment deleted by admin]
Title: Re: Something broke between 8045 and 8050
Post by: ironhead on June 17, 2012, 02:06:02 am
@Jens, the regular expression you provided worked, I had to define it before the Preprocessor Error:

(http://emergedesktop.org/Advanced_Compiler_Options_Preprocessor_Warning.png)

Thank you! :)
Title: Re: Something broke between 8045 and 8050
Post by: stahta01 on June 17, 2012, 03:13:56 am
Also, need this changed from error to something else.

Tim S.

Code
include\scripting\bindings/sc_base_types.h:74:1: note: 'void SqPlus::Push(HSQUIRRELVM, TargetFilenameGenerationPolicy)' declared here, later in the translation unit
Title: Re: Something broke between 8045 and 8050
Post by: Jenna on June 17, 2012, 12:45:06 pm
I committed two new warnings, teh first one belongs to the second one (the warning we discussed here). I decided to add it also, because we have no regexes, that can filter multiple line output as far as I know.
Also, need this changed from error to something else.

Tim S.

Code
include\scripting\bindings/sc_base_types.h:74:1: note: 'void SqPlus::Push(HSQUIRRELVM, TargetFilenameGenerationPolicy)' declared here, later in the translation unit

This works for me with default regexes as expected (as note).
Title: Re: Something broke between 8045 and 8050
Post by: stahta01 on June 17, 2012, 02:52:26 pm

This works for me with default regexes as expected (as note).

Ok, I will rebuild and set it to the default after rebuilding; maybe, my settings are not the default ones.

Tim S.
Title: Re: Something broke between 8045 and 8050
Post by: stahta01 on June 17, 2012, 03:41:43 pm

This works for me with default regexes as expected (as note).

Ok, I will rebuild and set it to the default after rebuilding; maybe, my settings are not the default ones.

Tim S.

Rebuilding and setting it to defaults fixed the issue.

I am going to have to remember to click set to default every few years; likely not done for since 10.05 was released.

Tim S.
Title: Re: Something broke between 8045 and 8050
Post by: ironhead on June 18, 2012, 05:03:59 pm
Should the 'required from' messages be treated the same as the 'included from' messages (i.e. as Info or Normal messages)?  I believe all the 'required from' messages are related to the preceding warning?