On Sunday 22 February 2015 19:16:31 Reinhard Tartler wrote:
> BTW,
> https://bugs.launchpad.net/ubuntu/+source/gnucash/+bug/1369273/commen
> ts/19 is a comment from Geert Janssens, one of the gnucash developers,
> who basically confirms this issue. I'm CC'ing him with this email.
> Geert, maybe you can share your opinion on this?
> 
I have said most of it in the referred lauchpad bug already but I'll try to 
elaborate.

Reading the launchpad bug and this one I see a lot of confusion about what is 
going on.

Quick summary:
There are two bugs reported in lp:1369273:
1. gnucash crashes on exit
2. python module exits with an uncaught exception
(There was a third bug reported even, which I'll ignore here as it's unrelated.)

The first one has nothing to do with python at all. It's a bug in gnucash in 
the way it interacts 
with the most recent version of libdbi. This bug has been fixed in gnucash 
2.6.4 by this commit:
https://github.com/Gnucash/gnucash/commit/75114b7c6273

The second is not a gnucash crash in the sense that the program stops working. 
Only an 
optional plugin fails to load. It's unfortunate this gets reported (by apport 
on Ubuntu?) as 
"gnucash crashed with..." because that is inaccurate and confusing.

The confusion even continues on into the changelog (repeated in comment #20 on 
the lp bug):
+ No longer crashes on exit when python-gnucash is installed.

To repeat: the crash on exit had nothing to do with python-gnucash.


Another source of confusion seems to be in the definition of "the gnucash 
python module".

In the gnucash community we talk of gnucash modules. The python bindings are 
one such 
module. A "Gnucash module" in this context is a C shared library together with 
any support files 
this library needs. The gnucash module libraries all have names starting with 
"libgncmod...". 
The module that implements the python bindings is called "libgncmod-python.so". 
To function it 
also needs some python code, which in a python context is called a module as 
well. This is the 
python module called "gnucash" which is also part of the gnucash source 
distribution. It's this 
python module that is packaged as "python-gnucash".

As said before the python bindings are optional in gnucash. It will work just 
fine without it.

The subtle but important thing to understand here is that optional refers to 
"libgncmod-
python.so". The python module "gnucash" is not a direct dependency of the 
gnucash 
application at all. Rather it's a dependency of this optional 
libgncmod-python.so. And a 
mandatory dependency of that library even.

That means gnucash is designed to work happily even if libgncmod-python.so is 
not available. 
However if available libgncmod-python.so *only* works if the accompanying 
"gnucash" python 
module is present as well.

In other words you can separate libgncmod-python.so from gnucash but you can't 
separate the 
python module "gnucash" from libgncmod-python.so.

The packaging in debian and ubuntu doesn't reflect this. These packages do 
separate the 
python module "gnucash" from libgncmod-python.so. In debian the net effect is 
an exception 
message in the logs, apport on ubuntu makes more of a deal out of it.

That's why I suggested this to be a packaging bug and proposed a way to solve 
it. Again I'm not 
a packager myself so there may be packaging specific reasons my suggestion 
can't be 
implemented.

Reply via email to