Getting Started Documentation Glish Learn More Programming Contact Us
Version 1.9 Build 1556
News FAQ
Search Home


next up previous contents index
Next: AIPS++ variable names Up: Overview Previous: Overview

Subsections



The AIPS++ directory hierarchy

In the following discussion of the AIPS++ directory hierarchy we will assume that AIPS++ has been installed in directory /aips++. This is the preferred location, but in practice the AIPS++ ``root'' directory can reside anywhere. The root directory is generally referred to as $AIPSROOT. Many other AIPS++ directories have standard variable names as listed in §1.2.

The major subdirectories of /aips++ are code ($AIPSCODE), docs ($AIPSDOCS), and one or more architecture-specific subdirectories with names such as sun4sol_ntv and alpha_gnu which contain the AIPS++ system - that is, everything needed to run AIPS++, including executables and sharable objects. These architecture-specific subdirectories are referred to collectively as $AIPSARCH.


Code directories

The directory hierarchy beneath /aips++/code, or $AIPSCODE, consists of a collection of ``packages'' which are contained in separate subdirectories. The principle package is /aips++/code/aips which contains the source code for a C++ class library required by all other packages. It also contains applications common to all areas of astronomical data processing.

The dish, synthesis, and vlbi packages contain standard classes and applications common to single dish, aperture synthesis, and VLBI data processing tasks from all radio telescopes. Apart from a dependence of the vlbi package on the synthesis package, inclusion of these standard packages in an end-user installation is optional.

A contrib package is the place for source code contributed from the AIPS++ user community for redistribution with AIPS++. If found to be generally useful, code from the contrib package may eventually be merged into one of the standard packages, but otherwise it is unsupported.

A trial package contains source code written by members of the AIPS++ consortium but not yet accepted for inclusion in the standard distribution.

Each AIPS++ consortium member is also entitled to maintain a package for data processing applications specific to its telescope(s). The sources for these classes and applications reside in the consortium-specific packages: atnf, bima, drao, nfra, nral, nrao, and tifr. These may or may not use the standard dish, synthesis, and vlbi packages, and their installation is also optional.

The standard AIPS++ packages (aips, dish, synthesis, and vlbi) contain an implement subdirectory which contains class header and implementation files, a fortran subdirectory which contains FORTRAN subroutines, an apps directory containing applications, and scripts and data subdirectories for package-related procedure files and system data such as standard colour-maps, calibrator lists and source catalogues.

The implement and fortran subdirectories may contain module subdirectories which serve to collect software ``modules'' in one place. For example, the Tables module contains all class header and implementation files pertaining to the Table class, and classes derived from, and related to it. The implement directory and all module subdirectories may also contain a test subdirectory which contains one or more self-contained test programs specifically for the module.

All files associated with an AIPS++ application reside in a subdirectory of the apps directory of the same name as the application. Each application must reside in its own subdirectory.

The substructure of the consortium-specific packages is left entirely to AIPS++ consortium members to determine.

There are a number of other subdirectories of /aips++/code which are unrelated to packages. The install subdirectory contains all of the utilities required to install and maintain AIPS++ as discussed in this document. doc contains AIPS++ documentation sources, including the AIPS++ ``specs'', ``memos'', and ``notes'' series, and reference and design documentation in the corresponding subdirectories.

Also below /aips++/code is an include subdirectory which contains symbolic links to the implement subdirectories for each package. The purpose of these symlinks is to allow AIPS++ includes to be specified as ``#include <package/Header.h>'' by adding -I/aips++/code/include to the include path.

On AIPS++ consortium installations an additional admin subdirectory of /aips++/code contains files relating to the administration of the AIPS++ project.

The /aips++/code directory hierarchy appears as follows:

         :                                         +--- App1 ----
         :                           +--- apps ----+--- App2 ----
         |                           |             +--- .... ----
         |                           |
         |                           |             +-- Module1 --+--- test ----
         |                           +- implement -+-- Module2 --+--- test ----
         |                           |             +--- .... ----
         |                           |             +--- test ----
         |                           |
         |             +--- aips ----+-- fortran --+...
         |             |             +-- scripts --
         |             |             +--- data ----
         |             |
         |             +--- dish ----+...
         |             +- synthesis -+...
         |             +--- vlbi ----+...
         |             +-- contrib --+...
         |             +--- trial ---+...
         |             |
         |             +--- atnf ----+...
         |             +--- bima ----+...
         |             +--- drao ----+...
         |             +--- nfra ----+...
         |             +--- nral ----+...
         |             +--- nrao ----+...
         |             +--- tifr ----+...
