X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=README.GIT;fp=README.GIT;h=0dd847d32c8f06da21d1601c369e2afe950bbc1b;hp=0000000000000000000000000000000000000000;hb=be10e71673bc538573b1805ee2115f2a3a7281a2;hpb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776 diff --git a/README.GIT b/README.GIT new file mode 100644 index 00000000..0dd847d3 --- /dev/null +++ b/README.GIT @@ -0,0 +1,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.