Tycoon libraries as link or copy

The TL libraries located in subdirectories of tycoon/bootlib are under Teamware and SCCS control, which means that, without any care (see below), every Tycoon developer gets his own copy of the full Tycoon language environment (approximately 60MB). This approach is comfortable but wasting a lot of disk space. Because the basic libraries are relatively stable and most users are modifying only small parts of them (resp. are creating new libraries), we invented the concept of symbolic links to shared versions of Tycoon libraries in the TeamWare environment. When you are using TL libraries, there are basically two choices:

A user starting with a bringover create will get all libraries as copies. For changing them to links, execute the shell script
  tw-share-install
For all directories below bootlib, the user is informed about the current configuration of the directory and asked for the desired configuration.
  configuring /local/teamware/rudloff/tycoon/tycoon/bootlib
 
  current configuration for bootlib/Bernd : 
 
    authenv is copy, ../lib/authenv is copy 
 
  desired configuration: 
 
    (0) unchanged                   
    (1) authenv as link, ../lib/authenv as link 
    (2) authenv as link, ../lib/authenv as copy 
    (3) authenv as copy, ../lib/authenv as copy 
 
    choice: [0]       
In the example the user has a complete copy of authenv including a copy of the corresponding .x-files. Now the new configuration can be choosen and the required actions (removal of copies and creation of links resp. removal of links and bringover) are performed.

If later on the user recognizes that a copy of libenv is necessary, the same script can be used to switch back. For this reason, the script can be called with a list of directories to be reconfigured as arguments, for example

  tw-share-install authenv

Attention: navigating (with cd) along a link will move the user into the shared workspace. To go back to the user`s workspace, type

  cd $TYCOON_ROOT
or define your own command or shell alias, or setup your C-shell variable cdpath (see man csh).

The use of links does not conflict with TeamWare bringover and putback transactions. If a directory in a child workspace is a link, this directory is simply ignored by TeamWare. This can be verified by the following message displayed by the corresponding TeamWare commands:

  bootlib/authenv is a link - no action performed
The same is true for bringoverx and putbackx.


Internal Information:

In general, this approach contains the risk of users accidentially checking out and modifying files in the shared workspace. To avoid this, the shared workspace must not have write permission for the group tycoon and others. This can be guaranteed by calling

  tw-share-lock
Permissions should be checked especially after a bringover from tycoon/tycoon to tycoon/public.

To avoid trouble during putback and bringover caused by links to shared libraries, a modified version of the file list program must be used, which ignores directories reached by a link in the child workspaces. In order to use the corresponding file list program

  /usr/local/etc/tw-share.dir.flp
the environment variable
  CODEMGR_DIR_FLP
must be set. This is currently done by
  tw

For the consistency check of the parent workspace a cron job is running on the dbis11 every night. The required scripts are

  /local/dbis1/software/etc/consistent-tycoon
  /local/dbis1/software/etc/compile-tycoon
  /local/dbis1/software/etc/tycoon-command
A log file
  /local/teamware/tycoon/tycoon/tycoon/compile-log
is written. Because there is no sufficient check for errors this script should be checked manually in regular intervals.
Andreas Rudloff (17-feb-1995)
Andreas Gawecki (20-Feb-1995)