Added ernno setting.
[silc.git] / README.CVS
index 2a76c232cf3794c0b37cf46b55fb5a2934b15caf..0dd847d32c8f06da21d1601c369e2afe950bbc1b 100644 (file)
@@ -1,31 +1,52 @@
-This document describes how to compile the SILC source tree after checkout
-from the CVS.  This README.CVS file will appear only in the checkout
-source tree and not in any public distribution.
+Anonymous CVS Access
+====================
 
-Howto Checkout Source Tree
-==========================
+Anonymous CVS access is now available to SILC CVS repository. The
+repository includes everything related to SILC project; source codes,
+documentation and web pages.
 
-Be sure to set the CVSROOT environment variable first or use -d option
-of CVS.  I suggest setting CVSROOT environment variable.
+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.
 
-       export CVSROOT=:pserver:anoncvs@silc.pspt.fi:/silc
 
+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:
 
-Checkout of SILC source tree, and to bemore specific, SILC trunk, give,
+export CVSROOT=:pserver:cvs@cvs.silcnet.org:/cvs/silc
+cvs login
+cvs co silc
 
-       cvs co silc
+For those who are using csh/tcsh the check out is done as follows:
 
-or
+setenv CVSROOT :pserver:cvs@cvs.silcnet.org:/cvs/silc
+cvs login
+cvs co silc
 
-       cvs -d :pserver:anoncvs@silc.pspt.fi:/silc 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
 
-CVS will ask password.  The password for anonymous (read access) CVS is
+What ever method you decide to use, after you have done cvs login you will
+be prompted for password:
 
-       CVS password: silccvs
+       CVS password: silc
 
+Type the password "silc" and press Enter.
 
-CVS currently does not have branches, thus this checkouts the trunk.
+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
@@ -38,6 +59,10 @@ distribution.
 
 Following directories currently exist in SILC source tree.
 
+  apps/
+
+       All applications.
+
   doc/
 
         Includes all the SILC documentation.  Some of the documentation
@@ -48,44 +73,117 @@ Following directories currently exist in SILC source tree.
 
         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.
 
-  silc/
+  apps/silc/
 
-        Includes SILC client.  There can be some extra files that will
-        never appear in public distribution, such as, configuration files.
+       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.
 
-  silcd/
+  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
 ==============================
 
-After checkout from CVS the SILC source tree must be prepared for 
-configuration and compilation.  To compile the source three, give,
+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/
 
-       ./prepare
+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.
 
-The ./prepare script is included in to the source tree and it never
-appears in public distribution.  The script prepares the source tree
-by creating configuration scripts and Makefiles.  The prepare must be
-run every time you make some changes to configuration scripts.
-
-As a developer you should read the ./configure scripts help by
+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 
@@ -93,59 +191,82 @@ 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 -f <config file> 2>silc.log
-       ./silcd -f <config file> 2>silcd.log
-
-
-Howto Clean SILC Source Tree
-============================
-
-To entirely clear the source tree to the state after it was checkedout
-from CVS, give,
-
-       ./prepare-clean
-
+       ./silc -d "*" -f configfile 2>log
+       ./silcd -d "*" -f configfile 2>log
 
-This calls `make distclean' plus removes automatically generated files
-by hand.  It also removes *.log files.
+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 ./prepare and later by ./configure
-scripts.  Instead, developers must write Makefile.am files.  There
-are plenty of examples what they should look like.  If you change
-Makefile.am during development you don't have to run ./prepare, just
-run normal make.
-
-Configuration files the files that ./prepare automatically generates
-and what will be included into public distribution.  ./prepare creates
-for example the ./configure script that is not commited to the CVS and
-must not be commited.  `configure.in' is the file that developers must
-edit to change ./configure script.  After changing one must run 
-./prepare.
+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:
 
-Creating Distribution
-=====================
+  cvs -z3 co -j branch_to_merge silc
+  cd silc
+  ... check trunk status ...
+  cvs -z3 commit
 
-The version of the distribution is currently always set in the configure.in
-file.  The actual distribution is created by simply giving,
+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.
 
-       make dist
+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
 
-Information About CVS Repository
-================================
+This tag can be used later when merging more changes from the same branch 
+to the trunk:
 
-SILC CVS repository resides in silc.pspt.fi (193.166.51.47) in a 2 Gb
-SCSI harddrive.  The repository is backuped every morning at 06:00 EEST.
-The entire repository is backuped and the backup is distributed to at
-least two independent machines and the backup is recorded into tapes,
-as well.  There are always week's of backups in hand in case they are
-needed.  Every week the "lastweek's" backups are removed and "this weeks"
-backups are saved.
+  cvs -z3 co -j branch_merged_20070701 -j branch_to_merge silc
+  cd silc
+  ... check trunk status ...
+  cvs -z3 commit
 
-$Id$
+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.