A goal of the xSDK is to simplify the process of working with various xSDK packages in combination. Thus, the installation script will, by default, download and install four xSDK numerical libraries (hypre, PETSc, SuperLU_dist, and Trilinos) as well as some commonly needed external packages (boost, HDF5, NetCDF, exodusii, METIS, and ParMETIS).
- To use an already installed package, add the argument --with-xxx-dir=/dir, for example, --with-boost-dir=/usr/local
- To prevent downloading a particular package, add the argument --download-xxx=0, for example, --download-trilinos=0
- To install a subset of packages, you must turn off all packages you do not want.
##Obtaining the installation script
git clone https://github.com/xsdk-project/installxSDK.git or
curl https://raw.githubusercontent.com/xsdk-project/installxSDK/master/installxSDK.sh > installxSDK.sh
##Usage
sh ./installxSDK --prefix="installation directory" [other configure options]
##Example
sh ./installxSDK --prefix=/usr/local/xSDK --with-mpicc=/usr/local/mpich/bin/mpicc --with-mpicxx=/usr/local/mpich/bin/mpicxx --with-mpif90=/usr/local/mpich/bin/mpif90
##Useful Options
--download-mpich Useful if you do not have an MPI installed on your machine.
--with-blaslapack-dir="directory to locate BLAS and LAPACK" Usually you should not need this.
--with-git=0 Do not use git to download any of the packages; use the tarballs instead.
--disable-debug Build optimized version of libraries (debug is the default).
--with-boost-dir="directory where boost is installed" Boost takes forever to install so this is a good option to use if you have boost installed already.
--with-trilinos=0 Intall xSDK except for Trilinos (Boost is also not installed since it is needed only by Trilinos).
--download-xxx=/directoryname Add your own package to be automatically downloaded and
installed. /directoryname/xxx.py should contain a subclass of config.package.GNUPackage,
config.package.CMakePackage, or config.package.Package containing specific information
about your package, its download location and dependencies. See, for example,
http://www.mcs.anl.gov/petsc/petsc-dev/config/BuildSystem/config/packages/hypre.py,
http://www.mcs.anl.gov/petsc/petsc-dev/config/BuildSystem/config/packages/metis.py, or
http://www.mcs.anl.gov/petsc/petsc-dev/config/BuildSystem/config/packages/triangle.py.
This functionality was suggested by Ethan Coon.
##Application-Specific Installs
Work in the xSDK is motivated by large-scale scientific applications, including use-cases in environmental system science. The xSDK includes the Alquimia geochemistry package, which in turn uses PFlotran as a chemistry engine. The script can install these application-specific packages, as indicated below. The script can also install external packages that are needed by the Amanzi application.
--download-alquimia --download-pflotran Install Alquimia and PFlotran.
--download-ideas Install xSDK packages and external software needed by Amanzi.
##Notes
Use a different prefix for debug and optimized builds.
Except for a couple of minor exceptions, this script will NOT rebuild packages that
have not changed between calls to the script. Thus, calling it a second time with the
same prefix will be much faster.
This script has very little automatic management of dependencies or version management.