From 76459aa497ae93e6d6dafd7f10d4f91e269c1013 Mon Sep 17 00:00:00 2001 From: Michael Wimmer <wimmer@lorentz.leidenuniv.nl> Date: Thu, 22 Aug 2013 14:45:14 +0200 Subject: [PATCH] add Mac OSX instructions for installing from package, update the Mac from source instructions --- INSTALL | 271 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 203 insertions(+), 68 deletions(-) diff --git a/INSTALL b/INSTALL index e923cc3..3f7fc77 100644 --- a/INSTALL +++ b/INSTALL @@ -1,6 +1,165 @@ -============================= -Building and installing Kwant -============================= +================ +Installing Kwant +================ + +Kwant can be installed either using some prepared packages (on Linux, Mac OSX, +and Windows), or it can be built and installed from source. + +Installation from packages is in general advisable, especially for novice +users. Expert users may find it helpful to build Kwant from source, as this +will also allow them to customize Kwant to use certain optimized versions of +libraries. + + +****************************** +Installing Kwant from packages +****************************** + +Mac OSX +======= + +There is a number of different package managers for bringing software +from the Unix/Linux world to Mac OSX. Since the community is quite +split, we provide kwant and its dependencies both via the `MacPorts +<http://www.macports.org>`_ and `homebrew <http://brew.sh>`_ systems. + +MacPorts +-------- + +MacPorts is a full-fledged package manager that recreates a whole Linux-like +environment on your Mac. It requires little choices to be made by the user, +and allows for the simplest way to install kwant. + +In order to install kwant, you have to + +1. Install a recent version of MacPorts, as explained in the + `installation instructions of MacPorts + <http://www.macports.org/install.php>`_. + In particular, as explained there, you will have to install also a + few prerequisites, namely + + * the Xcode developer tools (compiler suite for Mac OSX) from + `<http://developer.apple.com/downloads>`_. You need an Apple ID to + download: Note that if you have one already from using the App store + on the Mac/Ipad/Iphone/... you can use this one. You will also need the + command line tools: Within Xcode 4, you have to download them by going to + `Xcode->Preferences`, click on `Download`, go to `Components`, + select `Command Line Tools` and click on `Install`. Alternatively, you can + also directly download the command line tools from the + Apple developer website. + * if you have MacOSX 10.8 or higher, the X11 server from the + `XQuartz project <http://xquartz.macosforge.org>`_. + +2. After the installation, open a terminal and execute :: + + echo http://dl.dropboxusercontent.com/u/769003/ports.tar | sudo tee -a /opt/local/etc/macports/sources.conf >/dev/null + + (this adds the kwant MacPorts download link + `<http://dl.dropboxusercontent.com/u/769003/ports.tar>`_ at the end of the + ``sources.conf`` file.) + +3. Execute :: + + sudo port selfupdate + +4. Now, install kwant and its prerequisites :: + + sudo port install py27-kwant + +5. Finally, we choose python 2.7 to be the default python :: + + sudo port select --set python python27 + + After that, you will need to close and reopen the terminal to + have all changes in effect. + +Notes +..... + +* If you have problems with macports because your institution's firewall + blocks macports (more precisely, the `rsync` port), resulting in + errors from ``sudo port selfupdate``, follow + `these instructions <https://trac.macports.org/wiki/howto/PortTreeTarball>`_. +* Of course, if you already have macports installed, you can skip step 1 + and continue with step 2. + +homebrew +-------- + +homebrew is a recent addition to the package managers on Mac OSX. It is +more lightweight, tries to be as minimalistic as possible and give the user +more freedom. Because of that, it requires a little more experience on +the user side compared to MacPorts. The requirements are moderate though, +if you know how to add directories to the ``$PATH`` variable for your shell, +you are safe. + +1. Open a terminal and install homebrew as described on the `homebrew + homepage <http://brew.sh>`_ (instructions are towards the end of + the page) + +2. Run :: + + brew doctor + + and follow its directions. It will ask for a few prerequisites to be + installed, in particular + + * the Xcode developer tools (compiler suite for Mac OSX) from + `<http://developer.apple.com/downloads>`_. You need an Apple ID to + download: Note that if you have one already from using the App store + on the Mac/Ipad/Iphone/... you can use this one. Note that downloading + the command line tools (not the full Xcode suite) suffices. If you have + the full Xcode suite installed, you might need to download the command + line tools manually if you have version 4 or higher. In this case + go to `Xcode->Preferences`, click on `Download`, go to `Components`, + select `Command Line Tools` and click on `Install`. + * although `brew doctor` might not complain about it right away, + while we're at it, you should also install the X11 server from the + `XQuartz project <http://xquartz.macosforge.org>`_ if you have Mac + OSX 10.8 or higher. + +3. Add permanently ``/usr/local/bin`` before ``/usr/bin/`` in the ``$PATH$`` + environment variable of your shell, for example by adding :: + + export PATH=/usr/local/bin:$PATH + + at the end of your ``.bash_profile`` or ``.profile``. Then close + the terminal Terminal and reopen it again. + +4. Install a few prerequisites :: + + brew install gfortran python + +5. Add additional repositories :: + + brew tap homebrew/science + brew tap samueljohn/python + brew tap michaelwimmer/kwant + +6. Install kwant and its prerequisites :: + + pip install nose + brew install numpy scipy matplotlib + brew install kwant + +Notes +..... + +- If something does not work as expected, use ``brew doctor`` for + instructions (it will find conflicts and things like that). +- As mentioned, homebrew allows for quite some freedom. In particular, + if you are an expert, you don't need necessarily to install + numpy/scipy/matplotlib from homebrew, but can use your own installation. + The only prerequisite is that they are importable from python. (the + kwant installation will in any case complain if they are not) +- In principle, you need not install the homebrew python, but could use + Apple's already installed python. Homebrew's python is more up-to-date, + though. + + +***************************************** +Building and installing Kwant from source +***************************************** Prerequisites ============= @@ -122,87 +281,63 @@ and select the "libblas.so.3gf" alternative when prompted by the second command. Mac OS X -------- -These instructions were verified in April 2013 under Mac OS X 10.8.2 - -The instructions also include installing MUMPS for optimal performance -of Kwant. If you choose to omit MUMPS, you can skip over the optional -steps 3 and 5. +The required dependencies of kwant are best installed with one of the packaging +systems. Here we only consider the case of `MacPorts +<http://www.macports.org>`_ in detail. Some remarks for homebrew are given +below. -1. Install the current version of `MacPorts - <http://www.macports.org/>`_. As a prerequisite, you will also - have to install a current version of Xcode (Apple's developer - tools). For that, follow the `installation instructions of MacPorts - <http://www.macports.org/install.php>`_. (Note that you will need an - account with Apple to download the latest version of Xcode). +1. In order to set up MacPorts or homebrew, follow steps 1 - 3 of + the respective instructions of `MacPorts`_ -2. Install the required packages:: +2. Install the required dependencies:: - sudo port install gcc48 - sudo port install python27 + sudo port install gcc47 python27 py27-numpy py27-scipy py27-matplotlib mumps_seq sudo port select --set python python27 - sudo port install py27-numpy py27-scipy py27-cython py27-matplotlib -3. (OPTIONAL) For the best performance, install also the MUMPS library and its - prerequisites. - - * Download `METIS <http://glaros.dtc.umn.edu/gkhome/metis/metis/overview>`_. - You need to download version 4.0.3 from the METIS `download page - <http://glaros.dtc.umn.edu/gkhome/fsroot/sw/metis/OLD>`_ (the newer - versions have an incompatible interface). - - In order to compile metis, edit the corresponding lines in - ``Makefile.in`` such that they read:: - - CC = gcc-mp-4.8 - COPTIONS = -fPIC - LDOPTIONS = -fPIC - - Then, execute ``make``. - - * Download `MUMPS <http://graal.ens-lyon.fr/MUMPS/>`_. In order to install - it, copy ``Make.inc/Makefile.gfortran.SEQ`` to ``Makefile.inc``, and - edit in it the corresponding lines such they read:: - - LMETISDIR = <metisdir> - LMETIS = -L$(LMETISDIR) -lmetis - - ORDERINGSF = -Dpord -Dmetis - - CC = gcc-mp-4.8 - FC = gfortran-mp-4.8 - FL = gfortran-mp-4.8 - - LIBBLAS = -lblas - - OPTF = -O -DALLOW_NON_INIT -fPIC - OPTL = -O -fPIC - OPTC = -O -fPIC - - where ``<metisdir>`` is the directory of METIS. - - Then, execute ``make all``. - -4. Unpack Tinyarray, enter its directory, build and install:: +3. Unpack Tinyarray, enter its directory, build and install:: python setup.py build sudo python setup.py install -5. (OPTIONAL) To make Kwant use MUMPS, go to the Kwant directory, and - edit ``build.conf`` to read:: +5. Unpack Kwant, go to the Kwant directory, and edit ``build.conf`` to read:: + [lapack] + extra_link_args = -Wl,-framework -Wl,Accelerate [mumps] - include_dirs = <mumpsdir>/include - library_dirs = <mumpsdir>/lib <mumpsdir>/libseq <metisdir>/ - libraries = zmumps mumps_common pord metis mpiseq - - where ``<mumpsdir>`` and <metisdir>`` are the driectories of the previously - installed MUMPS and METIS. + include_dirs = /opt/local/include + library_dirs = /opt/local/lib + libraries = zmumps_seq mumps_common_seq pord_seq esmumps scotch scotcherr mpiseq gfortran 6. Then, build and install Kwant. :: - python setup.py build + CC=gcc-mp-4.7 LDSHARED='gcc-mp-4.7 -shared -undefined dynamic_lookup' python setup.py build sudo python setup.py install +You might note that installing kwant on Mac OSX is somewhat more involved than +installing on Linux. Part of the reason is that we need to mix Fortran and C +code in Kwant: While C code is usually compiled using Apple compilers, +Fortran code must be compiled with the Gnu Fortran compiler (there is +no Apple Fortran compiler). For this reason we force the Gnu compiler suite +with the environment variables ``CC`` and ``LDSHARED`` as shown above. + +Notes on homebrew +................. + +It is also possible to build kwant using homebrew. The dependencies can be +installed as :: + + brew install gfortran python + brew tap homebrew/science + brew tap samueljohn/python + brew tap michaelwimmer/kwant + pip install nose + brew install numpy scipy matplotlib + brew install mumps_seq + +Note that during the installation you will be told which paths to add when you +want to compile/link against scotch/metis/mumps; you need to add these to the +build.conf file. Also, when linking against mumps, one needs also to link +against metis (in addition to the libraries needed for MacPorts). Microsoft Windows ----------------- -- GitLab