Making Cactus Installable
Making Cactus installable like any other Ubuntu package has several obvious benefits:
- HPC centres can install Cactus, ensuring it is available by default in many places
- Beginners have an easy way to get started, which may be even simpler than our current download instructions
- Cactus would not seem "strange" and "different" any more; the notion would shift from "putting things _into_ Cactus" to "using Cactus", which is what it should be
- We cannot build in the source tree any more. While a pre-built, binary package would also make sense, many people will want to use Cactus from their own thorns, and all the object and executable files thus need to live outside of the main source tree (the "Cactus" directory).
- We cannot require that all thorns live in the "arrangements" directory. Instead, the thorns' locations either need to be specified explicitly in the thorn list (which would make these non-portable), or there needs to be a THORNPATH environment variable defining which directories are search for thorns in what order (which would introduce its own complications).
- We cannot use "make" to interface with Cactus; instead, we need a wrapper script (e.g. called "cactus") that does this, and which resides in one of the usual "bin" directories. This is not complicated, since the main Makefile doesn't make use of any of make's features, it is just a shell script in disguise, and rewriting it in Perl of Python would be straightforward. (And would greatly improve on our error reporting!)
- We need a way to support utilities that are not thorns, e.g. visualisation tools, Simfactory, CRL.
- If Cactus is installed by default, it would make sense to also choose a particular set of compiler options by default, and to ensure that external libraries for these defaults are pre-built. This could either use system libraries (via Ubuntu's package dependency mechanism), or we could pre-build certain libraries into a default location when Cactus is installed. The latter would require that installing is more than just checking out Cactus; in addition, one would need to build these libraries.