CASA Package Contents

This page describes the contents and organization of CASA packages published by the CASA project in enough detail to allow CASA developers to produce correct and consistent packages. This page includes both requirements and design.

This page does not describe the process for producing packages. That will be described elsewhere.

Status: INCOMPLETE DRAFT
  • TODO: audit a current dmg installation and ensure all files and directories are covered.
  • TODO: audit a current rpm installation and ensure all files and directories are covered.
  • TODO: audit a current tar installation and ensure all files and directories are covered.

Package Types

There are two types of CASA packages. Proto packages and publishable packages.

Proto Packages

Proto packages contain code and data built from CASA source from either change control or from a developer's workspace. They do not contain any 3rd party software unless a developer is working on a bug fix for 3rd party software required for CASA development.

Proto packages will be used within the package deployment pipeline as inputs for creating publishable packages.

Proto packages may be shared between CASA developers and with specific CASA users who are collaborating with CASA developers on features. This will only be useful for developers and users working on the same platform.

Proto packages must not be shared beyond these groups. They will not usable outside a CASA development computer, and will only be useful on the OS and version they are built on.

Proto packages must be movable, as a unit, within a file system using common file system operations (cp -a, mv, your favorite file manager GUI, etc.). This allows us to distribute build and test work across different user accounts on different computers without depending on a slow NFS filesystem.

Publishable Packages

Publishable packages contain everything included in a previously built proto package, plus all 3rd party code and data required to run CASA on one of the supported operating systems. 3rd party code and data will be copied from installed packages on the package build computer. Which code and data will vary by operating system.

Publishable packages are as self contained as we can practically make them to reduce the chance of CASA breaking due to other package changes on a user's computer. They must function independently of a CASA development environment.

Publishable packages include all CASA and 3rd party header files an independent software developer may need to compile and link their own code with CASA.

Publishable packages include debug symbols to allow an independent software developer to debug CASA or their own code compiled and linked with CASA. This includes source built from CASA change control repositories, and CASA 3rd party packages. Whether platform packages include debug symbols or not is beyond our control.

Publishable packages must be movable, as a unit, within a file system. This allows users some flexibility in installing packages.

General

The layout of a CASA package is based on the Filesystem Hierarchy Standard (FHS). Sections of this standard that describe code and data CASA does not deliver are ignored.

Linux packages will contain only directories from the FHS described below. This is the common directory tree.

OS X packages will contain additional directories required to implement OS X apps. Where possible, the OS X specific directories will be populated with symlinks to files in the common directory tree within that package. This should allow Linux developers to navigate OS X packages more easily.

Duplicate files are not allowed.

Common Directories

A Package Directory

A CASA package shall be completely contained within a single top level directory named as described in CASA Package Naming. This directory will not contain any files. It will only contain the directories listed below.

This directory may reside at any valid location on the host computer file system.

bin/

bin/ contains all CASA user commands. It contains only CASA user commands. It does not contain any 3rd party package commands.

These commands should be listed and described in the CASA User Reference and Cookbook.

Implementation notes:
  1. This is the only directory a CASA user should add to their $PATH.
  2. If CASA commands require any environment setup beyond setting $PATH, this must be coded in a script that will be installed in bin/ that will start other commands installed in libexec/.
  3. Other CASA build components (casacore, asap) default build configurations may install commands in bin/ that are not useful to CASA users. We will have to decide which should remain in bin/, which should be moved to sbin/ or libexec/, which should not be packaged at all, and how to customize casacore and asap builds to give us the results we want with minimal upstream maintenance.

etc/

etc/ contains configuration files required by CASA, and example configuration files that users may want to copy and customize. It does not contain any 3rd party package configuration files.

include/

include/ contains include files required to build code that links with CASA. It does not contain any 3rd party package include files.

lib/

lib/ contains all libraries developed by CASA. It does not contain any 3rd party package libraries.

libexec/

libexec/ contains all commands included in CASA that are not intended to be run directly by CASA users. These commands are run by other programs, but are not directly useful to users. It does not contain any 3rd party package commands.

sbin/

sbin/ contains all commands included in CASA that support administration of the CASA package. For example, a script that updates share/data/. It does not contain any 3rd party package commands.

Implementation notes:
  1. Other CASA build components (casacore, asap) default build configurations may install commands in sbin/ that are not useful to CASA users. We will have to decide which should remain in sbin/, which should be moved to libexec/, which should not be packaged at all, and how to customize casacore and asap builds to give us the results we want with minimal upstream maintenance.

share/

share/ contains data and xml directories.

share/data/

share/data/ contains (or symlinks to) a complete copy of CASA run time data required by users. It does not contain any 3rd party package data.

CASA packages contain a current copy of this data at the time of publication. CASA provides a mechanism to update this data after installation.

share/xml/

share/xml/ contains all xml and xsl files required by CASA. It does not contain any 3rd party package data.

usr/

usr/ contains all CASA 3rd party code and data. This provides a clear distinction between CASA and 3rd party code and data.

While the name usr/ does not make it clear that it contains 3rd party code and data, I think this use most closely to the FHS.

OS X Directories

To be written

To Be Moved or Deleted

The following directories exist in current CASA packages. Their contents will be moved to a location consistent with the FHS.

data/

This will move to share/data/.

java/

java/ contains a copy of saxon8.jar. This is just a Java library, and will be moved to usr/lib/.

var/

var/ contains several directories used by dbus. These will move to usr/var/.

xml/

xml/ contains xml and xsl files for CASA tasks. These will move to share/xml/.

-- ScottRankin - 2013-04-23
Topic revision: r10 - 2013-10-28, ScottRankin
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding NRAO Public Wiki? Send feedback