Schooner Installation & Compilation

Patrick T. Homer
Last updated: August 8, 1995
1. - Schooner directory structure
1.1. - Executables and libraries
1.2. - Source code
1.3. - Documentation
1.4. - Tests
2. - Schooner compilation notes
2.1. - Archiving the Schooner system
2.2. - General compilation notes
2.2.1. - Standard (Sun) compilation:
2.2.2. - SGI:
2.2.3. - Dec Alpha:
2.2.4. - Cray YMP:
2.2.5. - Convex:
2.2.6. - Sequent Symmetry:

1. Schooner directory structure

In what follows, SCH_HOME is assumed to be an environment variable set to the parent directory for the Schooner system. For example, if the Schooner software is installed in /usr/my_name/schooner, then

setenv SCH_HOME /usr/my_name/schooner

The environment variable SCH_USER_NAME also needs to be set. It can contain any string the user wishes. However, its value needs to be the same on each machine used in the meta-computation.

The subdirectories here can be grouped into four categories:

1.1. Executables and libraries

The $SCH_HOME/bin directory holds the four executables in the Schooner system. These are

schx
the Manager process

schserver
the Server process

schc
the C stub compiler

schf
the FORTRAN stub compiler

The $SCH_HOME/lib directory holds the four libraries for the Schooner system. These are

libsch.a
the UTS, mapping, and high-level communications functions

libstream.a
the low-level communications functions for tcp and udp

libmain.a
the main() function attached to the user's code

libf77.a
functions needed to communicate between FORTRAN and both the UTS and high-level communications functions

1.2. Source code

The source code is contained in three directories:

$SCH_HOME/schc
the C stub compiler (schc)

$SCH_HOME/schf
the FORTRAN stub compiler (schf) and the libf77.a library.

$SCH_HOME/schx
the Manager (schx) and Server (schserver) processes, plus the libsch.a, libmain.a and libstream.a libraries.

The $SCH_HOME/schf directory has two subdirectories:

/src
source code for the FORTRAN stub compiler (schf)

/lib
source code for the libf77.a library

The $SCH_HOME/schx directory has six subdirectories:

/mapper
source for the Manager (schx) process

/schserver
source for the Server (schserver) process

/uts
source for the UTS conversion functions

/sch-lib
source for miscellaneous functions including user representatives, memory management, UTS conversion functions for internal system structures, etc.

/rts
source for the libmain.a library, the basic call and reply code, and the procedure name mapping functions included with each component

/stream
source for the low-level communications functions, including the basic send & receive primitives and specific udp & tcp code

1.3. Documentation

The $SCH_HOME/man directory contains the source for the Schooner manpages. The source is located in /src. Postscript versions of the manpages are located in the /postscript subdirectory. The /man3 and /cat3 subdirectories contain the files expected by the man command. Adding $SCH_HOME/man to the MANPATH environment variable will make the Schooner manpages available via the man command. Manpages are available for the following topics:

schooner
uts
schx
schserver
schc
schf

1.4. Tests

The /src subdirectory contains a small set of tests; hopefully, a somewhat useful subset of the tests used at various times to test Schooner features. To use a test, the `make t#' command is typed, where the `#' is replaced by the number. For example, `make t8' will copy the files needed for test 8 to the /this_test subdirectory. Going there and typing `make' will compile the test. The various .spec files located in /src constitute a good source of examples for writing the UTS specifications used for Schooner. Comments in the Makefile in the /src directory provide indications of how each test should be run and what it tests.


2. Schooner compilation notes

Schooner has been tested on the following architectures:

Sun (various)
SGI (various)
Dec Alpha
IBM RS6000 (various)
IBM SP-2
Intel Paragon
Cray YMP
Convex C240
Sequent Symmetry
Stardent (various)
Vax
This section covers the method of archiving (and unarchiving) the files, and compiling on the various architectures.

2.1. Archiving the Schooner system

The Makefile in the $SCH_HOME directory can be used to create a compressed archive of the Schooner system by typing `make archive' in this directory. The archive will contain all of the source code, and documentation. It should be noted that executing the command to archive the system will result in a `make clean' being performed in all the source code directories. This will remove all object files to make the archive smaller. Transferring this archive to another machine and unarchiving it will result in the creation of the Schooner directory tree. To unarchive the system, execute:

uncompress schooner.tar.Z

tar xovf schooner.tar

If the Makefile for the $SCH_HOME directory is already present, `make unarchive' can be used to unarchive the system.

Note: the IBM RS6000 does not support the `v' option on tar. The Makefile contains a `make IBM.unarchive' for this reason.

2.2. General compilation notes