/aips++ -+--- code ----+
         |             |             +- codedevl --
         |             |             +- codemgmt --
         |             +-- install --+- docutils --
         |             |             +- printer ---
         |             |             +-- <arch> ---
         |             |
         |             |             +-- design ---+...
         |             |             +--- html ----
         |             |             +--- memos ---
         |             |             +--- notes ---
         |             +---- doc ----+-- papers ---
         |             |             +-- project --
         |             |             +- reference -
         |             |             +--- specs ---
         |             |             +--- .... ----
         |             |
         |             +-- include --
         |             |
         |             |             +- personnel -
         :             +--- admin ---+- projects --
         :                           +-- system ---


Documentation directories

The /aips++/docs subdirectory, or $AIPSDOCS1.2) contains ASCII, HTML and POSTSCRIPT documents compiled from the sources in /aips++/code/doc whose directory structure it shadows:

         :             +--- aips ----+...
         :             +--- dish ----+...
         |             +--- .... ----+...
         |             |
         |             +-- design ---+...
         |             +--- html ----
         |             +--- memos ---
/aips++ -+--- docs ----+--- notes ---
         |             +-- papers ---
         |             +-- project --
         |             +- reference -
         :             +--- specs ---
         :             +--- .... ----

html files compiled from inline comments in the C++ source code are deposited in the various package-specific subdirectories.


System directories

The AIPS++ system directory hierarchy is created in the first instance when AIPS++ is installed (see §2), and maintained thereafter by the sysdirs target which is invoked by allsys in the top level makefile (p[*]).

Except for the aipsinit (p[*]) files in $AIPSROOT, the AIPS++ system is completely self-contained within the architecture-specific subdirectory, referred to as $AIPSARCH1.2). In this context ``architecture'' should be interpreted to include variants in the operating system version and compiler.

In practical terms, the fact that the AIPS++ system does not rely on anything in the $AIPSCODE directories allows the source code to be deleted after the AIPS++ installation is complete in a production-line system.

At an AIPS++ development site with machines of several architectures where the source code must be retained, the strict separation of code from system provides for the $AIPSARCH tree to reside on a machine of the corresponding architecture without duplication of the code directories. With thoughtful unix filesystem management it also allows that the AIPS++ system for one architecture may remain available even if the server for any other architecture has crashed.

The system directories have the following structure:

         :             +---- lib ----+...
         :             +---- bin ----
         |             |
         |             +-- libdbg ---+...
         |             +-- bindbg ---
         |             |
         |             +-- bintest --
         |             |
         |             +-- libexec --
         |             |
         |             +---- aux ----
         |             +---- tmp ----+...
         |             |
         |             |             +--- info ----
/aips++ -+-- (arch1) --+---- doc ----+--- man1 ----
         |             |             +--- cat1 ----
         |             |             +---  :
         |             |
         |             |             +-- (host1) --
         |             +-- (site1) --+-- (host2) --
         |             |             +--   :
         |             |
         :             +-- (site2) --+...
         :             +---   :

The lib directory contains optimized static object libraries and possibly sharable objects. It sometimes also contains a subdirectory which serves as a C++ template repository. The bin directory contains AIPS++ system scripts and optimized applications. It is added to the PATH environment variable by the aipsinit (p[*]) scripts.

The libdbg and bindbg directories contain debug versions of the libraries and executables. The bindbg directory is not usually populated but serves as the temporary residence for executables which are in the process of being debugged.

The bintest directory is used temporarily to store test executables and test results, and libexec contains scripts of various kinds which are not meant to be executed directly but are instead included by other scripts.

Files which are produced as intermediaries of system generation are cached in the aux directory. In particular, it includes dependency lists generated by the makefiles. Temporary storage is provided during a rebuild beneath the tmp directory. The structure and usage of the tmp directory hierarchy is soley the concern of the AIPS++ makefiles. It contains subdirectories specific to each AIPS++ package (see §1.1.1).

Online documentation is contained in the doc subdirectory. This includes unix manual pages and help files. The aipsinit (p[*]) scripts add this directory to the MANPATH environment variable if it is defined at the time that aipsinit is invoked.

Finally, the $AIPSARCH directory contains site subdirectories which contain site-specific aipsrc and makedefs files (see §1.3), and possibly host-specific subdirectories which in turn contain host-specific aipsrc files. Multiple site-, and host-specific directories were provided to make it easier for a central site to administer AIPS++ for a collection of remote sites. If properly configured, it should allow a verbatim copy of the AIPS++ system at the central site to be downloaded at the remote site with only a minimum of reconfiguration required.


