Source directory restructuring complete

John Ralls jralls at
Wed Aug 16 16:52:57 EDT 2017

> On Aug 16, 2017, at 12:21 PM, John Ralls <jralls at> wrote:
>> On Aug 14, 2017, at 6:57 PM, Geert Janssens <geert.gnucash at> wrote:
>> Hi,
>> I have just pushed my directory restructuring branch to master as I announced 
>> last week.
>> IMPORTANT: You should wipe out your existing build/install directory after 
>> pulling this new master. And if you are building in the source tree (which we 
>> don't advise) instead of having a separate build directory, be sure to run 
>> "make distclean" there *BEFORE* pulling this new master.
>> Then proceed as usual, that is run for 
>> an autotools 
>> based build or cmake-with-options/[make/ninja(-build)] for a cmake based 
>> build.
>> The new directory structure is roughly as follows:
>> * data
>> Non-code items that get installed (like account charts, check formats, 
>> pixmaps)
>> * libgnucash
>> The core libraries which define our internal data structures and code to 
>> handle them. This holds the core-utils, gnc-module, engine (including qof), 
>> app-utils and a few smaller ones
>> * gnucash
>> The code for the gui application built on top of libgnucash. Here you'll find 
>> the directories gnome, gnome-utils, report, html, import-export,...
>> * bindings
>> Currently only the python bindings are here, in the future the guile bindings 
>> should be migrated here as well.
>> * common
>> Low level support code, mostly for debugging and testing (debug, test-
>> core,...)
>> In the restructuring, the cutecash project has been removed together with the 
>> gtkmm support library.
>> A few other directories have been eliminated and their content moved to other 
>> locations:
>> - src/bin -> gnucash (no more separate subdirectory)
>> - src/optional: the python-bindings subdirectory has been moved to bindings, 
>> the only other subdir was gtkmm which has been dropped
>> - src/plugins: the two real "plugins' in there were in fact import modules, so 
>> they have been moved to import-export. The example subdirectory (which is 
>> never built) is now a subdirectory of libgnucash/gnc-module
>> Please report any problems you may experience with this new work.
> On Mac I get a build error while compiling the standard-reports (cmake/ninja build):
>  ice-9/boot-9.scm:109:20: no code for module (gnucash report standard-reports)
> I fixed this temporarily by making the link by hand, but it seems that we need a custom target for the copy commands at the bottom of gnucash/report/standard-reports/CMakeLists.txt and the compilation of the other reports there needs to be dependent on that target.

Later, when trying to run GnuCash I found that libgncmod-backend-dbi.dylib didn't load because the directory being passed in was "dbi" instead of "gnucash". 
--- a/libgnucash/engine/gnc-engine.c
+++ b/libgnucash/engine/gnc-engine.c
@@ -74,9 +74,9 @@ gnc_engine_init_part2()
     } libs[] =
 #if defined( HAVE_DBI_DBI_H )
-        { "dbi", "gncmod-backend-dbi", TRUE },
+        { "gnucash", "gncmod-backend-dbi", TRUE },
-        { "xml", "gncmod-backend-xml", TRUE },
+        { "gnucash", "gncmod-backend-xml", TRUE },
         { NULL, FALSE }
     }, *lib;

fixes the problem and I think it will affect only Mac builds, but can someone check it on Linux to make sure before I commit it?

John Ralls

More information about the gnucash-devel mailing list