The SILC Project

source navigation ]
identifier search ]
freetext search ]
file search ]

silc/README.CVS

  1 Anonymous CVS Access
  2 ====================
  3 
  4 Anonymous CVS access is now available to SILC CVS repository. The
  5 repository includes everything related to SILC project; source codes,
  6 documentation and web pages.
  7 
  8 Also note that this is the closest to real time development you can get
  9 thus you cannot expect that the source tree would work or even compile.
 10 While it is our intention that the trunk would always at least compile
 11 there might be situations when it will not.
 12 
 13 
 14 Howto Checkout The Source Tree
 15 ==============================
 16 
 17 The repository can be checked out by using anonymous pserver with CVS.
 18 There are no password restrictions in the SILC anonymous CVS repository.
 19 
 20 For those who are using sh/ksh/bash the check out is done as follows:
 21 
 22 export CVSROOT=:pserver:cvs@cvs.silcnet.org:/cvs/silc
 23 cvs login
 24 cvs co silc
 25 
 26 For those who are using csh/tcsh the check out is done as follows:
 27 
 28 setenv CVSROOT :pserver:cvs@cvs.silcnet.org:/cvs/silc
 29 cvs login
 30 cvs co silc
 31 
 32 If you don't want to set $CVSROOT environment variable you can set the
 33 path to the cvs as command line options:
 34 
 35 cvs -d:pserver:cvs@cvs.silcnet.org:/cvs/silc login
 36 cvs -d:pserver:cvs@cvs.silcnet.org:/cvs/silc co silc
 37 
 38 What ever method you decide to use, after you have done cvs login you will
 39 be prompted for password:
 40 
 41         CVS password: silc
 42 
 43 Type the password "silc" and press Enter.
 44 
 45 The actual SILC source tree is checked out using the cvs co silc command,
 46 described above. This command will fetch the source tree and save it into
 47 directory named silc. SILC CVS repository currently does not have any
 48 branches thus this will check out the trunk. The size of the trunk is
 49 currently about 8 Mb but will grow in the future.
 50 
 51 
 52 What SILC Source Tree Includes
 53 ==============================
 54 
 55 SILC Source tree includes a lot more stuff that appears in public
 56 distribution.  The source tree includes, for example, internal scripts,
 57 configuration files, SILC webpages etc.  These never appear on a public
 58 distribution.
 59 
 60 Following directories currently exist in SILC source tree.
 61 
 62   apps/
 63 
 64         All applications.
 65 
 66   doc/
 67 
 68         Includes all the SILC documentation.  Some of the documentation
 69         are generated when distribution is generated.  The automatically
 70         generated files must never be commited to CVS.
 71 
 72   includes/
 73 
 74         Includes SILC include files.
 75 
 76   apps/irssi/
 77 
 78         Includes the Irssi SILC Client.
 79 
 80   lib/
 81 
 82         Includes SILC libraries.  There maybe libraries on the CVS that
 83         does not appear on public distribution.
 84 
 85   lib/contrib/
 86 
 87         Contrib directory for routines that some of the platforms might
 88         not have.  In that case these routines are provided by the SILC.
 89 
 90   lib/silcclient/
 91 
 92         The SILC Client library. Implementation of the SILC Client without
 93         the user interface.  The library provides an interface for user
 94         interface designers.
 95 
 96   lib/silccore/
 97 
 98         The SILC Protocol Core library.  Implementation of all the core
 99         components of the SILC Protocol.  This is used by all the SILC