In general, compilation requires four phases in three places. Typing the make command for the appropriate architecture in the $SCH_HOME directory will work through all phases in the right order. If changes are made in only one or two places, the appropriate make can be performed in the following three places:

$SCH_HOME/schx
creates the libsch.a, libmain.a, and libstream.a libraries; then creates the schx and schserver executables

$SCH_HOME/schc
creates the schc executable

$SCH_HOME/schf
creates the schf executable

The order given above will not work if the entire system is being re-compiled from scratch. There is a mutual dependency between the C stub compiler, which uses routines from the libsch.a library, and the schserver executable that requires the C stub compiler. When re-compiling the entire system, it is best to use the make command in the $SCH_HOME directory.

For the following systems, typing the appropriate make command in $SCH_HOME will compile the system. The same command can be used in the three sub-directories to compile only those parts:

Intel Paragon
make Paragon

Stardent
make Stardent

Other systems are similar, but there are some additional notes.

2.2.1. Standard (Sun) compilation:

The Sun0S 4.x system is the default; thus, typing `make' in the $SCH_HOME directory will make all parts of the Schooner system. For Solaris, type `make Solaris'.

2.2.2. SGI:

The Schooner system is written using K&R C, rather than ANSI standard C. The environment variable SGI_CC will need to be set as follows:

setenv SGI_CC -cckr

If the /bin and /lib directories are not present, they must be created before starting the make process. (If anyone can figure out why the makefiles are unable to create these directories automatically, please let me know!)

Executing a `make SGI' in the $SCH_HOME directory will compile the system. It has been tested under IRIS 4x and 5x.

If the tests in $SCH_HOME/tests/src are to be used on the SGI, there is a small problem that arises when no files are currently present in the $SCH_HOME/tests/this_test directory. The /src makefile automatically attempts to remove all files in the /this_test directory before copying the files for the requested test. If no files are present, SGI machines will issue an error and halt, rather than continuing with copying the desired files. Placing a dummy file in /this_test will avoid the error and allow the copying to proceed.

2.2.3. Dec Alpha:

Executing `make Alpha' in the $SCH_HOME directory will compile the system. We do not have a FORTRAN compiler available on the Dec Alphas in our department; thus, the FORTRAN stub compiler, and test cases involving FORTRAN stubs, may or may not work.

2.2.4. Cray YMP:

Executing a `make Cray' in each of the three directories will correctly compile the various pieces. If the tests in $SCH_HOME/tests/src are to be used on the Cray, the makefiles for tests involving FORTRAN files will need to be edited. The Cray FORTRAN compiler uses a different name. You'll need to comment out the current F77 line and uncomment the Cray F77 line.

2.2.5. Convex:

The Convex does not pass (as far as I've been able to figure out) environment variables into Makefiles. Thus, $SCH_HOME has to be explicitly set in each Makefile. As examples, there are already lines present in the Makefiles for the Convex's at NASA Lewis Research Center and at The University of Arizona. In each of the three Makefiles listed below, uncomment the appropriate $SCH_HOME line (and edit the pathname if different from that listed):

$SCH_HOME/schx/Makefile
$SCH_HOME/schc/Makefile
$SCH_HOME/schf/Makefile
Once this is done, the command `make Convex' can be used to compile the system. There is also a `make Convex.ieee' variation for installations that have the default floating-point format on the Convex set to IEEE rather than the Convex native format. This affects the various floating-point conversion routines in UTS.

If the tests in $SCH_HOME/tests/src are to be used on the Convex, the makefiles will need to be edited to uncomment the appropriate $SCH_HOME line. Also, as in the Cray case, the Convex FORTRAN compiler has a different name. Tests that involve FORTRAN will need the appropriate F77 line uncommented.

2.2.6. Sequent Symmetry:

As in the Convex case, the Sequent makefiles will not understand environment variables passed in from the outside. Thus, the appropriate $SCH_HOME line must be uncommented in each of the following makefiles, and edited as appropriate to set the correct pathname:

$SCH_HOME/schx/Makefile
$SCH_HOME/schc/Makefile
Once this is done, the command `make Sequent' can be used to compile the system.

We do not have a FORTRAN compiler available on the Sequent Symmetry in our department; thus, the FORTRAN stub compiler, and test cases involving FORTRAN stubs, may or may not work.

1. - Schooner directory structure
1.1. - Executables and libraries
1.2. - Source code
1.3. - Documentation
1.4. - Tests
2. - Schooner compilation notes
2.1. - Archiving the Schooner system
2.2. - General compilation notes
2.2.1. - Standard (Sun) compilation:
2.2.2. - SGI:
2.2.3. - Dec Alpha:
2.2.4. - Cray YMP:
2.2.5. - Convex:
2.2.6. - Sequent Symmetry:
Generated with CERN WebMaker