> On May 19, 2020, at 6:44 PM, Chris Good <goodchri...@gmail.com> wrote:
> 
> Hi gurus,
> 
> 1. src/gnucash/libgnucash/app-utils/gnc-gsettings.c
> gnc_gsettings_load_backend() contains:
>           /* The gsettings backend only works in an installed environment.
>            * When called from the source environment (for testing
> purposes)
>            * simply return.
>            */
>           if (g_strcmp0 (g_getenv ("GNC_UNINSTALLED"), "1") == 0)
>               return;
> 
> I don't think that is true anymore as there is no GNC_UNINSTALLED in the
> environment file and the schemas seem to be compiled to
>  build/share/glib-2.0/schemas/gschemas.compiled
> 
> This code was added in
> https://github.com/Gnucash/gnucash/commit/31c7396e15715d6e178b8fe727f61dabe2
> 6eca53#diff-83a994aa1576a20801bf5ec6475d5a90
>       gjanssens committed on Dec 3, 2013
>       The preferences backend can't work from the source environment
> because
>       it's schemas won't be compiled. This situation is only relevant for
> testing,
>       which is done from the source (or build) tree.
>       Note that a few preferences are needed by the xml backend. If no
> preferences
>       backend is loaded, some sane defaults will be used instead. Again
> this should
>       only matter for testing, in which case the real preferences are not
> relevant
>       anyway.
> 
> Should the above code be removed?
> 
> 2. I've debugged (Linux) and found there doesn't seem to be any bug in the
> GnuCash code and that there is some sort of disconnect between
> writing a gsettings (dconf) setting and reading it. I've put in debug
> statements right after writing a setting, which reads it again, and it gets
> an old value.
> 
> I found there is a g_settings_sync() that is supposed to wait until all
> writes (which need a D-Bus session bus) have occurred.
> Putting that in has not helped. I found on the internet several pages saying
> g_settings_sync() is not needed if there is a gtk main loop and as I have
> seen that during debugging, I guess it is not needed...
> 
> I have compiled glib with optimization off so I can debug (the problem still
> exists) but I really have no idea of what it is supposed to do. I can see
> g_settings_get_int() reading something like a hash table and getting the
> wrong value. It doesn't seem to executing anything I can identify as
> dconf???
> 
> Any suggestions please?

Chris,

No, it should not be removed. As the commit summary indicates it's necessary 
for running tests.

GNC_UNINSTALLED, along with its companion GNC_BUILDDIR, is set in 
common/cmake-modules/GncAddSchemeTargets.cmake, 
common/cmake-modules/GncAddTest.cmake, bindings/python/tests/runTests.py and 
several Scheme files for running tests. It's also needed for running reports 
without first installing, for which you can say
  GNC_UNINSTALLED=1 GNC_BUILDDIR=`pwd` bin/gnucash
from a prompt in the main builddir.

Since bug 797222 is about a preference not taking effect until after a program 
restart you'll obviously need functional GSettings to debug it. It *is* 
possible that the bug is in GSettings, but in most cases preference changes 
take effect immediately so it seems unlikely to me that that's the case.


Regards,
John Ralls

_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to