CASA Configuration Management
CASA is a rich software system, and as such it requires a number of packages to be installed correctly. Successful runtime operation of the system is one thing; building it requires even more care in configuration management and package curation.
To avoid the most common problems, we've adopted a configuration management system from a (formerly?) popular Linux distribution
. Applied to source code packages, this config system is a particularly good fit for managing a source-level development environment for CASA.
I want to talk about the way to start with a Linux or Mac OS X machine, check out the source code, and build CASA in a way that permits the developer to make modifications to the code, that is understandable to the developer.
Prerequisite Packages as Binary Distribution
The system team (DarrellSchiebel
) will provide a binary tarball (compressed tar archive) that extends the end-user CASA tarball by adding a development environment for CASA (header files and libraries for all prerequisite packages, compilers etc.).
Developers who work primarily with CASA C++ source will not need addtional packages; a configuration script will set up the environment correctly to point to this binary distribution.
Why Now? What's Changed?
If a binary distribution is so great, why wasn't it done before?
Library References: The key issue is library referencing
-- we need to ensure that CASA is linked with the correct libraries. Setting LD_LIBRARY_PATH should be sufficient in most cases, but in practice we had linking issues. System Compatibility: The ALMA-CASA specification calls for CASA to use the ALMA-ACS standard environment (Python, libraries, etc.), and this setup does not comply. System Management: It's very well to distribute a one-shot binary for developers, but an infrastructure needed to be in place so that we can support revisions to the binary.
Before we get into the config system, it would be a good idea to review the source code repository structure, and to understand how the CASA system should be laid out on the developer's local hard disk.
On-Disk Layout I: End-User
On-Disk Layout II: Developer
CASA Repository Notes
See here for CasaSourceRepositoryNotes
CASA Mac Configuration Notes
See here for CasaMacConfigurationNotes