On Oct 19, 2013, at 12:42 PM, Mike Alexander <[email protected]> wrote:

> --On October 19, 2013 7:27:20 AM -0700 John Ralls <[email protected]> wrote:
> 
>> 
>> On Oct 19, 2013, at 1:03 AM, Geert Janssens
>> <[email protected]> wrote:
>> 
>>> Hi Mike,
>>> 
>>> I don't know much about the internals of Gtk/Gdk either.
>>> 
>>> You refer to a missing system schema. Perhaps this is because
>>> GnuCash  now overwrites the XDG_DATA_DIRS environment variable in
>>> some cases.  This is done in order to find the GnuCash specific
>>> schemas if GnuCash is  not installed in /usr.
>>> 
>>> Can you perhaps run a git bisect to pinpoint the exact commit that
>>> first  shows this error ? That would help to eliminate some
>>> speculation.
>> 
>> I dug through the code a bit and discovered that
>> gdk_pixbuf_new_from_file does depend upon a function called
>> xdg_run_command_on_dirs (located in glib/gio/xdgmime/xdgmime.c if you
>> want to go look at it) which tries to find the mime files in the
>> following directories (in order): $XDG_DATA_HOME, $HOME/.local/share,
>> $XDG_DATA_DIRS. If it gets to $XDG_DATA_DIRS and it's not defined, it
>> set it to /usr/local/share:/usr/share.
>> 
>> That last bit is probably the problem. It makes sense that in some
>> cases users might want to override the default data directories and
>> prevent them being searched, but perhaps glib should warn that that's
>> not the case.
>> 
>> Mike, do you have XDG_DATA_DIRS set in your environment? Where are
>> the mime and mime-info directories installed on your system? If
>> you're not using it for something else, you could try pointing
>> XDG_DATA_HOME at that directory.
> 
> Thanks for the hints.  They made the problem easy to find.  The change in 
> r23225 on October 7 is causing the problem.  It made GnuCash set 
> XDG_DATA_DIRS if it is being installed in a non-standard location. 
> Unfortunately it sets it to something that won't work on my machine.
> 
> I use MacPorts to install GnuCash's dependencies, but not GnuCash itself.  
> This is much easier than trying to install all the dependencies by hand.  
> MacPorts installs to /opt/local and its version of xdg_run_command_on_dirs 
> knows to look in /opt/local/share so everything works fine if XDG_DATA_DIRS 
> is not set.  Unfortunately the GnuCash Makefile doesn't know about this and 
> assumes the normal default location of /usr/local/share.
> 
> Ideally I'd like to fix this by changing the Makefile to use the default 
> location that will be used by glib, but I can't figure out how to get glib to 
> tell me the default in the Makefile.  Instead I changed it to use the compile 
> time value of XDG_DATA_DIRS as a default if it is set.  If it is not set, the 
> path will have a double colon in it, but that shouldn't hurt.  I'll check 
> this in if no one sees any reason not to.
> 
> I noticed, by the way, that environment.in uses semi-colons for path 
> separaters, even on Unix.  Will this work?  For example it sets PATH to
> 
>  PATH={GNC_BIN};{PATH}
> 
> Is environment.in used on Windows?  If so perhaps we need to use the correct 
> path separator depending on the platform.
> 
>       Mike

Mike,

If you mean you did

-     echo 
"XDG_DATA_DIRS=$(prefix)/share:{XDG_DATA_DIRS}:/usr/local/share/:/usr/share/" 
>> [email protected]; \
+     echo 
"XDG_DATA_DIRS=$(prefix)/share:${XDG_DATA_DIRS}:/usr/local/share/:/usr/share/" 
>> [email protected]; \ 

then I think that's right and what Geert meant to do in the first place.

Environment.in is munged, then parsed in gnucash-bin.c. I don't think that the 
separators are passed as-is to the OS.

Regards,
John Ralls



_______________________________________________
gnucash-devel mailing list
[email protected]
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to