File: HACKING.txt

package info (click to toggle)
speedcrunch 0.10.1-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 5,268 kB
  • ctags: 2,147
  • sloc: ansic: 14,991; cpp: 11,111; sh: 31; makefile: 20
file content (137 lines) | stat: -rw-r--r-- 4,960 bytes parent folder | download | duplicates (3)
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
HACKING file for SpeedCrunch


BUGS AND FEATURE REQUEST
----------------------------

The issue tracker location is http://code.google.com/p/speedcrunch/issues/list.

Report any known bugs and other annoyances as a new issue in our issue tracker.
This makes sure that the report will not get lost.

Contributed patch can be filed as an issue, with the patch attached to the
issue.

For a feature request, file it also as a new issue but tag is with
"Label:Enhancement" (instead of "Label:Defect").

If possible, tag every issue with appropriate milestone, e.g. "Milestone:0.8" is
this feature is supposed to be fixed/implemented in the upcoming version 0.8. If
the targeted milestone is not available yet, add it using tab Administer, Issue
Tracking.


TEST SUITE
----------

In order to catch regressions as early as possible, automatic test suite is
already implemented (and should always be updated).

At the moment, it comprises of two programs: testhmath and testevaluator.
These programs are available only if you build using CMake. Generally it is
recommended to run these both test programs as often as possible, preferably
after changing something and before committing the changes.

New feature which breaks the test suite or without a corresponding test case
is subjected to be reverted.

Program 'testhmath' checks all the functionalities of the core math library.
Some corner-cases are necessary to ensure the library is well behaved.
If you change hmath.h/hmath.cpp, make sure to run 'testhmath' to verify that
your change does not break anything. If you add new feature(s), add the proper
feature(s) tests into testhmath.cpp.

Program 'testevaluator' mainly checks expression parser and evaluator. This
includes all the supported built-in functions. If you add a new function,
make sure also to add test cases for that function (the more, the better)
in testevaluator.cpp.


REPOSITORY
------------

/trunk is the main development tree. This is considered unstable. Features
development should happen here.

/branches is for the development of stable versions. A branch, like
/branches/0.8, is created before making the very first release (it may be alpha,
beta, or even .0 release) of version 0.8. This can be prepared by the following
steps:
  mkdir branches/0.8
  svn copy trunk branches/0.8

/tags is for tagging a release version. Think of it as a snapshot of a branch.
Nothing should be committed to this directory, thus bug fixes should be applied
the appropriate branch. Furthermore, each release must have exactly one tag.
For example, there are release like version 0.8-alpha, 0.8-beta, 0.8, 0.8.1
then the /tag directory may look like this:
  /tags/0.8-alpha
  /tags/0.8-beta
  /tags/0.8
  /tags/0.8.1
Tagging the repository can be done like the following steps:
  svn copy branches/0.8 tags/0.8-beta

/www stores files for the web site. Ariya Hidayat will synchronize his server
content (http://www.speedcrunch.org) with this directory every now
and then.


WEB SITE
---------
Files for the web site is stored in the Subversion repository under directory
/www.

When making changes to HTML files, please make sure that the HTML code is still
valid. Use http://validator.w3.org/ to verify it.

For convenience, the ChangeLog is linked directly to the file in the repository,
e.g. http://speedcrunch.googlecode.com/svn/branches/0.7/ChangeLog

The web site pages must be updated just prior to make a release. See in details
under the topic 'Preparing a release' below.

The web site can also updated without a release. This is the case e.g. when
putting a new interesting screenshot or adding a question (and answer) in FAQ
section.


PREPARING A RELEASE
---------------------
This is a checklist of things that must be done to prepare a release:

* Make sure that ChangeLog is up to date

* For the first release of a version (e.g. version 0.8-beta, not version 0.8,
  0.8.1, 0.8.2), create a branch (e.g /branch/0.8).

* Tag the repository with a good name, e.g /tags/0.8-beta and change version
  numbers in CMakeLists.txt and crunch.pro.

* Create the source code package, e.g. speedcrunch-0.8-beta.tar.gz. Place it
  in the download location.

* Calculate the MD5 sum of the source code package

* Notify packagers to make them aware of the new release.

* Update the website. Most important is the link to new source code package
  and its MD5 sum.

  For a stable release (e.g. 0.8 or 0.8.1):
    update "download version xx" link in all pages
    update main content in download.htm
    add or change features description in features.htm
    create new screenshots for screenshots.htm
    update link to ChangeLog in the sidebar of download.htm

  For a non-stable release (e.g. 0.8-alpha, 0.8-beta, 0-8-RC)
    update sidebar in download.htm

PORTABLE VERSION
----------------

Build the "portable version" using the following command:

  cmake -DCMAKE_CXX_FLAGS:STRING="-DSPEEDCRUNCH_PORTABLE" <path to source directory>\src