-
Notifications
You must be signed in to change notification settings - Fork 2
/
README.GIT
272 lines (188 loc) · 9.16 KB
/
README.GIT
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
Anonymous CVS Access
====================
Anonymous CVS access is now available to SILC CVS repository. The
repository includes everything related to SILC project; source codes,
documentation and web pages.
Also note that this is the closest to real time development you can get
thus you cannot expect that the source tree would work or even compile.
While it is our intention that the trunk would always at least compile
there might be situations when it will not.
Howto Checkout The Source Tree
==============================
The repository can be checked out by using anonymous pserver with CVS.
There are no password restrictions in the SILC anonymous CVS repository.
For those who are using sh/ksh/bash the check out is done as follows:
export CVSROOT=:pserver:cvs@cvs.silcnet.org:/cvs/silc
cvs login
cvs co silc
For those who are using csh/tcsh the check out is done as follows:
setenv CVSROOT :pserver:cvs@cvs.silcnet.org:/cvs/silc
cvs login
cvs co silc
If you don't want to set $CVSROOT environment variable you can set the
path to the cvs as command line options:
cvs -d:pserver:cvs@cvs.silcnet.org:/cvs/silc login
cvs -d:pserver:cvs@cvs.silcnet.org:/cvs/silc co silc
What ever method you decide to use, after you have done cvs login you will
be prompted for password:
CVS password: silc
Type the password "silc" and press Enter.
The actual SILC source tree is checked out using the cvs co silc command,
described above. This command will fetch the source tree and save it into
directory named silc. SILC CVS repository currently does not have any
branches thus this will check out the trunk. The size of the trunk is
currently about 8 Mb but will grow in the future.
What SILC Source Tree Includes
==============================
SILC Source tree includes a lot more stuff that appears in public
distribution. The source tree includes, for example, internal scripts,
configuration files, SILC webpages etc. These never appear on a public
distribution.
Following directories currently exist in SILC source tree.
apps/
All applications.
doc/
Includes all the SILC documentation. Some of the documentation
are generated when distribution is generated. The automatically
generated files must never be commited to CVS.
includes/
Includes SILC include files.
apps/irssi/
Includes the Irssi SILC Client.
lib/
Includes SILC libraries. There maybe libraries on the CVS that
does not appear on public distribution.
lib/contrib/
Contrib directory for routines that some of the platforms might
not have. In that case these routines are provided by the SILC.
lib/silcclient/
The SILC Client library. Implementation of the SILC Client without
the user interface. The library provides an interface for user
interface designers.
lib/silccore/
The SILC Protocol Core library. Implementation of all the core
components of the SILC Protocol. This is used by all the SILC
applications.
lib/silccrypt/
The SILC Crypto library. Provides all cryptographic algorithms
used in the SILC. Provides also the Cryptographically strong
random number generator.
lib/silcmath/
The SILC Math library. Provides the Math and MP routines for
SILC applications. The MP library is actually the GMP.
lib/silsim/
The SILC Modules library. Provides the dynamically loadable
modules.
lib/silcske/
The SILC Key Exchange (SKE) library. Implementation of the
SKE protocol. This is used by all SILC applications.
lib/silcutil/
The SILC Utility library. Provides various utility functions
for the applications.
lib/silcutil/unix/
The SILC Utility library. Provides various Unix specific utility
functions for the applications.
lib/silcutil/win32/
The SILC Utility library. Provides various WIN32 specific utility
functions for the applications.
public_html/
Includes the official SILC web pages and everything that relates
to them. This directory never appears on public distribution.
apps/silc/
Includes an example implementation of ncurses based SILC client.
It won't compile with current Toolkit since it is not being
updated. It is still good example for Toolkit programmer to
figure out how to use SILC Toolkit.
apps/silcer/
Includes an example implementation of GUI (Gnome) base SILC
client. Please read silcer/README for more information.
apps/silcd/
Includes SILC server. There can be some extra files that will
never appear in public distribution, such as, configuration files.
win32/
Includes win32 Toolkit specific files. It includes MSVC++
Workspace files. The win32/tests includes example code for
use of SILC Toolkit and SILC Client Library on Win32 GUI
application.
Howto Compile SILC Source Tree
==============================
To be able to prepare the CVS tree for configuration and compilation
Autodist must be installed into the system. You can download the latest
version of Autodist from:
http://silcnet.org/software/download/autodist/
To prepare the CVS source tree for configuration and compilation, give:
autodist
./configure --enable-debug
make
The autodist must be run every time you make some changes to configuration
scripts.
As a developer you should read the ./configure script's help by
giving ./configure --help and study all of its different options. Also,
you should configure the script with --enable-debug option as it
compiles SILC with -g (debugging) option and it enables the
SILC_LOG_DEBUG* scripts. Warning is due here: The debugging produced
by both cilent and server is very heavy, thus it is common to test
the programs as follows:
./silc -d "*" -f configfile 2>log
./silcd -d "*" -f configfile 2>log
The -d option enables the debug printing. The argument for the -d option
is a string that is used to match the output debug. The example "*" will
match for everything, and all debugs will be printed. If you want to
limit the debugs you want to printout you can give for example a string
like "*server*,*rng*" to match all functions, and filenames that has
"server" or "rng" string in them. Others will not be printed out. You
can freely define regural expressions as debug string.
Makefiles and configuration files
=================================
Developers should never directly write a Makefile. All Makefiles are
always automatically generated by autodist and later by ./configure
scripts. Instead, developers must write Makefile.ad files or Makefile.am
files. If the Makefile needs to include any distdefs (SILC_DIST_XXX),
then Makefile.ad (.ad stands for autodist) must be written. If the
Makefile is generic (common to all distributions) then Makefile.am may be
written. Note that distdefs MUST NOT be used in Makefile.am files, as the
autodist will modify them. See the source tree for examples. If you
change Makefile.ad files, the autodist must be rerun.
The autodist also creates the configure.ac script from which the autoconf
then creates the ./configure script. All changes to configure must
always be done into the configure.ad scripts. All changes made to
configure.ac will be lost. The autodist distdefs may also be used in
configure.ad files. It is also possible to write more than one
configure.ad in the source tree. All configure.ad fragments will be
collected from the source tree by autodist and combined into one
configure.ac scripts. After making changes to configure.ad files the
autodist must be rerun.
The distdefs are defined in the corresponding distributions. All
distributions live in distdir/ directory. The distdefs can be used in any
file in the source tree, but mainly they are used in Makefile.ad,
configure.ad and source and headers files. See autodist documentation for
more information how to use distdefs.
Merging Between CVS Branches
============================
Usually development moves from trunk to a specific branch when we are
nearing releasing the software. After release the trunk will continue new
development and the branch will continue maintenance of the latest
version. At some point the branch needs to be merged back to trunk to
bring all relevant fixes back to trunk. The merge is to be done as
follows:
cvs -z3 co -j branch_to_merge silc
cd silc
... check trunk status ...
cvs -z3 commit
The first command will merge the branch_to_merge to the trunk. After
merging the state of the trunk should be checked for any possible
conflicts and fix if any exist. The trunk then must be committed.
After merge has been done the branch must be tagged:
cvs -z3 co -r branch_to_merge silc
cd silc
cvs -z3 tag branch_merged_20070701
This tag can be used later when merging more changes from the same branch
to the trunk:
cvs -z3 co -j branch_merged_20070701 -j branch_to_merge silc
cd silc
... check trunk status ...
cvs -z3 commit
The tag is relevant so that the earlier changes would not be merged twice.
The tag assures that only changes made after the last merge will be merged
to trunk. After this merge has been done the branch must be tagged again
in case more changes are merged again later.