Building CASA


I recommend building CASA using the NiX tool. See this paper for the complete details.

The instructions on this page are out of date and retained for sake for historical completeness only


Missing symbols with names similar to pgsbox, e.g., a dynamic loading error of type:

ImportError: /home/bnikolic/d/n/casa-nrao/main/code/build/test/ undefined symbol: pgsbox_

are due to an incorrect link with one of the libraries that are part of WCSlib. Note that wcslib needs to be compiled -fPIC for linking to work correctly, and it apparently fails to be compiled in this way on some platforms/compilers (see also Position independent code).

Interface Description Language (IDL) files

There are two separate sources of IDL files within CASA:

  1. Static IDL files that are manually written and maintained in the revision control system
  2. Automatically generated IDL files from the files describing each of the tools of CASA. This conversion is implemented using XSLT and is in fact a chain of XML->XML->IDL conversions.


Tools are defined by the *.xml files in the xmlcasa/implement sub-directory.

Python module

This is a description of the process by which Python loads external dynamic modules:

One implication of this is that the name of the shared dynamic library generated by the casa build system has to be to be loaded in Python, since the initialisation function has this name.

Error in _import_array

Usually occurs if there is a mismatch between versions of numpy which was picked up in the header files and the shared library. On appcd:

export PYTHONPATH=/home/bnikolic/d/p/cs/lib64/python/:$PYTHONPATH


This appears to be a component of IPython involved in parallel execution. (I do not see how parallelism at this granularity is useful for normal processing of astronomical data though…) It is referenced in

Global log tool

See, line:


creates it. Complete crash otherwise.

Table browser

Separate application, casabrowsetable script

Notes on other libraries

The following need to be linked in although this may not be obvious:

  • -lreadline, -ltermcap (not sure what is pulling those ones in)