forked from manfredu/gnucash
/
HACKING
142 lines (93 loc) · 4.4 KB
/
HACKING
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
Hacking Guidelines
==================
This document is an introduction to hacking on GnuCash.
Related Documents
-----------------
In addition to this file, you should read the README file, which
explains the details of getting the CVS source, building GnuCash,
and creating patches for submission.
The src/doc/design directory contains a preliminary design document
which you should read as well. You should also feel free to hack on
the design document.
Coding Style Conventions
------------------------
General:
* When modifying a file, the style convention in that file should be
followed.
* When creating a new file, the style of existing files should be
followed.
* When creating lots of new files in a new directory, you may use
your own coding standards, but please try to stick as closely as
possible to the GNU coding standards.
* Do not submit patches that consist of (gratuitous) stylistic changes.
C:
* Use ISO C.
* Use glib memory routines where possible. This means you should be
using g_malloc(), g_new(), g_free(), etc., instead of malloc(),
free(), etc. Do not mix glib memory calls with libc calls!
* Where possible, use glib data abstractions instead of rolling your
own. Glib linked lists and pointer arrays are very convenient and
have been extensively used and tested.
* All gnucash functions and global variables are prefixed with gnc_
* Use static functions whenever possible
* Use const whenever possible
Scheme:
* All gnucash functions and global variables are prefixed with gnc:
* All global variables are enclosed in ** (i.e. gnc:*load-path*)
* All private functions are enclosed in __ (i.e. gnc:_do-not-call_)
* All C functions wrapped with g-wrap have dashes in place of underscores.
(xaccSplitGetBalance --> gnc:split-get-balance).
Dave Peticolas <dave@krondo.com>
August 22, 2000
=====================================================================
TIPS AND HINTS
=====================================================================
Starting Gnucash from the build tree:
-------------------------------------
To run gnucash from your build tree:
-- edit ./src/bin/overrides/gnucash and replace gnucash-env with
gnucash-build-env
-- then start gnucash by saying ./src/bin/overrides/gnucash
-- Make sure you undo this change before installing gnucash
Getting Trace Messages From GnuCash:
------------------------------------
Note that piping stdout from gnucash to a file causes gnucash to crash.
Don't know why, this is a bug that needs to be fixed. Here's another
way to get trace messages into a file:
-- edit src/engine/gnc-trace.c, adjust values in the array
gnc_log_modules[] to what you want to have for a given module.
-- edit gnc_log_init() to fopen() the log file where you want
messages to go to.
Starting GnuCash in GDB
-----------------------
To run gdb on an installed version of gnucash (installed in /usr/local/bin:)
% gnucash-env gdb /usr/bin/guile
[gdb output]
% gdb> run -e main -s /usr/local/libexec/gnucash/overrides/gnucash --g-fatal-warnings
To run gdb on the version in your build tree:
% ./src/bin/overrides/gnucash-build-env gdb /usr/bin/guile
[gdb output]
% gdb> run -e main -s ./src/bin/overrides/gnucash --g-fatal-warnings
Using Electric Fence with GnuCash
---------------------------------
% configure --enable-efence
(except this doesn't actually enable efence :-( need to hack
configure.in and add $LIBS = -lefence and re-run ./autogen.sh)
Don't know why, efence does not currently work with gnucash:
I get a bunch of errors:
warning: Cannot initialize thread debugging library: unknown thread_db error '22'
If you know how to fix this, please update tehse instructions.
Using Valgrind with GnuCash
---------------------------
-- run ./src/bin/overrides/gnucash-valgrind
However, I did not find valgrind to be useful. It reported a bunch of
guile bugs, some g_has_table bugs, and then the program exited prematurely
for no appearenet reason. :-(
For the moment, use the supressions in lib/gnucash_valgrind.supp.
This file needs to be cleaned up in two ways:
1/ There are a bunch of duplicate supressions in the file.
* The supressions in place were auto-generated by valgrind itself
[--gen-suppressions=yes], and it makes no effort to output the
suppression only once.
2/ There are a bunch of suppressions which need to not be supressions, but
instead just not be generated by valgrind.