1.3. Download and installation from source on Mac OS X (10.8–10.11)¶
1.3.1. Disclaimer¶
HORTON has been tested on Mac OS X 10.8–10.11 using MacPorts. If you are running any other version of OS X or if you are using other package managers, some of the instructions below may not work.
1.3.2. MacPorts¶
We strongly recommend that you install all of the packages required by HORTON through MacPorts. The latest version of MacPorts can be downloaded from the web: https://www.macports.org/install.php. This guide has been tested using MacPorts 2.3.3 but should also work with newer versions.
Note
If you have already installed a Python distribution (with another package manager than MacPorts), such as Canopy, it may interfere with the one installed through MacPorts. The instructions below assume that no such other installation of Python is present.
1.3.2.1. Quick tour of MacPorts¶
Here are some basic MacPorts commands:
updating ports (recommended):
sudo port -v selfupdate
upgrade ports:
sudo port upgrade outdated
finding ports (e.g, port_name = python27):
sudo port list python27
searching ports (e.g, port_name = python27):
port search python27
installing ports (e.g, port_name = python27):
sudo port install python27
selecting ports (e.g, select python27 as python):
sudo port select --set python python27
1.3.3. Dependencies for building, installing and testing HORTON¶
In order to compile and test HORTON, you need to install relatively recent versions of the following programs/libraries:
- GCC, G++ and GFortran >=4.9: http://gcc.gnu.org (In principle the Intel compilers or any other combination of C++11 and Fortran compiler should work. The GNU compilers are used for development and testing.)
- Python >=2.7,<3.0: http://www.python.org/ (Also install development files.)
- Nosetests >=1.1.2: http://readthedocs.org/docs/nose/en/latest/
- NumPy >=1.9.1: http://www.numpy.org/
- SciPy >=0.11.0: http://www.scipy.org/
- Cython >=0.17.1: http://www.cython.org/
- H5Py >=2.2.1: http://www.h5py.org/
- Sympy >=0.7.1: http://code.google.com/p/sympy/
- Matplotlib >=1.0: http://matplotlib.org/
- LibXC ==2.2.2: http://www.tddft.org/programs/octopus/wiki/index.php/Libxc (Also install development files.)
- LibInt ==2.0.3: http://sourceforge.net/p/libint/home (Also install development files.)
- Curl >=7.0: http://curl.haxx.se/
- PIP >=7.0: https://pip.pypa.io/ (Not required in some scenarios but never bad to have.)
1.3.3.1. Installing the dependencies with MacPorts¶
All dependencies can be installed with MacPorts. We recommend the following ports:
gcc49
: https://trac.macports.org/browser/trunk/dports/lang/gcc49/Portfilepython27
: https://trac.macports.org/browser/trunk/dports/lang/python27/Portfilepy27-nose
: https://trac.macports.org/browser/trunk/dports/python/py-nose/Portfilepy27-numpy
: https://trac.macports.org/browser/trunk/dports/python/py-numpy/Portfilepy27-scipy
: https://trac.macports.org/browser/trunk/dports/python/py-scipy/Portfilepy27-cython
: https://trac.macports.org/browser/trunk/dports/python/py-cython/Portfilepy27-h5py
: https://trac.macports.org/browser/trunk/dports/python/py-h5py/Portfilepy27-sympy
: https://trac.macports.org/browser/trunk/dports/python/py-sympy/Portfilepy27-matplotlib
: https://trac.macports.org/browser/trunk/dports/python/py-matplotlib/Portfilelibxc
: https://trac.macports.org/browser/trunk/dports/science/libxc/Portfilelibint
: https://trac.macports.org/browser/trunk/dports/science/libint/Portfilepy27-pip
: https://trac.macports.org/browser/trunk/dports/python/py-pip/Portfile
These are installed with the following commands. (When MacPorts is installed in user
space, the sudo
can be omitted.):
sudo port install gcc49; sudo port select --set gcc mp-gcc49
sudo port install python27 +readline; sudo port select --set python python27
sudo port install py27-nose; sudo port select --set nosetests nosetests27
sudo port install py27-numpy +atlas
sudo port install py27-scipy +atlas
sudo port install py27-cython; sudo port select --set cython cython27
sudo port install py27-h5py
sudo port install py27-sympy; sudo port select --set py-sympy py27-sympy
sudo port install py27-matplotlib
sudo port install libxc
sudo port install libint
sudo port install py27-pip; sudo port select --set pip pip27
1.3.3.2. Installing dependencies manually¶
LibXC
The directory tools/qa
of the HORTON source tree contains scripts to download and
build LibXC, which will work on most systems:
./tools/qa/install_libxc-2.2.2.sh
This results in a LibXC library suitable for compiling HORTON. If this fails, consult your local Mac guru to build LibXC. If you decided to make a custom compilation of LibXC, keep in mind that it is not reliable when using aggressive compiler optimization flags. For more info about LibXC, check the website: http://www.tddft.org/programs/octopus/wiki/index.php/Libxc
LibInt2
The directory tools/qa
of the HORTON source tree contains scripts to download and
build LibInt2, which will work on most systems:
./tools/qa/install_libint-2.0.3.sh
The compilation of LibInt2 takes a few minutes and results in a library suitable for compiling HORTON. If this fails, consult your local Mac guru to build LibInt2. For more info about LibInt2, check the website: https://github.com/evaleev/libint
1.3.4. Download the code¶
The latest stable source code release of HORTON can be downloaded here:
Choose a suitable directory, e.g. ~/build
, download and unpack the archive:
mkdir -p ~/build
cd ~/build
curl -kLO https://github.com/theochem/horton/releases/download/2.1.0b3/horton-2.1.0b3.tar.gz
tar -xvzf horton-2.1.0b3.tar.gz
cd horton-2.1.0b3
Alternatively, you could use MacPorts to install HORTON:
1.3.5. Compilation and installation¶
1.3.5.1. Build and install¶
The regular build and install is done as follows:
./setup.py install --user
The setup.py
script makes a reasonable attempt configuring the compiler and
linker settings for the LibXC and LibInt2 libraries. However, this does not work in all
environments. In case of a failure, or if a configuration other than the default is
desired, read the following section.
1.3.5.2. Overriding default compiler/linker settings for LibXC and LibInt2¶
The manual configuration of the compiler and linker settings is described here: Controlling dynamic/static linking against LibXC and LibInt2. You should read this section if the default build and install failed or if you would like to specify which libraries to use.
1.3.5.3. Runtime configuration¶
You need to set some environment variables to use HORTON. Add the following to
~/.bash_profile
if it exists, otherwise add them to ~/.profile
:
export PATH=${HOME}/Library/Python/2.7/bin:${PATH}
If you run HORTON on a headless node, i.e. without an X server, you need to
configure Matplotlib to use a backend that does not require a graphical user
interface. (See http://matplotlib.org/faq/usage_faq.html#what-is-a-backend for
more details on the Matplotlib backends.) This can be done by adding the
following line to your matplotlibrc
file:
backend: agg
This file is located either in ${HOME}/.matplotlib
or
${HOME}/.config/matplotlib
.
1.3.6. Running the tests¶
To test that HORTON was installed properly and that you can can access it from other directories, you should change to a directory outside of the source tree and call nosetests as follows:
(cd ~; nosetests -v horton)