Installing kratos in macOS
(→Install Boost) |
(→Install Boost) |
||
Line 119: | Line 119: | ||
Finally we will compile Boost in "/Users/''youruser''/kratos/external_libraries/boost_1_59_0/stage". Being inside "boost_1_59_0" in the Terminal, run the following command | Finally we will compile Boost in "/Users/''youruser''/kratos/external_libraries/boost_1_59_0/stage". Being inside "boost_1_59_0" in the Terminal, run the following command | ||
− | ./b2 stage --with-python --with-serialization | + | ./b2 stage --with-python --with-serialization cxxflags="-std=c++11" link=shared,static |
In the end you should see a message like: | In the end you should see a message like: | ||
− | ...updated | + | ...updated 169 targets... |
== Install CMake == | == Install CMake == |
Revision as of 07:54, 25 April 2016
Contents |
Introduction
This section is devoted to explain all the steps to follow for the installation of Kratos in OS X El Capitan (or OS X 10.11). If someone is interested in the old installation of Kratos in OS X Leopard see http://kratos-wiki.cimne.upc.edu/index.php/MacOSX_Installation.
The tutorial assumes that the user has a basic knowledge of Mac OS X and Unix (navigate between directories in Terminal, copy files, execute commands...).
Mac Hardware Requirements
Since this tutorial aims at installing Kratos in OS X El Capitan, the interested user is supposed to own one of Mac models compatible with OS X El Capitan:
- MacBook (Early 2015)
- MacBook (Late 2008 Aluminum, or Early 2009 or newer)
- MacBook Pro (Mid/Late 2007 or newer)
- MacBook Air (Late 2008 or newer)
- Mac mini (Early 2009 or newer)
- iMac (Mid 2007 or newer)
- Mac Pro (Early 2008 or newer)
- Xserve (Early 2009)
Software Prerequisite
The only prerequisite is that the user has OS X El Capitan installed. The rest of software necessary for the proper installation of Kratos will be detailed in the following lines.
Install Xcode
The first step is to obtain the latest version of Xcode (at the time of this writing it is Xcode 7.1). Open the App Store and look for "xcode" in the search box. Select Xcode and start the installation. Bear in mind that all the packages require 4.3 GB of disk space and so this step can take quite a lot of time.
If you had previously installed Xcode, it is advisable to open the App Store and go to Updates to check whether you have the latest version of Xcode.
Once the installation finishes, open Xcode in order to agree the terms of the software license agreements and complete the installation of components. After that you can quit Xcode (cmd+q). Before going on, it is also recommended to verify that the Command Line Tools are properly installed. To do so, open a Terminal (press cmd+space, write "terminal" and hit enter) and use the following command:
xcode-select --install
If a window appears asking whether you want to install the tools now, click on "Install". You must agree the Command Line Tools License Agreement to proceed with the installation. When Xcode is properly installed, you will see the following message every time you run the "xcode-select --install" command.
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
Download Kratos
Next we must download the Kratos Multiphysics source code by means of a subversion manager. OS X El Capitan comes with svn 1.7.20 installed by default, so in order to obtain Kratos we just need to open a Terminal and use the following command:
svn co https://svn.cimne.upc.edu/p/kratos/kratos
It is possible that you get an error message in the validation of the server certificate, for which you will be asked to either reject, accept temporarily or accept permanently the certificate. You need to accept it permanently, thus write p and then press enter. If the download does not start, use again the command "svn co https://svn.cimne.upc.edu/p/kratos/kratos" and wait until you see a message like
Checked out revision 12691.
with the latest revision number. After that, you should have the latest revision of Kratos in the folder "/Users/youruser/kratos".
Install Python
OS X El Capitan has Python 2.7.10 already pre-installed, so we could simply work with that Python 2. However, due to the System Integrity Protection included in OS X El Capitan (https://support.apple.com/en-us/HT204899), errors may appear when loading Kratos modules with the default Python because of it being installed in a protected folder. Therefore, in order to avoid this inconvenience and work with the new version of Python, here we will install Kratos with Python 3.
Download the latest version of Python 3 compatible with your mac from https://www.python.org/downloads/mac-osx/ . In our case the latest version was Python 3.5.1. Right-click on the downloaded file, e.g. "python-3.5.1-macosx10.6.pkg", and open it to initialise the installation wizard of Python. Once Python 3 is installed, you can erase the downloaded package to save space. Moreover, to check that Python 3 is properly configured, open a Terminal and run the following command to see the version
python3 --version
Install Boost
Kratos Multiphysics needs Boost libraries to support some of its functions. Download the latest compatible version of Boost from its official website http://www.boost.org/users/history/ . This tutorial has been tested with version 1.59.0. You can use any version from 1.54 onward except for 1.60.
Open the downloaded file "boost_1_59_0.tar.bz2" to obtain a folder named "boost_1_59_0". You can then erase the compressed file and move the resulting folder into "/Users/youruser/kratos/external_libraries/".
Open a Terminal and navigate to the Boost folder, i.e.
cd cd kratos/external_libraries/boost_1_59_0/
Then execute the following command:
./bootstrap.sh
Now we must modify the generated configuration file "project-config.jam" to indicate that we are going to use Python 3 instead of Python 2. Open the file with the following command:
open -e project-config.jam
and modify the Python configuration section substituting the line in red by the one in green:
# Boost.Build Configuration # Automatically generated by bootstrap.sh import option ; import feature ; # Compiler configuration. This definition will be used unless # you already have defined some toolsets in your user-config.jam # file. if ! darwin in [ feature.values <toolset> ] { using darwin ; } project : default-build <toolset>darwin ; # Python configuration import python ; if ! [ python.configured ] { using python : 2.7 : /System/Library/Frameworks/Python.framework/Versions/2.7 ; using python : 3.5 : /Library/Frameworks/Python.framework/Versions/3.5 : /Library/Frameworks/Python.framework/Versions/3.5/include/python3.5m ; } # List of --with-<library> and --without-<library> # options. If left empty, all libraries will be built. # Options specified on the command line completely # override this variable. libraries = ; # These settings are equivalent to corresponding command-line # options. option.set prefix : /usr/local ; option.set exec-prefix : /usr/local ; option.set libdir : /usr/local/lib ; option.set includedir : /usr/local/include ; # Stop on first error option.set keep-going : false ;
Finally we will compile Boost in "/Users/youruser/kratos/external_libraries/boost_1_59_0/stage". Being inside "boost_1_59_0" in the Terminal, run the following command
./b2 stage --with-python --with-serialization cxxflags="-std=c++11" link=shared,static
In the end you should see a message like:
...updated 169 targets...
Install CMake
CMake is the tool used to compile Kratos. Download the CMake latest release for your Mac version in https://cmake.org/download/ . In our case it was CMake 3.4.3. Open the downloaded file, e.g. "cmake-3.4.3-Darwin-x86_64.dmg", and agree the License Agreement terms. Then drag and drop the CMake application into your Applications folder. After that you can eject "cmake-3.4.3-Darwin-x86_64" and erase it to save space.
Finally go to your Applications folder and right-click CMake.app to open it. Then you can quit CMake (cmd+q).
Configure Kratos
When compiling Kratos for the first time, one needs to properly customise the configuration file. Open a Terminal, navigate to your "kratos/cmake_build" folder and make a copy of the template file:
cd cd kratos/cmake_build/ cp example_configure.sh.do_not_touch release_configure.sh
Open "release_configure.sh" file with any text editor and modify it like follows. First, indicate the full path of CMake:
cmake .. \ /Applications/CMake.app/Contents/bin/cmake .. \
Next, specify the path to Clang, the default c++ compiler on OS X:
-DCMAKE_C_COMPILER=/usr/bin/gcc \ -DCMAKE_C_COMPILER=/usr/bin/clang \
-DCMAKE_CXX_COMPILER=/usr/bin/g++ \ -DCMAKE_CXX_COMPILER=/usr/bin/clang++ \
Now, provide the path of Boost and Python 3 directories, and the location of Lapack and Blas libraries. If you followed the steps in this tutorial, just add the following lines changing "youruser" by the name of your home folder:
-DBOOST_ROOT="/Users/youruser/kratos/external_libraries/boost_1_59_0" \ -DBOOST_LIBRARYDIR="/Users/youruser/kratos/external_libraries/boost_1_59_0/stage/lib" \ -DPYTHON_LIBRARY="/Library/Frameworks/Python.framework/Versions/3.5/Python" \ -DPYTHON_INCLUDE_DIR="/Library/Frameworks/Python.framework/Versions/3.5/include/python3.5m" \ -DLAPACK_LIBRARIES="/usr/lib/liblapack.dylib" \ -DBLAS_LIBRARIES="/usr/lib/libblas.dylib" \
Furthermore, in order to compile EXTERNAL_SOLVERS_APPLICATION without installing the iterative solver and avoiding a Clang compilation error, you also need to exclude "ITSOL" :
-DEXCLUDE_ITSOL=ON \
Note that you can also specify which applications are going to be compiled by setting them to ON or OFF.
|
Compile Kratos
In order to compile Kratos, you just need to run the following command from the same "kratos/cmake_build/" folder:
sh release_configure.sh
Please, bear in mind that depending on which applications are being compiled, the first compilation of Kratos may take a lot of time.
Compilation issues
Note that the default Clang compiler on OS X does not have an OpenMP implementation. In consequence, it is normal to see OpenMP tests failing in the first steps of the compilation:
-- Try OpenMP C flag = [ ] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [-fopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed ...
Moreover, we are aware of three warnings appearing after each linking of libraries:
ld: warning: path '/Library/Frameworks/Python.framework/Versions/3.5/Python' following -L not a directory ld: warning: path '/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib' following -L not a directory ld: warning: path '/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib' following -L not a directory
Set up your shell environment
After compiling Kratos, you need to tell OS X where to find the libraries by adding some paths to your shell environment. First execute the following commands to create or open (if it already exists) the ".bash_profile":
cd nano .bash_profile
Now add the following two lines containing the path to your kratos folder and the path to the compiled libraries. If you followed the steps in this tutorial they are:
export PYTHONPATH="/Users/youruser/kratos:$PYTHONPATH" export DYLD_LIBRARY_PATH="/Users/youruser/kratos/libs:/Users/youruser/kratos/external_libraries/boost_1_59_0/stage/lib:$DYLD_LIBRARY_PATH"
Save the file by pressing ctrl+o and then hitting enter, exit nano with ctrl+x, and quit the Terminal with cmd+q. After this, every time you open a new Terminal window, the paths will be set automatically.
Test Kratos
The easiest way to test if Kratos is properly installed is to reproduce the Kratos Multiphysics message. Open a Terminal and execute Python 3 with:
python3
Once you are in Python 3, execute the following line:
from KratosMultiphysics import *
If everything is properly installed you should see this message:
| / | ' / __| _` | __| _ \ __| . \ | ( | | ( |\__ \ _|\_\_| \__,_|\__|\___/ ____/ Multi-Physics 3.3.12732
To quit Python 3 just run
exit()
And that's all. You can now run your own python scripts to test that everything works.