 -*- Mode: Text;  -*-
 File: DISTRIBUTE
 Author: Heinz Schmidt (hws@csis.dit.csiro.AU)
 Copyright (C) CSIRO Division of Information Technology, 1991
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* FUNCTION: short memo how to proceed with a distribution
*
* HISTORY:
* Created: Sun Dec 15 21:12:09 1991 (hws)
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The current Sather directory should contain the latest stable
development version.  

To set up a Sather distribution:

1. change the RELEASEVERSION macro in the top level Mkf.site file.
   and make sure it also makes it into the corresponding development
   files
	setenv SATHER_HOME <development home>
        cd $SATHER_HOME
	make config
   and make sure it also makes it into the boot compiler
	cd compiler
	make config

2. Generate the boot compiler. The boot compiler is a C output of the
current compiler run on the current compiler. It is generated as
follows
	setenv SATHER_HOME <development home>
        cd $SATHER_HOME/compiler
        make SATHER_HOME=$SATHER_HOME TOPDIR=$SATHER_HOME ARCH=sun4 boot-create

   The setenv SATHER_HOME step maybe necessary since we fix the install.sa
   setting in the development version to allow sed in the installation to
   replace it by the proper target site default.    

   It may be important to do this step to avoid incompatibilities with
   the distributed runtime system that may have changed in the meantime.
   Note that some parts of the runtime (hashtables) maybe generated by
   by Sather. In ports we had to add the "void" function types. Don't
   forget to run cs -voi in case.

3. The current Sather directory should contain the latest stable development
   version. To distribute that version, we 

   3.1 Check miscellaneous items:

       a.    umask 002 (cf. man umask). Make sure the distributed version
             is at least group writable and others readable. So others
             can restrict this further when installing.

       b.    Emacs M-x 0 byte-recompile-directory emacs/lisp.
             byte-compiles are small and portable across architectures.
             Distributing the byte compiles saves a make step and
             the hassle when Emacs is installed at user's site
             but without byte compile (this was the case somewhere!).
             There is a bytecomp patch in emacs/lisp which speeds up
             mouse handling and other el files considerably by expanding
             top-level macro calls at compile time.
	
	c.   Make sure there are no *.old directories in the development
             directories being distributed. Move them to the local archive
             anyway!

   3.2 Create the distribution:

             cd $SATHER_HOME
             make SATHER_HOME=$SATHER_HOME TOPDIR=$SATHER_HOME DISTDIR=mypath dist

       or if you want it in the default $HOME/sather/dist...
             make SATHER_HOME=$SATHER_HOME TOPDIR=$SATHER_HOME dist

       or if you know that SATHER_HOME is alright and the default dist directory is ok
             make dist

       This will create a copy of the relevant files in the DISTDIR which
       defaults to $HOME/sather/dist. The mask 022 grants group and others
       read permission. Choose 002 for group write / others read combination.
       Cf. umask for details.

       make dist will also do some cleaning (i.e. call "make clean" and 
       remove *.o *~ core ...), and will tar everything up in 
       sather-$RELEASEVERSION.tar.Z

4. Test whether the distribution can be installed.
   The user is supposed to (cf. INSTALL this directory)

   3.1 untar the file, 
   3.2 set the top level Mkf.site variables and
   3.3 type "make config" and then "make".

   This should work with SATHER_HOME = TOPDIR and with SATHER_HOME
   different from TOPDIR. If different, the user is supposed to follow with
   "make install".
   TOPDIR is the directory that the tar file gets untarred into and
   where the boot compiler is compiled etc.  SATHER_HOME may be different
   if the user decides to place it in a site "directory" and/or clean
   some unneeded libraries or the boot compiler.

   The user should also be allowed to run "make clean" and then a similar
   installation for another system/architecture within the same
   sather directory tree. This is supposed to use the same intermediate
   file names but will save the results in unique architecture-dependent
   directories like bin.sun4, sys/C/precompiled.vax etc.

   An alpha version of a new distribution can be made from the dist
   directory. It contains the bare minimum to compile and install the 
   system and may be useful to test installation procedures and compiler.

        cd <distpath>
        setenv SATHER_HOME <distpath>
	make config
        make -n bare
	make bare

5. We install Sather currently on these hosts:

WHERE    HOSTNAME               ANON FTP DIR     CURRENT HOST ADDRESS

USA:     ftp.icsi.berkeley.edu  /pub/sather      128.32.201.55
EUROPE:  ftp.gmd.de             /pub/Sather      129.26.8.90
AUS:     lynx.csis.dit.csiro.au /world/sather    192.41.146.1
JAPAN:   sra.co.jp              /pub/lang/sather 133.137.4.3


SYSTEM ADMINISTRATORs or SATHERERs at those sites to contact

USA:     Steve Omohundro (om@icsi.berkeley.edu)
         Bryan Costales (costales@icsi.berkeley.edu)         
EUROPE:  Heinz Schmidt (hws@gmdzi.gmd.de)
AUS:     Heinz Schmidt (hws@csis.dit.csiro.au)
         Peter Nikitser (pierre@csis.dit.csiro.au)
JAPAN:   Noboyuki Hikichi (hikichi@sra.co.jp)

How to distribute...

Login to remote host, cd to ~ftp/<pubsatherdir>, and get the new
version via anon ftp from a distributing host, adapt the README,
perhaps split the new version.


A 2.5MB (2528931 bytes) bare alpha version (get from AUS) takes about:

   CSIRO -> ANU, chara (sun):        16 seconds (160 Kbytes/s)
   CSIRO -> ANU, vulcan (sequent):  270 seconds (9.2 Kbytes/s)   
   AUS -> EUR gmdzi:                390 seconds (6.4 Kbytes/s)
   AUS -> USA icsib:                750 seconds (3.3 Kbytes/s)

