GNU E Installation and testing notes Note: please send bug reports and questions to schuh@cs.wisc.edu or exodusbugs@cs.wisc.edu. Please don't send bug reports that are specific to E to any of the gnu mailing lists; this will lead to confusion. Also, mail schuh@cs.wisc.edu if you have trouble installing this distribution using the directions supplied here. This directory constitutes a preliminary release of GNU E, a gnu c++ based version of the E programming language. To use this system, you must separately obtain release 3.0 of the Exodus Storage Manager. This distribution is not compatible with any release of the Exodus Storage Manager earlier that version 3.0. This is a binary only distribution, for use on sparc architecture computers running SunOS; source for the modified gnu c++ compiler, the GNU E runtime library, and the Exodus Storage Manager are available separately. To use GNU E, you must must separately obtain the Exodus Storage Manager software. Current versions of both the Exodus Storage Manager and GNU E are available for anonymous ftp on the machine ftp.cs.wisc.edu, under the directory exodus. This version corresponds to release 2.3.3 of gcc/g++. Installation The GNU E compiler should always be invoked through the eg++ script. This script, based on the g++ script for invoking GCC is necessary to ensure that the compiler can be run independent of its location on disk. To install the GNU E system, you need to do the following. For clarity, in the installation example given below we assume you have installed the Exodus Storage Manager release in /usr/exodus/sm and that you have installed the GNU E release in /usr/exodus/e. 0. Install and test the Exodus Storage Manager system, version 3.0. You need to pay particular attention to the storage manager configuration file, .sm_config; make sure this is set up properly. more on this later. 1. Make a symbolic link in the subdirectory lib/gcc-lib/sparc/2.3.3 to the Exodus Storage Manager client library file, libsm_client.a This file is created as part of the storage manager installation, and normally is in the lib subdirectory of the storage manager. Example: ln -s /usr/exodus/sm/lib/libsm_client.a /usr/exodus/e/lib/gcc-lib/sparc/2.3.3/libsm_client.a 2. Modify the file bin/eg++ to point to the correct directory. Look for the line EGCC_INST_DIR=${EGCC_INST_DIR-"/usr/local/e"} and replace the string "/usr/local/e" with the full path name of the directory where you have installed the GNU E distribution tar file. example: EGCC_INST_DIR=${EGCC_INST_DIR-"/usr/exodus/e"} Alternatively, you can inform all users that they need to set the environment variable EGCC_INST_DIR appropriately. For example, they could add to their .cshrc the line setenv EGCC_INST_DIR /usr/exodus/e 3. Copy the modified eg++ script to a suitable directory that users would normally have in their execution path. 4. Set up storage manager configuration and start the storage manager server, as described in the storage manager user guide, "Using the Exodus Storage Manager." Please read at least sections 1 and 2 in this user guide before running these tests. To use E, you must have a formatted storage manager volume, prepared by the storage manager utility formatvol, and you must set the environment variable EVOLID to indicate the volume identifier number of that volume. You must also have an appropriate storage manager configuration file set up; minimally, you must have a file .sm_config specifying how large the client buffer pool should be and how the storage manager volume will be accessed. For example, say your storage manager server is set up to run on the machine with hostname "exodus" and the exodus server port is 9000, and the Exodus Storage Manager to be used has volume id 3001. Further, assume that you want to allocate 1000 8k pages of buffer space for the client storage manager. You would need, in you home directory or the current working directory, a file named .sm_config with the (minimal) contents client*bufpages: 1000 client*mount: 3001 9000@exodus Normally, it is possible to use the same .sm_config for both server and client, and the configuration file would contain considerably more information. Further, to run E programs you would need to set the environment variable EVOLID to indicate the proper volume for E to use. In csh, this would be done via setenv EVOLID 3001 5. To test the installation, you should try compiling some of the programs under the directory examples. The simplest test is under the directory examples/pcounter; if your installation is complete, you should be able to go into this directory and run 'make' to create 2 programs, count and reset. You should then be able to run these programs to increment and zero a persistent counter variable. (note that there is a unix utility called reset, so be careful to run the right program). NOTES: All E programs using persistent data need to communicate with the Exodus Storage Manager. E users must specify in the environment variable EVOLID the volume id of the Exodus Storage Manager volume in which persistent data is to be stored. The location of the Exodus Storage Manager server that a client process will use is specified in the storage manager configuration file, .sm_config. The client buffer pool page size must be specified through one of the storage manager configuration options. This version of the E runtime support system is very sensitive to the number of buffer pages allocated in the client; this should be set as large as is reasonable for given the available physical memory on the client machine. This distribution is a modified gcc/g++ system, and is self contained. The binary programs contained here are not compatible with the unmodified versions from the gcc-2.3.3 distribution, and should be maintained separately. They may not be used interchangeably with unmodified versions of the gcc-2.3.3 distribution. In particular, the executable files gcc, cc1plus, collect, and ld differ significantly in functionality. Bugs This compiler system is quite likely to contain bugs. The underlying gcc compiler, gcc 2.3.3, is still considered to be beta software, and the E extensions have not had anywhere near the use that the basic C++ functionality has had. If you have problems, please mail a report to schuh@cs.wisc.edu; try to include a complete example that will reproduce the problem. If necessary, use the -E option of eg++ to collect all included program text into one file. Contents of this directory: This directory mirrors the contents of the installation directory produce by "make install" during a build of gcc, with a few additions. There are 6 subdirectories: bin: driver executables files (eg++, gcc) These contains user callable executables; in general, the compiler should always be invoked through the eg++ script. lib: This contains the main part of the executable distribution. There are 2 relevant subdirectories, lib/g++-include, which is the primary include file directory for eg++, and lib/gcc-lib/sparc/2.3.3, which contains the compiler executables and libraries. include: This directory contains a special assert.h file used by gcc; it is not otherwise used. man: This directory contains unix man(1) style files for the gcc system. doc: This directory contains E-specific documentation. example: This directory contains some simple E example programs.