100         applications.
101 
102   lib/silccrypt/
103 
104         The SILC Crypto library. Provides all cryptographic algorithms
105         used in the SILC.  Provides also the Cryptographically strong
106         random number generator.
107 
108   lib/silcmath/
109 
110         The SILC Math library. Provides the Math and MP routines for
111         SILC applications.  The MP library is actually the GMP.
112 
113   lib/silsim/
114 
115         The SILC Modules library.  Provides the dynamically loadable
116         modules.
117 
118   lib/silcske/
119 
120         The SILC Key Exchange (SKE) library.  Implementation of the
121         SKE protocol.  This is used by all SILC applications.
122 
123   lib/silcutil/
124 
125         The SILC Utility library.  Provides various utility functions
126         for the applications.
127 
128   lib/silcutil/unix/
129 
130         The SILC Utility library.  Provides various Unix specific utility
131         functions for the applications.
132 
133   lib/silcutil/win32/
134 
135         The SILC Utility library.  Provides various WIN32 specific utility
136         functions for the applications.
137 
138   public_html/
139 
140         Includes the official SILC web pages and everything that relates
141         to them.  This directory never appears on public distribution.
142 
143   apps/silc/
144 
145         Includes an example implementation of ncurses based SILC client.
146         It won't compile with current Toolkit since it is not being 
147         updated.  It is still good example for Toolkit programmer to 
148         figure out how to use SILC Toolkit.
149 
150   apps/silcer/
151 
152         Includes an example implementation of GUI (Gnome) base SILC
153         client.  Please read silcer/README for more information.
154 
155   apps/silcd/
156 
157         Includes SILC server.  There can be some extra files that will
158         never appear in public distribution, such as, configuration files.
159 
160   win32/
161 
162         Includes win32 Toolkit specific files.  It includes MSVC++
163         Workspace files.  The win32/tests includes example code for
164         use of SILC Toolkit and SILC Client Library on Win32 GUI 
165         application.
166 
167 
168 Howto Compile SILC Source Tree
169 ==============================
170 
171 To be able to prepare the CVS tree for configuration and compilation
172 Autodist must be installed into the system.  You can download the latest
173 version of Autodist from: 
174 
175         http://silcnet.org/software/download/autodist/
176 
177 To prepare the CVS source tree for configuration and compilation, give:
178 
179         autodist
180         ./configure --enable-debug
181         make
182 
183 The autodist must be run every time you make some changes to configuration 
184 scripts.
185 
186 As a developer you should read the ./configure script's help by
187 giving ./configure --help and study all of its different options.  Also,
188 you should configure the script with --enable-debug option as it
189 compiles SILC with -g (debugging) option and it enables the 
190 SILC_LOG_DEBUG* scripts.  Warning is due here:  The debugging produced
191 by both cilent and server is very heavy, thus it is common to test
192 the programs as follows:
193 
194         ./silc -d "*" -f configfile 2>log
195         ./silcd -d "*" -f configfile 2>log
196 
197 The -d option enables the debug printing.  The argument for the -d option
198 is a string that is used to match the output debug.  The example "*" will
199 match for everything, and all debugs will be printed.  If you want to
200 limit the debugs you want to printout you can give for example a string
201 like "*server*,*rng*" to match all functions, and filenames that has
202 "server" or "rng" string in them.  Others will not be printed out.  You   
203 can freely define regural expressions as debug string.
204 
205 
206 Makefiles and configuration files
207 =================================
208 
209 Developers should never directly write a Makefile.  All Makefiles are 
210 always automatically generated by autodist and later by ./configure 
211 scripts.  Instead, developers must write Makefile.ad files or Makefile.am 
212 files.  If the Makefile needs to include any distdefs (SILC_DIST_XXX), 
213 then Makefile.ad (.ad stands for autodist) must be written.  If the 
214 Makefile is generic (common to all distributions) then Makefile.am may be 
215 written.  Note that distdefs MUST NOT be used in Makefile.am files, as the 
216 autodist will modify them.  See the source tree for examples.  If you 
217 change Makefile.ad files, the autodist must be rerun.
218 
219 The autodist also creates the configure.ac script from which the autoconf 
220 then creates the ./configure script.  All changes to configure must 
221 always be done into the configure.ad scripts.  All changes made to 
222 configure.ac will be lost.  The autodist distdefs may also be used in 
223 configure.ad files.  It is also possible to write more than one 
224 configure.ad in the source tree.  All configure.ad fragments will be 
225 collected from the source tree by autodist and combined into one 
226 configure.ac scripts.  After making changes to configure.ad files the 
227 autodist must be rerun.
228 
229 The distdefs are defined in the corresponding distributions.  All 
230 distributions live in distdir/ directory.  The distdefs can be used in any 
231 file in the source tree, but mainly they are used in Makefile.ad, 
232 configure.ad and source and headers files.  See autodist documentation for 
233 more information how to use distdefs.
234 
235 
236 Merging Between CVS Branches
237 ============================
238 
239 Usually development moves from trunk to a specific branch when we are 
240 nearing releasing the software.  After release the trunk will continue new 
241 development and the branch will continue maintenance of the latest 
242 version.  At some point the branch needs to be merged back to trunk to
243 bring all relevant fixes back to trunk.  The merge is to be done as 
244 follows:
245 
246   cvs -z3 co -j branch_to_merge silc
247   cd silc
248   ... check trunk status ...
249   cvs -z3 commit
250 
251 The first command will merge the branch_to_merge to the trunk.  After 
252 merging the state of the trunk should be checked for any possible 
253 conflicts and fix if any exist.  The trunk then must be committed.
254 
255 After merge has been done the branch must be tagged:
256 
257   cvs -z3 co -r branch_to_merge silc
258   cd silc
259   cvs -z3 tag branch_merged_20070701
260 
261 This tag can be used later when merging more changes from the same branch 
262 to the trunk:
263 
264   cvs -z3 co -j branch_merged_20070701 -j branch_to_merge silc
265   cd silc
266   ... check trunk status ...
267   cvs -z3 commit
268 
269 The tag is relevant so that the earlier changes would not be merged twice.  
270 The tag assures that only changes made after the last merge will be merged 
271 to trunk.  After this merge has been done the branch must be tagged again 
272 in case more changes are merged again later.

This page was automatically generated by the LXR engine.
Free-text search provided by Glimpse