+++ /dev/null
-Contents:\r
-\r
- MAINTAINING A VARIANT OF EiC via CVS\r
- BUILDING A BINARY DISTRIBUTION\r
- COMMITTING EiC to CVS\r
-\r
---------------------------------------------------------------------\r
-MAINTAINING A VARIANT OF EiC via CVS\r
-\r
-If you have or intend to be modifying EiC's source distribution for\r
-your own personal needs, but also want your distribution to be kept up\r
-to date with EiC's public distribution, then one way to do this is to\r
-use CVS. With CVS you can keep track of several versions of EiC\r
-simultaneously and it will allow you to merge different versions\r
-together. Thereby, incorporating changes from one version into\r
-another.\r
-\r
-For details on using CVS please refer to:\r
-\r
- Version Management with CVS by Per Cederqvist\r
-\r
- http://www.loria.fr/~molli/cvs/doc/cvs_toc.html\r
-\r
-Most Linux distribution come with CVS, but if you need to install CVS,\r
-it can be obtained from:\r
-\r
- http://www.cyclic.com/cyclic-pages/cvsdev.html\r
-\r
-\r
-The following will show you how to maintain your personal distribution\r
-of EiC so that you can easily incorporate new features or bug fixes\r
-from the latest official release of EiC into your own version. Also,\r
-you are advised to read all of the this section prior to starting.\r
-\r
-In the following it will be assumed that your EiC source directory\r
-contains only EiC source files. Therefore, before starting make sure\r
-your EiC directory has been clobbered:\r
-\r
-\r
- % cd $HOMEofEiC // PATH_TO_THE_EiC_DIRECTORY \r
- % cd doc; make clobber; cd .. ; make clobber\r
-\r
- The clobber directive is more severe than a clean, as it\r
- removes everything that clean does plus targets and installed\r
- files.\r
-\r
-First place a copy of the public version of EiC under CVS control\r
-using the following cvs command:\r
-\r
- cvs import -m"Message" <Dir> <Vendor-Tag> <Release-Tag>\r
-\r
-\r
-Message A string that specifies some information about the current\r
- operation. If you do not give it, CVS will prompt you by\r
- opening up an editor according to $CVSEDITOR or $EDITOR\r
- and which can be quite slow and annoying at times.\r
-\r
-Dir The directory where the current source will be stored in\r
- the CVS repository. \r
-\r
-Vendor-Tag The tag for the entire branch. This tag will be used\r
- to identify the Vendor's copy of the source (the public version\r
- of EiC), rather than your personal version.\r
- \r
-Release-Tag The Release-Tag is used to identify the files at the\r
- leaves, of the Vendor's branch, created each time you execute \r
- an import.\r
-\r
-\r
-For example, lets say you are starting from EiC version 3.7:\r
-\r
- % cvs import -m"import of EiC 3.7" EiC EiC_dist V_3_7\r
-\r
-This command will create a branch with number 1.1.1, and which is the\r
-CVS branch number for the Vendor's branch. The above command will also\r
-place a copy of EiC's source distribution in the directory\r
-$CVSROOT/EiC. It will label the Vendor's branch as `EiC_dist' and\r
-assign it the release tag `V_3_7'.\r
-\r
-\r
-Before you start working with any code in the repository you must\r
-first check out a working copy from the repository. To make sure\r
-everything worked and to check out the latest version from the\r
-repository do the following:\r
-\r
- % cd ..\r
- % mv EiC EiC.orig\r
- % cvs checkout EiC\r
- % ls -R EiC\r
- \r
-Note: you have checked out the latest revision on the `main trunk' of\r
-the EiC repository and not the code on the Vendor's branch `EiC_dist', although\r
-at this stage they are identical. This means you should have a copy of\r
-the main trunk of the EiC repository, and all commits will be\r
-committed to the main trunk and not to the Vendor's branch.\r
-\r
-Now, examine the status of a file, such as the starteic.c file, by\r
-using the CVS status subcommand:\r
- \r
- % cd EiC/src\r
- % cvs status -v starteic.c\r
-\r
-===================================================================\r
-File: starteic.c Status: Up-to-date\r
-\r
- Working revision: 1.1.1.1 Sat Jun 20 07:37:46 1998\r
- Repository revision: 1.1.1.1 /usr/local/cvsroot/EiC/src/starteic.c,v\r
- Sticky Tag: (none)\r
- Sticky Date: (none)\r
- Sticky Options: (none)\r
-\r
- Existing Tags:\r
- V_3_7 (revision: 1.1.1.1)\r
- EiC_dist (branch: 1.1.1)\r
-\r
-\r
-This tells us that we are working with revision 1.1.1.1, which also\r
-coincides with the revision version 1.1.1.1 with tag V_3_7. While it\r
-it is not clear from the above information, but this is also revision\r
-1.1 on the main trunk.\r
-\r
-If you already have a modified copy of EiC then just copy your files\r
-over the top of the files in this EiC directory. However, to simulate\r
-changes that you may make to the EiC source files, and for this\r
-example, I will just edit `starteic.c' and change:\r
-\r
- "EiC V3.7 - Copyright (c) 1995 to 1998,"\r
-to \r
- "myEiC V3.7 - Copyright (c) 1995 to 1998,"\r
-\r
-\r
-Next, commit the changes via:\r
-\r
- % cvs commit -m"update of EiC" starteic.c\r
- Checking in starteic.c;\r
- /usr/local/cvsroot/EiC/src/starteic.c,v <-- starteic.c\r
- new revision: 1.2; previous revision: 1.1\r
- done \r
-\r
-If I had not specified the file `starteic.c', then the commit command\r
-would have worked recursively on all files within this directory and\r
-its subdirectories. It is also a good idea to use `cvs -n update'\r
-before making a commit, as this will inform you, without making any\r
-changes, what changes will occur, and will give you the opportunity to\r
-make appropriate changes as needed; such as adding any new files and\r
-directories.\r
-\r
-Now the CVS repository for EiC will look something like this:\r
-\r
-\r
- +-----+ +-----+\r
- main trunk --> | 1.1 |--->| 1.2 | \r
- (1) +-----+ +-----+\r
- \\r
- \+---------+\r
- Vendor's branch --> | 1.1.1.1 |\r
- (1.1.1) +---------+\r
- EiC_dist .\r
- / \\r
- |\r
- tag V_3_7 \r
-\r
-\r
-Note, only file starteic.c will have the revision number 1.2, all the\r
-rest will have revision number 1.1.1.1, which is also 1.1. \r
-\r
-When a new version of EiC is released, and for this example I will use\r
-version 3.7.1, the first thing to do is to make sure you have\r
-committed your working revision of EiC to CVS (see examples\r
-above). Then untar the new release of EiC into some temporary\r
-directory:\r
-\r
- % cd /tmp \r
- % tar xvzf EiCsrc_3_7_1.tgz \r
- % cd EiC\r
- % cvs import -m"update EiC V3.7.1" EiC EiC_dist V_3_7_1\r
-\r
-The above import command is almost identical to the previous import\r
-command, with the only difference being that a new release tag is\r
-being specified, V_3_7_1.\r
-\r
-After the above, the repository will look like:\r
-\r
-\r
- +-----+ +-----+\r
- main trunk --> | 1.1 |--->| 1.2 | \r
- (1) +-----+ +-----+\r
- \\r
- \+---------+ +---------+\r
- Vendor's branch --> | 1.1.1.1 | --->| 1.1.1.2 |\r
- (1.1.1) +---------+ +---------+\r
- EiC_dist . . \r
- / \ / \\r
- | |\r
- tag V_3_7 tag V_3_7_1\r
-\r
-\r
-Any files in the Vendor's branch that have changed between version 3.7\r
-and 3.7.1 will have the revision number 1.1.1.2 else their revision\r
-number will remain at 1.1.1.1. If there are any files in the main\r
-trunk that have local changes then CVS will warn that you must merge\r
-the changes into the main trunk, and for this example, CVS reports:\r
-\r
-\r
- 1 conflicts created by this import.\r
- Use the following command to help the merge:\r
-\r
- cvs checkout -jEiC_dist:yesterday -jEiC_dist EiC\r
- \r
-\r
-The above report is warning that not only are changes detected between\r
-the main trunk and the Vendor's branch, but some of these changes also\r
-conflict. This means that the same lines of code have been altered\r
-between the Vendor's source and the main trunk source. To resolve\r
-these difference first change to your local working EiC directory:\r
-\r
- % cd $HOMEofEiC\r
-\r
-After you have commited your working version to the main trunk of\r
-the repository for EiC, you may also want to tag your current revision:\r
-\r
- % cvs tag TAGNAME\r
-\r
-This will allow you to retrieve this revision via: \r
-\r
- % cvs checkout -r TAGNAME EiC\r
-\r
-Next, you must merge all changes on the Vendor's branch into your\r
-local working copy of EiC (this command only affects the working\r
-copy):\r
-\r
- % cvs update -d -j EiC_dist\r
-\r
-Any conflicts that result from the merge must now be resolved. To find\r
-all the files with conflicts use the command:\r
-\r
- % cvs -n commit\r
-\r
-The only conflict in this example is with file starteic.c (note, the\r
-original working copy will be saved in file `.#starteic.c.1.2') and\r
-within starteic.c the conflict is revealed as:\r
-\r
- <<<<<<< starteic.c\r
- "myEiC V3.7 - Copyright (c) 1995 to 1998,"\r
- =======\r
- "EiC V3.7.1 - Copyright (c) 1995 to 1998,"\r
- >>>>>>> 1.1.1.2\r
-\r
-CVS delimits conflicting sections with <<<<<<<<, ===== and\r
->>>>>>. Thus, preventing code with conflicts from being compiled. To\r
-resolve this conflict, change the above 5 lines into:\r
-\r
- "my"\r
- "EiC V3.7.1 - Copyright (c) 1995 to 1998,"\r
-\r
-This will also prevent future conflicts with this section of code.\r
-\r
-Now, from the EiC home directory commit the whole source tree:\r
-\r
- % cvs commit -m"merged with EiC V3.7.1" \r
-\r
-\r
-The EiC repository will now look like:\r
-\r
-\r
- +-----+ +-----+ +-----+\r
- main trunk --> | 1.1 |--->| 1.2 |--->| 1.3 | \r
- (1) +-----+ +-----+ +-----+\r
- \\r
- \+---------+ +---------+\r
- Vendor's branch --> | 1.1.1.1 | --->| 1.1.1.2 |\r
- (1.1.1) +---------+ +---------+\r
- EiC_dist . . \r
- / \ / \\r
- | |\r
- tag V_3_7 tag V_3_7_1\r
-\r
-\r
-At this stage you should have the latest changes of EiC incorporated\r
-into your local version of EiC.\r
-\r
-\r
-TIPS:\r
- Keep a backup of your CVS repository.\r
- This way, if you get confused and stuff up your\r
- CVS repository you can always replace it with\r
- the backed up version. \r
-\r
- Use CVS tags to keep track of various revisions \r
- of your local source.\r
-\r
- Work methodically with CVS. If need be,\r
- create a check list that you work through.\r
- Below in section `COMMITTING EiC to CVS' are the\r
- steps that I go through each time I make \r
- a new commit of EiC.\r
-\r
- More CVS information can be found at:\r
- \r
- http://www.loria.fr/~molli/cvs-index.html\r
-\r
---------------------------------------------------------------------\r
-BUILDING THE BINARY DISTRIBUTION\r
-\r
- (*) Change to EiC's top directory and run \r
-\r
- % config/makeconfig\r
-\r
- This ensures that the appropriate platform\r
- information has been set.\r
-\r
- (*) Edit the main Makefile to set EiC's\r
- version number, EiC_NUM, to that obtained from\r
-\r
- % eic -v\r
-\r
- If adding a new module to the binary source \r
- distribution update the variables MODULES \r
- BINTREE and possibly PUB_DIRS in the top \r
- Makefile.\r
-\r
- (*) Edit the README.BIN file to reflect\r
- the appropriate version and any new\r
- platforms.\r
-\r
- (*) Change to the documentation directory\r
- and make install\r
- \r
- % cd doc\r
- % make install \r
- % cd ..\r
-\r
- (*) To construct the binary distribution: \r
- \r
- % make binary\r
-\r
-\r
- (*) Now test the binary distribution:\r
-\r
- % tar xvzf EiC_PLATFORM.#.#.tgz\r
-\r
- Inspect the README file\r
- \r
- % more EiC/README\r
-\r
- Follow the instruction for installing EiC.\r
- If needed repeat previous steps until\r
- all is okay. Then \r
-\r
- % cd EiC/main\r
- % make -n installBinary\r
- % make installBinary\r
- % cd ../..\r
- \r
- \r
- Test it:\r
- \r
- % cd test/EiCtests\r
- % eictester t*.c\r
-\r
- Clean up:\r
-\r
- % cd ../../EiC/main\r
- % make clobber\r
- % cd ../..\r
- % rm -rf EiC\r
- \r
-\r
- (*) % make install\r
-\r
- (*) Also, up date EiC's web page to reflect the\r
- new distributions.\r
-\r
-\r
-------------------------------------------------------------------\r
-COMMITTING EIC to CVS\r
-\r
-(1) Change directory to EiC's home directory\r
-\r
-(2) make clobber\r
-\r
-(3) make install // Fix code, so that gcc\r
- // does not give any warnings\r
-\r
-(4) cd test // run test procedures \r
-\r
-(5) test.sh // make sure all tests modules pass\r
- // if not understand why\r
-(5a) cd EiCtests\r
-(6) ../runsent *.c // check manually all the *.snt files\r
- // and that they are correct\r
-(7) rm *.snt\r
-\r
-(8) cd ..\r
-\r
-(9) make clobber // check that Lib and include directories\r
- // are empty. If not, find out why.\r
-\r
-(10) cvs -n update > /tmp/list\r
-\r
- * from the information that goes to screen \r
- check for errors\r
- * now check the contents of the file /tmp/list \r
- and if needed, take the appropriate actions\r
- * repeat step 10 until no warnings exist etc\r
- \r
-(11) cvs commit -m"UPDATE of EiC " \r
- \r
-(12) If needed now add a tag:\r
-\r
- * cvs tag V3_0\r
-\r
-\r
-\r
-\r
-\r
-\r