How our source code is organized...


On Tue, 11 Jul 2000, Henk Uijterwaal (RIPE-NCC) wrote:
> 
> Looked a bit at this.   What seems reasonable is:
> 
> 
>   $TTROOT/CVS/testbox/project1
>                      /project2
>                      ...
>             /analysis/project1
>                      /project2
>                      ...
>             /control/project1
>                      ...
>             /documentation/doc1
>                           /doc2
>                           /doc3
>                          ...
> 
> testbox:        Software running on the testboxes
> analysis:       Analysis code
> control:        Code to control the test-boxes from the NCC.
> documentation:  RIPE-documents and such

I finished the next step of the cleanup.

Before you begin, do setenv CVSROOT /ncc/test-traffic/CVS

In $CVSROOT, there are now 4 projects: analysis, control, testbox and
documentation, each with various subprojects.  A subproject is roughly 1
well-defined piece of code with all supporting scripts, makefiles, etc,
etc.  There can be subdirectories inside a subproject.

Which subprojects exists, is defined in $CVSROOT/CVSROOT/modules.  The
left hand shows the name of module, the right hand the part of the
directory after $CVSROOT. Things on the left hand should be unique.

To add a new subproject do:

  1. cd $CVSROOT/CVSROOT
  2. vi modules
  3. "add name of the module and location of the files"
  4. mkdir $CVSROOT/location of files

To modify an existing subproject, do:

  1. cvs checkout module
       (this will create a directory with all files.
  2. cd module
  3. # edit/test
  4. cvs update 
  5. cvs commit
  
You can now safely delete the files, or go back to step 3 and continue
developping.  It is recommended that you do a cvs commit regularly, in
order to avoid conflicts between 2 people modifying the same code.

For those of you who don't like underscores, $, upper case: after step 1,
you can rename the directory names into anything else, and it will still
work.

Existing projects:

....
# Documentation
# =============
# External documents
#
RIPE_158                documentation/RIPE_158
RIPE_168                documentation/RIPE_168
RIPE_179                documentation/RIPE_179
RIPE_180                documentation/RIPE_180
RIPE_200                documentation/RIPE_200
RIPE_209                documentation/RIPE_209
#
# RIS
#
RIS_Website             documentation/RIS_Website
#
# TTM
#
TTM_Local_Install       documentation/Local_Install
TTM_NLUUG98             documentation/NLUUG98
TTM_SANE98              documentation/SANE98
TTM_Software_Design     documentation/Software_Design
TTM_States              documentation/States
TTM_Website             documentation/TTM_Website
#
III_Website             documentation/III_Website
....

* RIPE_XXX are the RIPE documents that we've published
* RIS_* are RIS documents.
* TTM_* are TTM documents that aren't a RIPE document yet.
* III_* is the stuff on the internal website

If you add a document, give it a name similar to this.

*_Website are the files on the various website EXCLUDING files that are
auto-generated by other programs.  These documents have been checked out
on the webservers /ncc/WWW_SITE1/...  and /ncc/docs/iii/...  If you want
to modify things, you can do that there.  Just do a "cvs update" and
"cvs commit" after you're done.


#
# Test box software
# =================
#
tb_source               testbox/tb_source
Send_Receive            testbox/tb_source/Send_Receive
delay_alarm             testbox/tb_source/delay_alarm
tac                     testbox/tb_source/tac
tb_control_scripts      testbox/tb_source/tb_control_scripts
tb_dotfiles             testbox/tb_source/tb_dotfiles
tb_general_scripts      testbox/tb_source/tb_general_scripts
tb_perl_modules         testbox/tb_source/tb_perl_modules
#
tb_contrib              testbox/tb_contrib
fbsd_221                testbox/tb_contrib/fbsb_221
fbsd_228                testbox/tb_contrib/fbsd_228
traceroute              testbox/tb_contrib/traceroute
xntp                    testbox/tb_contrib/xntp


Software on the test-box.  "tb_source" is written by us, "tb_contrib" by
others.  fbsd_xxx are the kernel sources (we never had a reference copy of
that).

All this is pretty much under control.  The messy part is:

#
# Control and Analysis
# ====================
#
merge_data              analysis/merge_data
plot_delays             analysis/plot_delays
routing_vector          analysis/routing_vector
collect_data            analysis/collect_data
tape_handling           analysis/tape_handling
wwwpages                analysis/wwwpages
maps                    analysis/maps
FillTree                analysis/FillTree
libDelay                analysis/libDelay
#
control                 control
poisson                 control/poisson
ncc_control_scripts     control/ncc_control_scripts
config                  control/config


analysis and control code at the NCC.  This still needs a bit of work :-)

Looking at /home/ttraffic:

~/bin
~/config/
~/config/bin     The idea was to have all executables in ~/bin.

                 TBD: 1. Adjust Makefile accordingly
                      2. Add a tag "install" that copies the scripts to ~/bin
                      3. Copy files

                 The copy in ~/config/bin can still be there, but it
                 should become the backup/test version, with the 
                 production version in ~/bin
~/contrib        I like to import these into CVS as well BUT there are 4
                 CFE versions:

                   1. Fotis: which one do we actually use?
                   2. Are GMT, gifsicle, netcdf, etc being used.


~/maps, ~/wwwpages have been added to CVS.  

~/tmp has been cleaned up.  

Another mod I made was to patch the poisson process such that it puts
temporary stuff in $TTROOT/tmp and thus can be run from anywhere.