RCS directories

The AIPS++ RCS directories are maintained only at AIPS++ code development sites. They are not provided with the end-user AIPS++ distribution.

The one true AIPS++ master RCS repository resides on host aips2.nrao.edu at NRAO's Array Operations Center in Socorro, New Mexico, USA. This is the working copy for AIPS++ code management, consortium sites access this one way or another for checkin and checkout (see §9).

The master RCS directory hierarchy is the same as the code hierarchy described above except that the master has an etc subdirectory which is used for central administrative purposes (see §13). In order to reduce the amount of network traffic involved in a checkin/out the master only contains revisions for the current and preceding major AIPS++ version numbers (see avers (p[*])). A separate archive repository contains all revisions other than those for the current major version number.

         :             +--- etc -----
         :             |
         |             |             +--- apps ----+...
         |             |             +- implement -+...
         |             +--- aips ----+-- fortran --+...
         |             |             +-- scripts --
         |             |             +--- data ----
         +-- master ---+
         |             +--- dish ----+...
         |             +- synthesis -+...
         |             +--- vlbi ----+...
         |             +-- contrib --+...
         |             :
---------+
         |             +--- etc -----
         |             |
         |             |             +--- apps ----+...
         |             |             +- implement -+...
         |             +--- aips ----+-- fortran --+...
         |             |             +-- scripts --
         |             |             +--- data ----
         +-- archive --+
         |             +--- dish ----+...
         |             +- synthesis -+...
         |             +--- vlbi ----+...
         :             +-- contrib --+...
         :             :

Most AIPS++ consortium sites have the master RCS repository remotely NFS mounted beneath $AIPSROOT, and some also maintain a copy of the archive repository.

All AIPS++ consortium sites, including that at Socorro, maintain a slave RCS repository which is regularly updated by the AIPS++ code distribution system (§8) so that it keeps track of the master (aside from the master/etc directory). This slave RCS repository is used to update the plain-text code directories (§1.1.1).

The AIPS++ makefiles (p[*]) only ever refer to the RCS repositories indirectly, through a symbolic link called rcs which usually points to slave but could, in principle, be switched to point to master or archive.

         :
         :
         +- (master) --+...
         +- (archive) -+...
         |                           +--- apps ----+...
         |                           +- implement -+...
         |             +--- aips ----+-- fortran --+...
         |             |             +-- scripts --
         +---- rcs     |             +--- data ----
         |      =      |
/aips++ -+--- slave ---+
         |             +--- dish ----+...
         |             +- synthesis -+...
         |             +--- vlbi ----+...
         :             +-- contrib --+...
         :             :

inhale (p[*]) creates a tmp directory beneath the slave directory for the duration of its operation.


ftp directories

The AIPS++ ftp directories contain compressed tar files for distribution of AIPS++ sources. These reside directly under the AIPS++ master's root directory which on the AIPS++ master host aips2.nrao.edu is also the home directory of the anonymous ftp account, ~ftp/pub. This allows the ftp directories, the master RCS repository, and the archive RCS repository to be accessible via anonymous ftp.

         +-- master ---+...
         +-- archive --+...
~ftp ----+
         |             +-- master ---
         +---- pub ----+--- code ----
                       +-- import ---

There are three main ftp directories. The plain-text AIPS++ sources required for an end-user installation are stored in pub/code. Separate gzip'd tar files are provided for each AIPS++ package (see §1.1.1) in keeping with the optional nature of package installations.

Third-party public-domain software required by AIPS++ is redistributed in pub/import. If necessary, utilities essential for AIPS++ are automatically fetched from here by configure (p[*]) when AIPS++ is first installed.

The pub/master directory serves as a repository for the update files produced by the code distribution system (see exhale (p[*])). exhale also creates a tmp subdirectory within it for the duration of its operation.

It is intended that ftp directories will also be provided for patches and distribution of binary installations once AIPS++ gains a user base. At that time consortium sites will also act as distributors of AIPS++ for their local geographic region, but until then the ftp distribution files will only be available from aips2.nrao.edu.


next up previous contents index
Next: AIPS++ variable names Up: Overview Previous: Overview   Contents   Index
Please send questions or comments about AIPS++ to aips2-request@nrao.edu.
Copyright © 1995-2000 Associated Universities Inc., Washington, D.C.

Return to AIPS++ Home Page
2006-10-15