I was able to retrieve and build Code::Blocks from the codeblocks_console branch. I have a problem now. When running codeblocks_con to build the project, I get the following error message:
codeblocks_con --build --target=Debug MyProject.cbp
Scanning for plugins in /home/benjamin/.codeblocks/share/codeblocks/plugins
Loaded 0 plugins
Scanning for plugins in /usr/lib/codeblocks/plugins
Loaded 0 plugins
Error:
Deactivating the compiler plugin is most unwise.
When using codeblocks instead, it works. How do I activate the compiler plugin?
I edited the install rules in debian/, executed ./bootstrap, and dpkg-buildpackage -b -uc -us, which worked without problems. Afterward, I installed the generated Debian packages. The file is located in /usr/lib/codeblocks/plugins/libcon_compiler.so.
When doing strace codeblocks_con --build --target=Debug MyProject.cbp, it shows the following:
⋮
stat("/usr/lib/codeblocks/plugins/libcodecompletion.so", {st_mode=S_IFREG|0644, st_size=1041040, ...}) = 0
stat("/usr/lib/codeblocks/plugins/libcon_compiler.so", {st_mode=S_IFREG|0644, st_size=1018192, ...}) = 0
stat("/home/benjamin/.codeblocks/share/codeblocks/plugins/con_compiler.zip", 0x7fff01890960) = -1 ENOENT (No such file or directory)
stat("/home/benjamin/.codeblocks/share/codeblocks/con_compiler.zip", 0x7fff01890960) = -1 ENOENT (No such file or directory)
stat("/usr/lib/codeblocks/plugins/con_compiler.zip", 0x7fff01890960) = -1 ENOENT (No such file or directory)
stat("/usr/share/codeblocks/con_compiler.zip", 0x7fff01890960) = -1 ENOENT (No such file or directory)
write(2, "Plugin resource not found: libco"..., 46Plugin resource not found: libcon_compiler.zip) = 46
write(2, "\n", 1
) = 1
getdents(3, /* 0 entries */, 32768) = 0
write(1, "Loaded 0 plugins\n", 17Loaded 0 plugins
) = 17
⋮
None of the packaging files are fixed (yet).
Yes, I saw that. I started to add files that I thought I would need.
Did you also edit codeblocks-common.install, so con_compiler.zip gets installed with the package ?
You are right, I forgot this one. Sorry for the inconvenience caused.
Now, the error with the missing plugin file is gone. But I have run into the next one. Somehow there seems to be an endless loop.
#0 0x00007ffff4e54f95 in __getdents (fd=<optimized out>, buf=0x2950d48 "\241$\001", nbytes=32768) at ../sysdeps/unix/sysv/linux/getdents.c:105
#1 0x00007ffff4e54972 in __readdir (dirp=0x2950d20) at ../sysdeps/unix/readdir.c:66
#2 0x00007ffff5dcd106 in wxDirData::Read(wxString*) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#3 0x00007ffff5dd2055 in wxMimeTypesManagerImpl::LoadKDEAppsFilesFromDir(wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#4 0x00007ffff5dd2135 in wxMimeTypesManagerImpl::LoadKDEAppsFilesFromDir(wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#5 0x00007ffff5dd2135 in wxMimeTypesManagerImpl::LoadKDEAppsFilesFromDir(wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#6 0x00007ffff5dd2135 in wxMimeTypesManagerImpl::LoadKDEAppsFilesFromDir(wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
⋮
#1012 0x00007ffff5dd2135 in wxMimeTypesManagerImpl::LoadKDEAppsFilesFromDir(wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1013 0x00007ffff5dd2135 in wxMimeTypesManagerImpl::LoadKDEAppsFilesFromDir(wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1014 0x00007ffff5dd2135 in wxMimeTypesManagerImpl::LoadKDEAppsFilesFromDir(wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1015 0x00007ffff5dd2135 in wxMimeTypesManagerImpl::LoadKDEAppsFilesFromDir(wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1016 0x00007ffff5dd2135 in wxMimeTypesManagerImpl::LoadKDEAppsFilesFromDir(wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1017 0x00007ffff5dd9370 in wxMimeTypesManagerImpl::Initialize(int, wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1018 0x00007ffff5dd9884 in wxMimeTypesManagerImpl::InitIfNeeded() () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1019 0x00007ffff5dd9f15 in wxMimeTypesManagerImpl::GetFileTypeFromExtension(wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1020 0x00007ffff5da1cf8 in wxMimeTypesManager::GetFileTypeFromExtension(wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1021 0x00007ffff5d8a330 in wxFileSystemHandler::GetMimeTypeFromExt(wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1022 0x00007ffff5d8bec0 in wxLocalFSHandler::OpenFile(wxFileSystem&, wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1023 0x00007ffff5d8afc0 in wxFileSystem::OpenFile(wxString const&, int) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1024 0x00007ffff5d8f3b3 in wxArchiveFSHandler::OpenFile(wxFileSystem&, wxString const&) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1025 0x00007ffff5d8afc0 in wxFileSystem::OpenFile(wxString const&, int) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1026 0x00007ffff7af7402 in PluginManager::ReadManifestFile (this=this@entry=0x6cc260, pluginFilename=..., pluginName=..., infoOut=infoOut@entry=0x0) at pluginmanager_base.cpp:249
#1027 0x00007ffff7afae0c in PluginManager::ScanForPlugins (this=0x6cc260, path=...) at pluginmanager_base.cpp:500
#1028 0x000000000040887f in CodeBlocksApp::BatchJob (this=this@entry=0x65c610) at app.cpp:926
#1029 0x000000000040a6f0 in CodeBlocksApp::OnInit (this=0x65c610) at app.cpp:705
#1030 0x00007ffff5d924d4 in wxEntry(int&, wchar_t**) () from /usr/lib/x86_64-linux-gnu/libwx_baseu-2.8.so.0
#1031 0x0000000000407072 in main (argc=4, argv=<optimized out>) at app.cpp:297
I will have a deeper look into it in the next days. Maybe I am missing some debugging symbols.
Thank you very much for your help and your quick answers.
Hmmm, I have to following files there:
$ ls /usr/lib/codeblocks_con/plugins/
libcompiler.so
$ ls /usr/lib/codeblocks/plugins/
libabbreviations.so libcb_koders.so libcompiler.so libDoxyBlocks.so libFileManager.so liblib_finder.so libRegExTestbed.so libtodo.so
libastyle.so libCccc.so libcopystrings.so libdragscroll.so libheaderfixup.so libMouseSap.so libReopenEditor.so libToolsPlus.so
libautosave.so libclasswizard.so libCppCheck.so libEditorConfig.so libhelp_plugin.so libNassiShneiderman.so libscriptedwizard.so libValgrind.so
libAutoVersioning.so libcodecompletion.so libCscope.so libEditorTweaks.so libHexEditor.so libopenfileslist.so libSpellChecker.so libwxSmithAui.so
libBrowseTracker.so libcodesnippets.so libdebugger.so libenvvars.so libIncrementalSearch.so libProfiler.so libSymTab.so libwxsmithcontribitems.so
libbyogames.so libcodestat.so libdefaultmimehandler.so libexporter.so libkeybinder.so libprojectsimporter.so libThreadSearch.so libwxsmith.so
$ ls /usr/share/codeblocks_con/
compiler.zip scripts
$ ls /usr/share/codeblocks
abbreviations.zip cb_koders.zip compiler.zip DoxyBlocks.zip FileManager.zip IncrementalSearch.zip MouseSap.zip ReopenEditor.zip start_here.zip ToolsPlus.zip
astyle.zip Cccc.zip copystrings.zip dragscroll.zip headerfixup.zip keybinder.zip NassiShneiderman.zip resources.zip SymTab.zip Valgrind.zip
autosave.zip classwizard.zip CppCheck.zip EditorConfig.zip help_plugin.zip lexers openfileslist.zip scriptedwizard.zip templates wxSmithAui.zip
AutoVersioning.zip codecompletion.zip Cscope.zip EditorTweaks.zip HexEditor.zip lib_finder Profiler.zip scripts ThreadSearch.zip wxsmithcontribitems.zip
BrowseTracker.zip codesnippets.zip debugger.zip envvars.zip icons lib_finder.zip projectsimporter.zip SpellChecker tips.txt wxsmith.zip
byogames.zip codestat.zip defaultmimehandler.zip exporter.zip images manager_resources.zip RegExTestbed.zip SpellChecker.zip todo.zip
But when starting the GUI with codeblocks, the Plugins -> Manage plugins... dialog is empty. There are no plugins. I am not able to create any projects (new project dialog is empty, too). I already tried to merge the Subversion trunk (no changes for me there) and to delete my ~/.codeblocks folder.
After startup, the Code::Blocks tool view shows:
...
Loading lexer_vhdl
Loading lexer_postscript
Configured 0 tools
Scanning for plugins in /home/benjamin/.codeblocks/share/codeblocks/plugins
Loaded 0 plugins
Scanning for plugins in /usr/share/codeblocks/plugins
Running startup script
Script plugin registered: Find Broken Files plugin
Script/function 'edit_startup_script.script' registered under menu '&Settings/-Edit startup script'
The path "/usr/share/codeblocks/plugins" does not exist. Is that perhaps a problem because of the Debian packages? Should I try to compile and use it directly without the packaging in between?
Thank you for fixing it.
I have now compiled Code::Blocks against the debug version of the wxBase library (from Debian package libwxbase2.8-dbg). This makes debug symbols available. I first looked into the issues I reported some posts ago (with many wxMimeTypesManagerImpl::LoadKDEAppsFilesFromDir calls in stack trace). It showed that the program went into the directory "/home/benjamin/.local/share/applications/wine/Programme/Drakensang", which contained files with special characters. It then tried to append an empty directory name, which resulted in #7 0x00007ffff5a8755f in wxOnAssert (szFile=0x7ffff5b592e8 L"../src/common/filename.cpp", nLine=1618, szFunc=0x7ffff5b59e00 "IsValidDirComponent", szCond=0x7ffff5b592a8 L"wxAssertFailure",
szMsg=0x7ffff5b59980 L"empty directory passed to wxFileName::InsertDir()") at ../src/common/appbase.cpp:711
#8 0x00007ffff5ab9f01 in wxFileName::IsValidDirComponent (dir=...) at ../src/common/filename.cpp:1618
#9 0x00007ffff5aba04a in wxFileName::AppendDir (this=0x7fffffffca60, dir=...) at ../src/common/filename.cpp:1639
#10 0x00007ffff5b1e608 in wxMimeTypesManagerImpl::LoadKDEAppsFilesFromDir (this=0x7096d0, dirname=...) at ../src/unix/mimetype.cpp:1088
with the debug libraries. To solve this problem, I simply removed the "wine" directory.
Now I have run in the next problem:
Program received signal SIGTRAP, Trace/breakpoint trap.
0x00007ffff57d6efb in raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:41
41 ../nptl/sysdeps/unix/sysv/linux/pt-raise.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0 0x00007ffff57d6efb in raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:41
#1 0x00007ffff5a87479 in wxTrap () at ../src/common/appbase.cpp:674
#2 0x00007ffff5a8775a in DoShowAssertDialog (msg=...) at ../src/common/appbase.cpp:766
#3 0x00007ffff5a87017 in wxAppTraitsBase::ShowAssertDialog (this=0x65e970, msgOriginal=...) at ../src/common/appbase.cpp:557
#4 0x00007ffff5a86f03 in wxConsoleAppTraitsBase::ShowAssertDialog (this=0x65e970, msg=...) at ../src/common/appbase.cpp:507
#5 0x00007ffff5a878fa in ShowAssertDialog (szFile=0x7fffede2a858 L"/usr/include/wx-2.8/wx/string.h", nLine=796, szFunc=0x6fd818 L"Last", szCond=0x7fffede2c4c8 L"!empty()", szMsg=0x7fffede2c450 L"wxString: index out of bounds",
traits=0x65e970) at ../src/common/appbase.cpp:836
#6 0x00007ffff5a86dbd in wxAppConsole::OnAssertFailure (this=0x65b740, file=0x7fffede2a858 L"/usr/include/wx-2.8/wx/string.h", line=796, func=0x6fd818 L"Last", cond=0x7fffede2c4c8 L"!empty()",
msg=0x7fffede2c450 L"wxString: index out of bounds") at ../src/common/appbase.cpp:445
#7 0x00007ffff5a8755f in wxOnAssert (szFile=0x7fffede2a858 L"/usr/include/wx-2.8/wx/string.h", nLine=796, szFunc=0x7fffede30cb8 "Last", szCond=0x7fffede2c4c8 L"!empty()", szMsg=0x7fffede2c450 L"wxString: index out of bounds")
at ../src/common/appbase.cpp:711
#8 0x00007fffedd9806b in Last (this=0x7fffffffd9a0) at /usr/include/wx-2.8/wx/string.h:796
#9 CompilerGCC::SetupEnvironment (this=this@entry=0x768800) at ../compilergcc.cpp:797
#10 0x00007fffedd98a86 in CompilerGCC::SwitchCompiler (this=this@entry=0x768800, id=...) at ../compilergcc.cpp:934
#11 0x00007fffedd98b39 in CompilerGCC::CheckProject (this=this@entry=0x768800) at ../compilergcc.cpp:981
#12 0x00007fffedd99392 in CompilerGCC::DoRecreateTargetMenu (this=this@entry=0x768800) at ../compilergcc.cpp:1445
#13 0x00007fffedd9964d in CompilerGCC::UpdateProjectTargets (this=0x768800, project=0xdb9740) at ../compilergcc.cpp:1575
#14 0x00007ffff7aef240 in Manager::ProcessEvent (this=<optimized out>, event=...) at manager.cpp:192
#15 0x00007ffff7b0a37b in ProjectManager::SetProject (this=this@entry=0xf38bc0, project=project@entry=0xdb9740, refresh=refresh@entry=true) at projectmanager.cpp:531
#16 0x00007ffff7b0a840 in ProjectManager::LoadProject (this=0xf38bc0, filename=..., activateIt=true) at projectmanager.cpp:837
#17 0x00000000004083ed in CodeBlocksApp::BatchJob (this=this@entry=0x65b740) at app.cpp:950
#18 0x0000000000409cf9 in CodeBlocksApp::OnInit (this=0x65b740) at app.cpp:710
#19 0x00007ffff5ac7ee6 in wxEntry (argc=@0x7ffff5dd9cb0: 4, argv=0x64a3a0) at ../src/common/init.cpp:432
#20 0x00007ffff5ac7fdd in wxEntry (argc=@0x7fffffffdffc: 4, argv=0x7fffffffe0e8) at ../src/common/init.cpp:460
#21 0x0000000000406a02 in main (argc=4, argv=<optimized out>) at app.cpp:297
(gdb) sel 9
(gdb) frame
#9 CompilerGCC::SetupEnvironment (this=this@entry=0x768800) at ../compilergcc.cpp:797
797 while ( (masterPath.Last() == '\\') || (masterPath.Last() == '/') )
(gdb) print masterPath
$1 = {<wxStringBase> = {static npos = 18446744073709551615, m_pchData = 0x7ffff5b6dcf8 L""}, <No data fields>}
(gdb) sel 11
(gdb) frame
#11 0x00007fffedd98b39 in CompilerGCC::CheckProject (this=this@entry=0x768800) at ../compilergcc.cpp:981
981 SwitchCompiler(m_pProject->GetCompilerID());
(gdb) print m_pProject->GetCompilerID()
$2 = (const wxString &) @0xdb9900: {<wxStringBase> = {static npos = 18446744073709551615, m_pchData = 0x7127e8 L"gcc"}, <No data fields>}
I can look deeper into it. Do you have a spontaneous idea?
Can you try this patch:
Index: src/plugins/compilergcc/compilergcc.cpp
===================================================================
--- src/plugins/compilergcc/compilergcc.cpp
+++ src/plugins/compilergcc/compilergcc.cpp
@@ -794,7 +794,8 @@
// Get configured masterpath, expand macros and remove trailing seperators
wxString masterPath = compiler->GetMasterPath();
Manager::Get()->GetMacrosManager()->ReplaceMacros(masterPath);
- while ( (masterPath.Last() == '\\') || (masterPath.Last() == '/') )
+ while ( !masterPath.IsEmpty() &&
+ ((masterPath.Last() == '\\') || (masterPath.Last() == '/') ))
masterPath.RemoveLast();
// Compile new PATH list...
EDIT:
patch updated (should be more robust)