Changing standard reports

Geert Janssens geert.gnucash at kobaltwit.be
Wed Oct 19 10:31:34 EDT 2016


On Wednesday 19 October 2016 10:28:13 David T. via gnucash-devel wrote:
> Hello,
> 
> Out of curiosity, how might one go about changing the contents of one
> of the standard reports included with GnuCash? I ask because I was
> interested in trying to change the General Ledger and General Journal
> reports to include more meaningful names in the window heading (see
> bugs 773168 and 773169). However, when I tried changing the text
> value of regrptname in the scm files for these reports, the GnuCash
> application subsequently failed to load (as in crashed on startup).
> Moreover, restoring the original text value or even the original scm
> file failed to restore operations; I had to reinstall the
> application. I was under the impression that the scm files were
> loaded at startup, but obviously I am mistaken.
> 
> TIA,
> David

Hi David,

The general principle is exactly that: the scm file is loaded at 
startup.

There are additional details depending on your platform and version of 
guile in use.

When your installation of gnucash is built for guile 1.8.x, the scm 
files are indeed loaded at startup and interpreted on the fly. So on 
most platforms, replacing the scm file with a modified one in this 
scenario should have gnucash simply read the new scm file at startup. 
The one wrinkle I can think of in this case is on Windows: whatever in 
installed in the Program Files* directories can't just simply be 
modified. Windows uses some kind of virtual filesystem in that directory 
to manage user-made changes (even if done with admin rights). This 
virtual file system doesn't seem to play well with gnucash. I have seen 
other reports of failures when attempting to manually edit files in 
here. I'm not on Windows myself, so I don't know much more detail about 
this.

Aside from Windows, most other platforms (including OS X) have switched 
to guile 2.x for use with gnucash. In this case the load scenario is 
slightly different because guile 2 compiles the scm files and reads the 
compiled files at load time instead of the scm (source) files. The 
gnucash source tree is configured such that all scm files are already 
compiled during the build of gnucash. So when running gnucash, the 
compiled scm files are already available and will be used. When you 
change an scm source file (as you did), guile will detect this and 
attempt to recompile it. It appears this part fails on your system for 
some reason. Copying the original file back will probably still trigger 
the attempt to recompile, because copying a file changes the modified 
time, which is exactly what guile checks to determine if a recompile is 
needed. That's why in your case only a reinstall fixed it.

Unfortunately this doesn't explain why the recompile failed. Perhaps 
John has more insight in this on OS X.

Regards,

Geert


More information about the gnucash-devel mailing list