====== Installing or Building Libraries ======
\\
This page regroups some libraries that I encountered, and how I built them. When possible, I specified the version of the library used, and the version of the compiler used. If you get an error using these instructions, do not hesitate to mail me.
* **System libraries**
^ Name ^ Version ^ Compiler ^ Build-Install ^
| openssl | 1.0.1e | gcc 4.6.4 | [[software:development:libraries#openssl|openssl]] |
| python | 2.7.5 | gcc 4.6.4, intel 13.0.1 | [[software:development:libraries#python|python]] |
| google perfTools (gperftool) | 1.8.3, 2.0 | intel 11.1 | [[software:development:libraries#google_perftools_gperftool|google perfTools (gperftool)]] |
| glib | 2.4.8 | 4.4.6 | [[software:development:libraries#glib|glib]] |
| libsigc++ | 2.3.1 | gcc 4.4.6 | [[software:development:libraries#libsigc|libsigc++]] |
| glibmm | 2.4.8 | gcc 4.4.6 | [[software:development:libraries#glibmm|glibmm]] |
| libxml2 | 2.7.8 | gcc 4.4.6 | [[software:development:libraries#libxml2|libxml2]] |
| curl | 7.22.0 | gcc 4.4.6 | [[software:development:libraries#curl|curl]] |
| openmpi | 1.4.5, 1.6.3 | gcc 4.4.6 | [[software:development:libraries#openmpi|openmpi]] |
| boost | 1.46.1,1.48.0,1.53.0,1.52.0 | gcc 4.4.6, intel 11.1 | [[software:development:libraries#boost|boost]] |
| tcl | 8.5.13, 8.5.14 | gcc 4.6.4 | [[software:development:libraries#tcl|tcl]] |
| tk | 8.5.14 | gcc 4.6.4 | [[software:development:libraries#tk|tk]] |
| tclx | 8.4 | gcc 4.6.4 | [[software:development:libraries#tclx|tclx]] |
| readline | 6.2 | gcc 4.4.6 | [[software:development:libraries#readline|readline]] |
| zlib | NA | gcc 4.4.6 | [[software:development:libraries#zlib|zlib]] |
| hdf5 | NA | gcc 4.4.6, intel 11.1 | [[software:development:libraries#hdf5|hdf5]] |
| Intel MPI Benchmarks | NA | gcc 4.4.6, intel 11.1 | [[software:development:libraries#intel_mpi_benchmarks|Intel MPI Benchmarks]] |
| modules | 3.2.10 | gcc 4.4.6 | [[software:development:libraries#modules|modules]] |
| expat | 2.1.0 | intel 13.1 | [[software:development:libraries#expat|expat]] |
| bzip2 | 1.0.6 | gcc 4.6.3, intel 11.1 | [[software:development:libraries#bzip2|bzip2]] |
| libtool | 2.4 | gcc 4.6.4, intel 11.1, intel 13.0.1 | [[software:development:libraries#libtool|libtool]] |
| icu | 4.2 | gcc 4.6.4 | [[software:development:libraries#icu|icu]] |
| boost-icu | 1.48.0 | gcc 4.6.4 | [[software:development:libraries#boost-icu|boost-icu]] |
| sqlite3 | 3.7.16.2 | gcc 4.6.4, intel 13.0.1 | [[software:development:libraries#sqlite3|sqlite3]] |
| medusa | 2.1.1 | gcc 4.4.2 | [[software:development:libraries#medusa|medusa]] |
| libssh2 | 1.4.3 | gcc 4.4.2 | [[software:development:libraries#libssh2|libssh2]] |
| John the Ripper | 1.7.8 jumbo 2 - MPI | gcc 4.4.2 | [[software:development:libraries#john_the_ripper|John the Ripper]] |
| swig | 2.0.9 | gcc 4.6.3 | [[software:development:libraries#swig|swig]] |
| pcre | 8.32 | gcc 4.6.3 | [[software:development:libraries#pcre|pcre]] |
| valgrind | 3.8.1 | gcc 4.6.3 | [[software:development:libraries#valgrind|valgrind]] |
| R | 3.0.1 | gcc 4.6.4 | [[software:development:libraries#r|R]] |
| netcdf | 4.1.1 | intel 13.0.1 | [[software:development:libraries#netcdf|netcdf]] |
| python setuptools | 1.1.6 | gcc 4.6.4 | [[software:development:libraries#python_setuptools|python setuptools]] |
| gnu m4 | 1.4.17 | gcc 4.8.2 | [[software:development:libraries#gnu_m4|gnu m4]] |
* **Mathematics libraries**
^ Name ^ Version ^ Compiler ^ Build-Install ^
| fftw | 3.3.3 | gcc 4.4.6, intel 11.1 | [[software:development:libraries#fftw|fftw]] |
| blas | NA | gcc 4.4.6, intel 11.1, intel 13.0.1 | [[software:development:libraries#blas|blas]] |
| lapack | NA | gcc 4.4.6 | [[software:development:libraries#lapack|lapack]] |
| ScaLapack - Blacs | 2.0.2 | gcc 4.6.3 | [[software:development:libraries#scalapack_-_blacs|ScaLapack - Blacs]] |
| numpy | 1.7.0 | gcc 4.6.3, intel 13.0.1 | [[software:development:libraries#numpy|numpy]] |
| scipy | 0.12.0 | intel 13.0.1 | [[software:development:libraries#scipy|scipy]] |
| gsl | 1.16 | intel 13 SP1 | [[software:development:libraries#gsl|gsl]] |
* **Physic libraries**
^ Name ^ Version ^ Compiler ^ Build-Install ^
| pyevolve | 0.6rc1 | gcc 4.6.4 | [[software:development:libraries#pyevolve|pyevolve]] |
| gdal | 1.7.1, 1.9.2 | gcc 4.4.6, gcc 4.6.3 | [[software:development:libraries#gdal|gdal]] |
| crac | NA | intel 11.1 | [[software:development:libraries#crac|crac]] |
| openKIM | NA | gcc 4.4.6 | [[software:development:libraries#openkim|openKIM]] |
| mira |3.4.1.1 | intel 13.1 | [[software:development:libraries#mira|mira]] |
| vasp | 5.2 VTST, 5.3 VTST | intel 11.1 | [[software:development:libraries#vasp|vasp]] |
| proj | 4.8.0 | gcc 4.6.3 | [[software:development:libraries#proj|proj]] |
| gdal-ogr | 1.9.2 | gcc 4.6.4 | [[software:development:libraries#gdal-ogr|gdal-ogr]] |
| mapnik | 2.1.0 | gcc 4.6.3 | [[software:development:libraries#mapnik|mapnik]] |
| otb | 3.16 | gcc 4.6.4 | [[software:development:libraries#otb|otb]] |
| gromacs | 4.5.5 | gcc 4.6.3 | [[software:development:libraries#gromacs|gromacs]] |
| gerris | snap 131206 | gcc 4.8.2+intel 12.1.3+MPT 2.06 | [[software:development:libraries#gerris|gerris]] |
| metis | 5.02 | intel 14.01 | [[software:development:libraries#metis|metis]] |
| telemac | v6p3r2 | intel-14.0.2 openmpi-1.6.5 | [[software:development:libraries#telemac|telemac]] |
* **Rendering libraries**
^ Name ^ Version ^ Compiler ^ Build-Install ^
| matplotlib | 1.3.0 | gcc 4.6.4 | [[software:development:libraries#matplotlib|matplotlib]] |
| flex | 2.5.37 | intel 11.1 | [[software:development:libraries#flex|flex]] |
| gnuplot | 4.6.1 | gcc 4.4.6 | [[software:development:libraries#gnuplot|gnuplot]] |
| motif | 2.3.4 | gcc 4.6.3 | [[software:development:libraries#motif|motif]] |
| freetype2 | 2.4.11 | gcc 4.6.3 | [[software:development:libraries#freetype2|freetype2]] |
| xpdf | 3.03 | gcc 4.6.3 | [[software:development:libraries#xpdf|xpdf]] |
| X11 bitmaps | 1.1.1 | gcc 4.6.3 | [[software:development:libraries#x11_bitmaps|X11 bitmaps]] |
| fltk | 1.3.2 | gcc 4.6.3 | [[software:development:libraries#fltk|fltk]] |
| geotiff | 1.4.0 | gcc 4.6.3 | [[software:development:libraries#geotiff|geotiff]] |
| tiff | 4.0.3 | gcc 4.6.3 | [[software:development:libraries#tiff|tiff]] |
\\
=====System libraries=====
\\
====openssl====
\\
Note : you cannot compile openssl with intel compiler, tests and use will always fail (with current intel icc 13.0.1 version and previous for sure).
./config --prefix=/soft/openssl/1.0.1e shared zlib-dynamic
make
make test
make install
\\
====python====
\\
Installation with ssl support (important for further packages installation), using openssl.Untar, and edit setup.py. Find these lines, and edit them to match your openssl directory installation :
# Detect SSL support for the socket module (via _ssl)
search_for_ssl_incs_in = [
'/soft/system/openssl/1.0.1e/ssl/include',
'/soft/system/openssl/1.0.1e/include/'
]
ssl_incs = find_file('openssl/ssl.h', inc_dirs,
search_for_ssl_incs_in
)
if ssl_incs is not None:
krb5_h = find_file('krb5.h', inc_dirs,
['/usr/kerberos/include'])
if krb5_h:
ssl_incs += krb5_h
ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
['/soft/system/openssl/1.0.1e/lib',
'/soft/system/openssl/1.0.1e/ssl/lib/'
] )
Then, edit Modules/Setup.dist, and uncomment these lines, and set the SSL variable to match your openssl installation directory.
# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/opt/cluster/softs/intel-13.x-soft/system/openssl/1.0.1e
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
And copy Modules/Setup.dist to Modules/Setup
cp Modules/Setup.dist Modules/Setup
Now you can configure and compile :
./configure --prefix=/soft/system/python/2.7.5
make
make test
Important : when compiling with Intel Compiler, I got errors during the test, and I got none using gcc. Even if you use Intel to compile numpy or scipy, I strongly recommand to compiler Python using only gcc.If you use Intel, you may encounter this error :
INSTALL/Python-2.7.5/Modules/_ctypes/libffi/src/x86/ffi64.c(56): error: identifier "__m128" is undefined
UINT128 i128;
^
compilation aborted for INSTALL/Python-2.7.5/Modules/_ctypes/libffi/src/x86/ffi64.c (code 2)...Failed to build these modules:
_ctypes
See in the error section of this website. You just need to add #include with the other includes in Modules/_ctypes/libffi/src/x86/ffi64.c
I also got an error at make install with intel because of already installed python on the cluster. Just bypass it using make -k.If you compile with gcc, no errors anywhere.However, we wanted ssl support, and we get :
Failed to find the necessary bits to build these modules:
_bsddb _curses _curses_panel
_hashlib _sqlite3 _ssl
This is wrong. If you take a look at your lib :
nm -n libpython2.7.a | grep -i "ssl"
You can see that the lib incorporate the ssl support. The "Failed to find the necessary bits to build these modules: _ssl" is wrong.Now you can install.
make install
Don't forget to add your new python into PATH and LD_LIBRARY_PATH.
\\
**Tips on python module path :**
To display all modules loaded by python, use :
PYTHON
>>> import sys
>>> from pprint import pprint as p
>>> p(sys.path)
['',
'C:\\Python25\\lib\\site-packages\\setuptools-0.6c9-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\orbited-0.7.8-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\morbid-0.8.6.1-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\demjson-1.4-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\stomper-0.2.2-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\uuid-1.30-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\stompservice-0.1.0-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\cherrypy-3.0.1-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\pyorbited-0.2.2-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\flup-1.0.1-py2.5.egg',
'C:\\Python25\\lib\\site-packages\\wsgilog-0.1-py2.5.egg',
'c:\\testdir',
'C:\\Windows\\system32\\python25.zip',
'C:\\Python25\\DLLs',
'C:\\Python25\\lib',
'C:\\Python25\\lib\\plat-win',
'C:\\Python25\\lib\\lib-tk',
'C:\\Python25',
'C:\\Python25\\lib\\site-packages',
'C:\\Python25\\lib\\site-packages\\PIL',
'C:\\Python25\\lib\\site-packages\\win32',
'C:\\Python25\\lib\\site-packages\\win32\\lib',
'C:\\Python25\\lib\\site-packages\\Pythonwin']
And here, to add c:\testdir to PATH, we used :
export PYTHONPATH=c:\testdir:$PYTHONPATH
====google perfTools (gperftool)====
\\
./configure --prefix=/soft/google-perftools/1.8.3 CC=icc CXX=icpc CXXFLAGS="-O3 -xHOST -no-prec-div" CFLAGS="-O3 -xHOST -no-prec-div"
Do not make on multiple CPU, errors if used.
make
The make check will give you a LOT of errors. But, the more RAM memory you have available, the less errors you will get. And if you launch tests multiple times, you will see that errors are coming randomly. The fact is that the test consist in allocating large band of memory or testing things that can interfere with others process. If the system cannot allocate the memory, or if another process is perturbing the test, you will get errors. This do no means that your build failed.
make install
\\
====glib====
\\
cd glib-2.4.8
./configure CC=gcc --prefix=/soft/glib-2.4.8
make -j 4
make check
make install
\\
====libsigc++====
\\
cd libsigc++-2.3.1
./configure CC=gcc --prefix=/soft/libsigc++-2.3.1
make -j 4
make check
make install
\\
====glibmm====
\\
cd glibmm-2.4.8
export PKG_CONFIG_PATH=/soft/glib-2.4.8/lib/pkgconfig:/soft/libsigc++-2.3.1/lib/pkgconfig
Adding #include in file glib/glibmm/propertyproxy_base.cc (cf http://gcc.gnu.org/gcc-4.3/porting_to.html, error: 'strcmp' was not declared in this scope)
./configure CC=gcc --prefix=/soft/glibmm-2.4.8 PKG_CONFIG_PATH=/soft/glib-2.4.8/lib/pkgconfig:/soft/libsigc++-2.3.1/lib/pkgconfig
make -j 4
make check
make install
\\
====libxml2====
\\
cd libxml2-2.7.8
./configure CC=gcc --prefix=/soft/libxml2-2.7.8
### /bin/rm: cannot remove `libtoolT': No such file or directory (OK)
make -j 4
make check
Adding http://www.w3.org/XML/Test/xmlts20080205.tar.gz for tests
make -k check
Error parsing html, test is buggy : http://www.mail-archive.com/blfs-dev@linuxfromscratch.org/msg10068.html
Ignore it.
make install
\\
====curl====
\\
cd curl-7.22.0
./configure CC=gcc --prefix=/soft/curl-7.22.0
make -j 4
make check
### Can be long...
make install
\\
====openmpi====
\\
**With GCC :**
cd openmpi-1.4.5
./configure --prefix=/soft/openmpi-1.4.5 CC=gcc CXX=g++ F77=gfortran FC=gfortran
make -j 4
make check
make install
To install with PSM Infiniband support and Load Leveler Support, disable multithread :
./configure --prefix=/soft/openmpi/1.6.3 --disable-ft-thread --disable-mpi-thread-multiple --with-sge --with-openib --with-psm --with-verbs --with-loadleveler
**With Intel :**
cd openmpi-1.4.5
./configure --prefix=/soft/openmpi-1.4.5 CC=icc CXX=icpc F77=ifort FC=ifort
make -j 4
make check
make install
In both cases, do not forget to add PATH and LD_LIBRARY_PATH after to get access to openmpi wrappers and libraries :
export PATH=/soft/openmpi-1.4.5/bin:$PATH
export LD_LIBRARY_PATH=/soft/openmpi-1.4.5:$LD_LIBRARY_PATH
\\
====boost====
\\
cd boost_1_46_1
For MPI boost, add 'using mpi ;' (without the comma) anywhere in tools/build/v2/user-config.jam.
vim tools/build/v2/user-config.jam
For GCC (default for boost):
./bootstrap.sh --with-libraries=all --prefix=/soft/boost-1.46.1
For ICC intel:
./bootstrap.sh --with-libraries=all --prefix=/soft/boost-1.48.0 --with-toolset=intel-linux
For 1.46.0 and previous :
./bjam install
For 1.48.0 and next :
./b2 install
This last step can be long.To build boost fully static, you need to add arguments (the argument threading is not dedicated to static building, but it is here to make sure boost build parallel libraries):
./bootstrap.sh --with-libraries=all --prefix=$HOME/boost/1.53.0 --with-toolset=intel-linux link=static threading=multi runtime-link=static
./b2 install link=static threading=multi runtime-link=static
If you get this error :
cannot open source file "patchlevel.h"
or
cannot open source file "bz2.h"
It means you need to install python dev package and bzip2 dev package. If using a own built python or bzip2, then link the boost include with it.
\\
====tcl====
\\
If possible do not use the 8.6, I got errors, and I am not the only one.
cd unix
./configure......
make test
...
\\
====tk====
\\
Needs libx11-dev and xorg-dev (X libraries).
Tk should be installed in the same directory than tcl.
cd unix
./configure......
make test
...
\\
====tclx====
\\
cd unix
./configure --with-tcl=/soft/tcltk/8.5.14/lib --enable-shared --enable-static --prefix=/soft/tclx/8.4
make
make install
Now, you need a correct tclxConfig.sh file if you want to compile some libs like module. Note that tclx libs have been installed in the lib directory of tcltk. Put it in the same directory than the lib :cd /soft/tcltk/8.5.14/lib/tclx8.4/
vim tclxConfig.shAnd here is mine :
#
# tclxConfig.sh - This file is generated by the TclX configure script to
# assist in linking with TclX (libtclx.a). It is a shell scripted designed to
# be sourced by configure scripts. The system libraries defined in here
# need to be used in addition to those defined in tclConfig.sh. See
# tclExtend.h for a full expanation of the version numbers.
#
# System: Linux-2.0.10
# Date: Mon Aug 19 22:30:36 EDT 1996
#
#
# Version numbers for TclX (see tclExtend.h for details).
#
TCLX_FULL_VERSION='8.4.0'
TCLX_VERSION='8.4'
#
# Defines for cpp.
#
TCLX_DEFS=''
#
# Additional libraries added by TclX.
#
TCLX_LIBS=''
#
# String to pass to linker to pick up the TclX library from its
# build directory.
#
TCLX_BUILD_LIB_SPEC='-L/soft/tcltk/8.5.14/lib/tclx8.4 -ltclx8.4'
#
# String to pass to linker to pick up the TclX header from its
# installed directory.
#
TCLX_INCLUDE_SPEC='-I/soft/tclx/8.4/include'
#
# String to pass to linker to pick up the TclX library from its
# installed directory.
#
TCLX_LIB_SPEC='-L/soft/tcltk/8.5.14/lib/tclx8.4 -ltclx8.4'
#
# Search flags that specify how to find the TclX shared libraries at run time
# on some systems.
#
TCLX_LD_SEARCH_FLAGS=''
\\
====readline====
\\
Nothing particular, just configure, make, make check, make install.
\\
====zlib====
\\
Configure, make, make check, make install
\\
====hdf5====
\\
./configure --prefix=/soft/HDF5 --enable-parallel --enable-fortran --with-zlib=/usr/lib/x86_64-linux-gnu --enable-shared --enable-static CC=mpicc FC=mpif90
Note that (from documentation):
The parallel test, t_shapesame, in testpar/, may run for a long time and may
be terminated by the alarm signal. If that happens, one can increase the
alarm seconds (default is 1200 seconds = 20 minutes) by setting the
environment variable, $HDF5_ALARM_SECONDS, to a larger value such as 3600
(60 minutes). Note that the t_shapesame test may fail in some systems
(see the "While working on the 1.8.6 release..." problem below). If
it does, it will waste more time if $HDF5_ALARM_SECONDS is set
to a larger value. (AKC - 2011/05/07)For intel ICC, replace in the test Makefile mpiexec by mpirun if needed.To use HDF5, note that if C code can load the headers and the libraries in one line, Fortran cannot. You need to cut it in two commands.
mpif90 -c CFD-FIELD3.f90 -I /soft/HDF5/include
mpif90 CFD-FIELD3.o -o a.out -L/soft/HDF5/lib -lhdf5_fortran -lhdf5 -lz
\\
====Intel MPI Benchmarks====
\\
Very simple, just compile it and launch the executable in parallel, playing with parameters to choose the test you want. If none specified, it will run all (~20 min of run).
cd src
make -f make_mpich MPI_HOME=/soft/mpi/openmpi-1.4.3-qlc
\\
====modules====
\\
Very useful tool to help users solve dependency and library conflict problems. Should be used one every calculator with multiple users.
./configure --prefix=/soft/modules/3.2.10 --with-tcl-lib=/soft/tcl/8.5.13/lib --with-tcl-inc=/soft/tcl/8.5.13/include --disable-versioning --exec-prefix=/soft/modules/3.2.10/Modules --with-module-path=/soft/modules/3.2.10
make install
if you get :
checking for TclX version... configure: error: Must specify version (X.Y) if using this option
checking for Tcl version... configure: error: Must specify version (X.Y) if using this option
checking for TclX configuration (tclxConfig.sh)... not found
etc.Try using all arguments :
./configure --prefix=/soft/modules/3.2.10 --with-tcl-lib=/soft/tcltk/8.5.14/lib --with-tcl-inc=/soft/tcltk/8.5.14/include --disable-versioning --exec-prefix=/soft/modules/3.2.10/Modules --with-module-path=/soft/modules/3.2.10 --with-tcl=/soft/tcltk/8.5.14/lib --with-tcl-ver=8.5 --with-tclx=/soft/tcltk/8.5.14/lib/tclx8.4 --with-tclx-ver=8.4
Then, in /soft/modules/3.2.10/Modules/init/, copy bash to bash.sh so that the system do not thinks its bash bin, and create a loadmodule.sh file that contains :
export LD_LIBRARY_PATH=/soft/tcltk/8.5.14/lib/:/soft/tcltk/8.5.14/lib/tclx8.4/
source /soft/modules/3.2.10/Modules/init/bash.sh
Just need to source it after: source loadmodule.sh
To enable the module alias, you need to source the module script.
cd /soft/modules/3.2.10/Modules/init
Copy the type wanted into the same name, but with '.s' at end (to prevent conflicts with the original binary). Let's say here we use bash :
cp ./bash ./bash.s
And now source it :
source bash.s
You can also add it to your bashrc to load it at each session.Then, to make a module, go into :
cd /soft/modules/3.2.10/Modules/modulefiles
And you can take a look at the files here for example. Note that :
**setenv** is like export to declare environment variable
**prepend-path** add your directory before the rest of the current variable
**append-path** add your directory after the rest of the current variable
Example :Let's say that we have :
echo $PATH
/usr/bin
echo $LD_LIBRARY_PATH
/usr/lib
The following module file :
proc ModulesHelp { } {
global version puts stderr "\tLoad GCC 4.6.3 version."
puts stderr "\tSupport for C,C++,Fortran."
puts stderr "\tNo Multilibs."
}module-whatis "Load GCC 4.6.3 version."# for Tcl script use only
set version "3.2.10"conflict intel-11.1
prereq gmp-4.3.2setenv GCCHOME /soft/gcc-4.6.3prepend-path PATH /soft/gcc-4.6.3/bin
prepend-path MANPATH /soft/gcc-4.6.3/share/man
append-path LD_LIBRARY_PATH /soft/gcc-4.6.3/lib64setenv COMPILER gcc
setenv COMPILER_VER 4.6.3
setenv CC gcc
setenv CXX g++
setenv F77 gfortran
setenv F90 gfortran
setenv FC gfortran
will give you :
echo $PATH
/soft/gcc-4.6.3/bin:/usr/bin
echo $LD_LIBRARY_PATH
/usr/lib:/soft/gcc-4.6.3/lib64
echo $GCCHOME
/soft/gcc-4.6.3
Do not forget that the system is using the first file it encounters that corresponds to the command. Here, files in /soft/gcc-4.6.3/bin will be used before the one in /usr/bin.Note also that you can add conflict and pre-requite. Here, if the module intel-11.1 is already loaded, then this module will refuse to load. If the module gmp-4.3.2 is not load, then it will also not accept to load.You can use the following commands :module avail : display all modules available on the system
module list : list all module already loaded
module display gcc-4.4.2 : display what the module gcc-4.4.2 will do
module load gcc-4.4.2 : load the module gcc-4.4.2
module unload gcc-4.4.2 : unload the gcc-4.4.2
module swithc gcc-4.4.2 intel-11.1 : will unload gcc-4.4.2 and load intel-11.1
\\
====expat====
\\
Simple, just configure and make.
./configure --prefix=/soft/expat/2.1.0 CC=icc CXX=icpc F90=ifort
make
make check
make install
If you get this error :
-o xmlwf/unixfilemap.o -c xmlwf/unixfilemap.c
xmlwf/unixfilemap.c: In function ?filemap?:
xmlwf/unixfilemap.c:54: error: ?caddr_t? undeclared (first use in this function)
xmlwf/unixfilemap.c:54: error: (Each undeclared identifier is reported only once
xmlwf/unixfilemap.c:54: error: for each function it appears in.)
xmlwf/unixfilemap.c:54: error: expected ?)? before numeric constant
xmlwf/unixfilemap.c:55: error: too few arguments to function ?mmap?
xmlwf/unixfilemap.c:62: error: expected ?)? before ?p?
xmlwf/unixfilemap.c:62: error: too few arguments to function ?munmap?
make: *** [xmlwf/unixfilemap.o] Error 1
Then add
typedef __caddr_t caddr_t;
in xmlwf/unixfilemap.c, at line 20.
\\
====bzip2====
\\
make
make install PREFIX=/soft/bzip2/1.0.6
\\
====libtool====
\\
http://ftp.igh.cnrs.fr/pub/gnu/libtool/
./configure --prefix=/soft/libtool/2.4
make -j 4
make check
make install
export LD_LIBRARY_PATH=/soft/libtool/2.4/lib:$LD_LIBRARY_PATH
\\
====icu====
\\
http://userguide.icu-project.org/
./configure --prefix=/soft/ICU/4.2 --enable-static=yes --enable-shared=yes
make
make install
export LD_LIBRARY_PATH=/soft/ICU/4.2/lib:$LD_LIBRARY_PATH
\\
====boost-icu====
\\
cd boost_1_48_0
vim tools/build/v2/user-config.jam
add "using mpi ;" at beginning of the file.
./bootstrap.sh --with-libraries=all --prefix=/soft/boost/1.48.0
./b2 -a -sICU_PATH=/soft/ICU/4.2 include=/soft/ICU/4.2/include/ install
Check that boost has enabled ISU support (at beginning of ./b2 output).
export LD_LIBRARY_PATH=/soft/boost/1.48.0/lib:$LD_LIBRARY_PATH
\\
====sqlite3====
\\
./configure --prefix=/soft/sqlite/3.7.16.2
make
make install
export LD_LIBRARY_PATH=/soft/sqlite/3.7.16.2/lib:$LD_LIBRARY_PATH
\\
====medusa====
\\
./configure --prefix=/home/toto/medusa LDFLAGS="-L/home/toto/libssh2/lib" CPPFLAGS="-I/home/toto/libssh2/include"
./medusa -h localhost -u be2012_1 -P /home/toto/john-1.7.9/run/password.lst -e ns -M ssh
\\
====libssh2====
\\
./configure --prefix=/home/myusername/medusa LDFLAGS="-L/home/myusername/libssh2/lib
\\
====John the Ripper====
\\
cd john-1.7.8-jumbo-2/src
uncomment the following lines in the Makefile:
CC = mpicc -DHAVE_MPI -DJOHN_MPI_BARRIER -DJOHN_MPI_ABORT`
MPIOBJ = john-mpi.o`
make linux-x86-64
cd ../run
./john --test
mpirun -np 8 ./john --test
\\
====swig====
\\
./configure --with-python=/usr/bin/python --with-tcl=/soft/tcl/8.5.13/ --with-boost=/soft/boost/1.48.0/ --with-pcre-prefix=/soft/pcre/8.32/ --prefix=/soft/swig/2.0.9
make -j 4
make check
make install
\\
====pcre====
\\
./configure --enable-pcregrep-libz=/soft/zlib/1.2.7/lib/ --enable-pcregrep-libbz2=/soft/bzip2/1.0.6/lib/ --enable-pcre32 --enable-pcre16 --prefix=/soft/pcre/8.32
make -j 4
make check
make install
cd ..
\\
====valgrind====
\\
./configure --prefix=/soft/valgrind/3.8.1 --with-mpicc=mpicc
make
make check
make install
\\
====R====
\\
Note : need X headers to be built.
./configure --prefix=/soft/R/3.0.1
If you get an error :
configure: error: --with-readline=yes (default) and headers/libs are not available
Then you need to install readline libraries.
If you get :
/soft/readline/6.2/lib/libreadline.so: undefined reference to `PC'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `tgetflag'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `tgetent'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `UP'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `tputs'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `tgoto'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `tgetnum'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `BC'
/soft/readline/6.2/lib/libreadline.so: undefined reference to `tgetstr'
You need to add ncurses libraries using -lncurses.Now it accepts to compile.
\\
====netcdf====
\\
./configure --with-hdf5=/soft/io/hdf5/1.8.11/ --with-zlib=/soft/system/zlib/1.2.8/ --enable-static --enable-shared --enable-netcdf4 --prefix=/soft/io/netcfd/4.1.1
make
A lot of :
../libtool: eval: line 7311: unexpected EOF while looking for matching `"'
../libtool: eval: line 7312: syntax error: unexpected end of file
../libtool: line 7312: warning: syntax errors in . or eval will cause future versions of the shell to abort as Posix requires
The libtool generated is the problem. Just remove it and create a link to your libtool :
rm libtool; ln -s $(which libtool) libtool
make clean
make
You get a
/bin/sh: dvips: command not found
If you do not need the latex documentation, use
make -k
to bypass this step.
make check
make install
\\
====python setuptools====
\\
Note also that the installer fails to install if the directory /soft/python/2.7.5-soft/setuptools/1.1.6/lib/python2.7/site-packages is not present in the PYTHONPATH variable.To install, it is easy :
python setup.py build
export PYTHONPATH=/soft/python/2.7.5-soft/setuptools/1.1.6/lib/python2.7/site-packages/:$PYTHONPATH
python setup.py install --prefix=/soft/python/2.7.5-soft/setuptools/1.1.6
Test :
python
Python 2.7.5 (default, Sep 24 2013, 17:03:24)
[GCC 4.6.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import setuptools
>>> print setuptools.__version__
0.6
\\
====gnu m4====
\\
./configure --enable-c++ --prefix=/softs/m4/1.4.17
make check
make install
export PATH=/softs/m4/1.4.17/bin:$PATH
=====Mathematics libraries=====
\\
====fftw====
\\
For GCC :
./configure --prefix=/soft/fftw-3.3.3 --enable-threads --enable-openmp --enable-mpi -enable-sse2
make -j 4
make check
make install
Or to integrate float support :
./configure --prefix=/soft/fftw/3.3.3-shared-float --enable-threads --enable-openmp --enable-mpi -enable-sse2 --enable-shared --enable-fortran --enable-float
For ICC intel :
./configure --prefix=/soft/fftw/3.3.3 --enable-threads --enable-openmp --enable-mpi -enable-sse2 CC=mpiicc FC=mpiifort CXX=mpiicpc MPICC=mpiicc
\\
====blas====
\\
Just extract and make. That's all, the lib is here. If needed, replace gcc by icc for intel.
\\
====lapack====
\\
Just copy one of the makefile inside the INSTALL directory at source folder root, and rename it as make.inc.
cd lapack-src
cp makefile.gcc .
mv makefile.gcc make.inc
Then compile blas and lapack :
cd lapack/BLAS/SRC
make
cd ../..
make
If you get errors, just compile manually the files causing troubles in TESTING/LIN, by changing the optimization flags (O3, O2, O1, O0, -g), then make, manual compile, make, etc. It can be long, be patient.
\\
====ScaLapack - Blacs====
\\
Best way is to go here http://www.netlib.org/scalapack/, and download the Scalapack installer python script. It will do the entire job, and documentation is well made. Note that you have to create the directory where to install libs after building yourself before running setup, even when specifying prefix.
mkdir /soft/ScaLAPACK/2.0.2
./setup.py --prefix=/soft/ScaLAPACK/2.0.2 --downall
You are done. Libs can be used using :
Your BLAS library is : -L/soft/ScaLAPACK/2.0.2/lib -lrefblas
Your LAPACK library is : -L/soft/ScaLAPACK/2.0.2/lib -ltmg -lreflapack
Your BLACS/ScaLAPACK library is : -L/soft/ScaLAPACK/2.0.2/lib -lscalapack
\\
====numpy====
\\
For gcc :
python setup.py build --fcompiler=gnu95
python setup.py install --prefix=/soft/numpy/1.7.0
export $PYTHONPATH=/soft/numpy/1.7.0/lib/python2.7/site-packages/
For intel :
see here : http://software.intel.com/en-us/articles/numpyscipy-with-intel-mkl. Untar, and cd into the extracted directory. Create a file name site.cfg, and past this into it (change PATH to match your mkl installation directory) :
[mkl]
library_dirs = /opt/intel/mkl/composer_xe_2013/lib/intel64
include_dirs = /opt/intel/mkl/include
mkl_libs = mkl_rt
lapack_libs =
Then, edit numpy/distutils/intelccompiler.py, and add the following optimizations to cc_exe by editing self.cc_exe :
self.cc_exe = 'icc -O3 -g -fPIC -fp-model strict -fomit-frame-pointer -openmp -xhost'
Then edit the fortran configuration file (there is a fault on intel web site, an s is missing) numpy/distutils/fcompiler/intel.py and replace ifort call by :
ifort -xhost -openmp -fp-model strict -fPIC
Now, you can build and install, using intelem because we use an x64 system :
python setup.py config --compiler=intelem build_clib --compiler=intelem build_ext --compiler=intelem install --prefix=/soft/python/2.7.5-soft/numpy/1.7.0
Don't forget to add numpy into your PYTHONPATH :
export PYTHONPATH=/soft/numpy/1.7.0/lib/python2.7/site-packages/:$PYTHONPATH
Test :
python
Python 2.7.5 (default, Sep 24 2013, 17:03:24)
[GCC 4.6.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> print numpy.__version__
1.7.0
\\
====scipy====
\\
If numpy is in your PYTHONPATH, you just need to build and install it this way :
python setup.py config --compiler=intelem --fcompiler=intelem build_clib --compiler=intelem --fcompiler=intelem build_ext --compiler=intelem --fcompiler=intelem install --prefix=/soft/scipy/0.12.0
And add it into your PYTHONPATH :
export PYTHONPATH=/soft/scipy/0.12.0/lib/python2.7/site-packages/:$PYTHONPATH
Test :
python
Python 2.7.5 (default, Sep 24 2013, 17:03:24)
[GCC 4.6.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import scipy
>>> print scipy.__version__
0.12.0
\\
====gsl====
\\
./configure --prefix=/softs/gsl/1.16 CC=icc --enable-shared
make -j 4
make check
make install
\\
=====Physic libraries=====
\\
====pyevolve====
\\
Note also that the installer fails to install if the directory /soft/python/2.7.5-soft/pyevolve/0.6rc1/lib/python2.7/site-packages is not present in the PYTHONPATH variable.
You also need setuptools in your PYTHONPATH. If not, you may encounter :
Traceback (most recent call last):
File "setup.py", line 1, in
from setuptools import setup, find_packages
ImportError: No module named setuptools
To install, it is easy :
python setup.py build
export PYTHONPATH=/soft/python/2.7.5-soft/pyevolve/0.6rc1/lib/python2.7/site-packages/:$PYTHONPATH
python setup.py install --prefix=/soft/python/2.7.5-soft/pyevolve/0.6rc1
Test :
python
Python 2.7.5 (default, Sep 24 2013, 17:03:24)
[GCC 4.6.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyevolve
>>> print pyevolve.__version__
0.6rc1
\\
====gdal====
\\
cd gdal-1.7.1
./configure CC=gcc --prefix=/soft/gdal-1.7.1
or to use external tiff (non system) :
./configure --prefix=/soft/gdal/1.9.2/ --with-libtiff=/soft/tiff/4.0.3/ --with-geotiff=/soft/geotiff/1.4.0/
or to use internal tiff (included in gdal)
./configure --prefix=/soft/gdal/1.9.2/ --with-libtiff=internal --with-geotiff=internal --with-rename-internal-libtiff-symbols=yes --with-rename-internal-libgeotiff-symbols=yes
make -j 4
### no check available
make install
\\
====crac====
\\
./configure --prefix=/soft/crac CC=icc CXX=icpc FC=ifort CFLAGS="-g -O2 -std=c99" CPPFLAGS="-Wall -ansi -funroll-loops -O2 -DNDEBUG" --enable-exact-match-tool
make
You get the following error :
./seqan/platform.h(23): error: invalid combination of type specifyrs
typedef int64_t __int64;
The variable already exist with icpc, just comment the line and that's done.
\\
====openKIM====
\\
IMPORTANT : the following variable MUST be defined, even when null. If not, the install thinks it means "yes".
No make install, just copy the folder where you want the lib to be, and compile here.
export KIM_INTEL=
export KIM_SYSTEM32=
export KIM_DYNAMIC=yes
export KIM_DIR=/soft/openkim....
cd $KIM_DIR
make clean
make examples
make
make all
To compile with INTEL :
export KIM_INTEL="yes"
\\
====mira====
\\
(Mira cannot be compiled with intel 12.1, no worth try)\\
To compile with shared libraries :
./configure --prefix=/soft/mira/3.4.1.1 --enable-debug=yes --with-boost=/soft/boost/1.53.0/ --with-expat=/soft/expat/2.1.0 --with-tcmalloc-dir=/soft/google-perftools/1.8.3/lib --enable-boundtracking=yes --enable-bugtracking=yes --enable-extendedbugtracking=no --with-tcmalloc CC=icc CXX=icpc
To make mira full static :
./configure --prefix=/soft/mira/3.4.1.1 --enable-debug=yes --with-boost=/soft/boost/1.53.0/ --with-expat=/soft/expat/2.1.0 --with-tcmalloc-dir=/soft/google-perftools/1.8.3/lib --enable-boundtracking=yes --enable-bugtracking=yes --enable-extendedbugtracking=no --with-tcmalloc --enable-shared=no --enable-static=yes --enable-mirastatic CC=icc CXX=icpc
Then :
make
make check
make install
If it says that it cannot link with expat, check inside the config.log. In my case, bz2 lib was missing and the configure was buggy, generating this error, even with expat correctly linked. I built bz2, and added to configure :
CFLAGS="-L/soft/bzip2/1.0.6/lib" CXXFLAGS="-L/soft/bzip2/1.0.6/lib"
If you get this error :
undefined reference to `clock_gettime'
This means you need to add "-lrt" at the END of the compilation line.
For mira, I had to go in src/progs, then add -lrt at the end of LIBS. Then make inside the directory, and go back to top source and make.
\\
====vasp====
\\
A big one.
First, to patch Vasp with VTST, download the vtstcode.tar.gz tarball, then extract its content inside vasp directory. Beware, it will replace some vasp files, backup vasp sources before doing this operation.
Then, find the variable SOURCE in the Vasp Makefile, and add the following objects BEFORE chain.o:
bfgs.o dynmat.o instanton.o lbfgs.o sd.o cg.o dimer.o bbm.o fire.o lanczos.o neb.o qm.o opt.o
Note that you also need to edit main.F, and replace
CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
LATT_CUR%A,LATT_CUR%B,IO%IU6)
by
CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6)
To make it clean, you also have to edit some files when you get the warning :
dimer.F(79): warning #5117: Bad # preprocessor line
#if defined(MPI_CHAIN)
And make sure that the preprocessing commands (#....) are stick to the beginning of the line (no spaces between the # and the beginning of the line).
Then :
make -f makefile.mymakefile
And you get the vasp binary file. Note that in my case, I added the flag -DMPI and I used the mpiifort compiler to compile everything. I never used the MPI dedicated part in the default makefile.
\\
====proj====
\\
http://trac.osgeo.org/proj/
./configure --prefix=/soft/proj/4.8.0
make -j 4
make check
make install
export LD_LIBRARY_PATH=/soft/proj/4.8.0/lib:$LD_LIBRARY_PATH
\\
====gdal-ogr====
\\
./configure --prefix=/soft/gdal/1.9.2/ --enable-shared --enable-static --with-ogr
make -j 4
make check
make install
export LD_LIBRARY_PATH=/soft/gdal/1.9.2/lib:$LD_LIBRARY_PATH
\\
====mapnik====
\\
A big one. I will give here the full installation procedure I used (Do not forget the LD_LIBRARY_PATH export, if not, mapnik will complain about missing libs, even if you specified them on its configure command line) :\\
Dependencies to be installed : libtool 2.4, libicuuc 4.2, Boost 1.48.0 with all libraries and ICU support, libproj 4.8.0, gdal 1.9.2 with ogr, sqlite3 3.7.16.2
./configure BOOST_INCLUDES=/soft/boost/1.48.0/include/ BOOST_LIBS=/soft/boost/1.48.0/lib/ PROJ_LIBS=/soft/proj/4.8.0/lib/ PROJ_INCLUDES=/soft/proj/4.8.0/include/ ICU_LIBS=/soft/ICU/4.2/lib/ ICU_INCLUDES=/soft/ICU/4.2/include/ LTDL_INCLUDES=/soft/libtool/2.4/include/ LTDL_LIBS=/soft/libtool/2.4/lib/ GDAL_CONFIG=/soft/gdal/1.9.2/bin/gdal-config SQLITE_INCLUDES=/soft/sqlite/3.7.16.2/include SQLITE_LIBS=/soft/sqlite/3.7.16.2/lib PREFIX=/soft/mapnik/2.1.0 PYTHON_PREFIX=/soft/mapnik/2.1.0 TIFF_INCLUDES=/soft/tiff/3.9.5/include/ TIFF_LIBS=/soft/tiff/3.9.5/lib
The mapnik 2.1.0 did not compiled with boost 1.53.0, the one recommended (1.48.0) works well.Note also that if you want to compile mapnik 2.0.2 or mapnik 2.0.0, and you want to use an external libtool (i.e. not in /usr/lib), there is no available flags. Trick is to "create" a shortcut to the compiler, because even CUSTOM_CXXFLAGS and CUSTOM_LDFLAGS do not work for ltdl.
To finish, if you want to use the ogm plugin from gdal, you must use the 2.0.0 version. The others (> 2.0.0) will give you a "Notice: dependencies not met for plugin 'osm', not building..." and will fail to build it.
mkdir $HOME/bin
vim $HOME/bin/gccmapnik
#!/bin/bash
gcc "-I/soft/libtool/2.4/include/" "-L/soft/libtool/2.4/lib/" "$@"
vim $HOME/bin/g++mapnik
#!/bin/bash
g++ "-I/soft/libtool/2.4/include/" "-L/soft/libtool/2.4/lib/" "$@"
export PATH=$HOME/bin:$PATH
and now, compile with :
./configure CXX=g++mapnik CC=gccmapnik BOOST_INCLUDES=/soft/boost/1.48.0/include/ BOOST_LIBS=/soft/boost/1.48.0/lib/ PROJ_LIBS=/soft/proj/4.8.0/lib/ PROJ_INCLUDES=/soft/proj/4.8.0/include/ ICU_LIBS=/soft/ICU/4.2/lib/ ICU_INCLUDES=/soft/ICU/4.2/include/ GDAL_CONFIG=/soft/gdal/1.9.2/bin/gdal-config SQLITE_INCLUDES=/soft/sqlite/3.7.16.2/include SQLITE_LIBS=/soft/sqlite/3.7.16.2/lib PREFIX=/soft/mapnik/2.0.2 PYTHON_PREFIX=/soft/mapnik/2.0.2
\\
====otb====
\\
OTB is a huge toolbox, difficult to compile if you do not meet the exact required versions of libraries. You have to tune some files, because Cmake installation is buggy with some tools. Here are the details of its installation. First thing is to get a functional boost, gdal and mapnik installation.
You need an ICU compatible boost, mapnik 2, and gdal. You need to use gdal internal tiff because it is Bigtiff compatible. This is extremly important for OTB because Bigtiff allow >3.5Gb tiff files, which normal tiff lib does not allow. Due to this, you need to compile the whole chain with the gdal internal libs to prevent errors. Note that once the gdal lib is built, it contains symbols of zlib, libjpeg, libpng, libtiff and libgtiff.Here is the installation script I made to install OTB :
#
# OTB 3.16 Automatic installation script
# Benoit Leveugle, ASA
#
#
# Requirements : gcc >= 4.4.x, gmake >= 3.80, freetype2, cmake
#
# Softs installed : libtool 2.4.2, icu 4.2.1, sqlite 3.7.16.2
# proj 4.8.0, expat 2.1.0, gdal 1.9.2 (with internal bigtiff, geotiff, png, jpeg, zlib)
# bzip2 1.0.6, boost 1.48.0 (with ICU support), mapnik 2.0.0, fltk 1.3.2, OTB 3.16
#
# stop if an error occur
# activate only if errors appends during the process, if not, do not activate because of possible errors in mkdir or rm
# set -e
tar xvzf libtool-2.4.2.tar.gz
cd libtool-2.4.2
./configure --prefix=$HOME/GeoRoot/libtool/2.4.2 --enable-shared --enable-static
make
make check
make install
export PATH=$HOME/GeoRoot/libtool/2.4.2/bin:$PATH
export LD_LIBRARY_PATH=$HOME/GeoRoot/libtool/2.4.2/lib:$LD_LIBRARY_PATH
cd ..
# Saving state
echo "export PATH=$PATH" > state.txt
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf icu4c-4_2_1-src.tgz
cd icu/source
./configure --prefix=$HOME/GeoRoot/ICU/4.2 --enable-static=yes --enable-shared=yes
make
make check -j 16
make install
export LD_LIBRARY_PATH=$HOME/GeoRoot/ICU/4.2/lib:$LD_LIBRARY_PATH
cd ../..
# Saving state
echo "export PATH=$PATH" > state.txt
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf sqlite-autoconf-3071602.tar.gz
cd sqlite-autoconf-3071602
./configure --prefix=$HOME/GeoRoot/sqlite/3.7.16.2 --enable-shared --enable-static
make -j 8
make install
export LD_LIBRARY_PATH=$HOME//GeoRoot/sqlite/3.7.16.2/lib:$LD_LIBRARY_PATH
cd ../
# Saving state
echo "export PATH=$PATH" > state.txt
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf proj-4.8.0.tar.gz
cd proj-4.8.0
./configure --help
./configure --prefix=$HOME/GeoRoot/proj/4.8.0 --enable-shared --enable-static
make -j 16
make check -j 16
make install
export LD_LIBRARY_PATH=$HOME/GeoRoot/proj/4.8.0/lib:$LD_LIBRARY_PATH
cd ../
# Saving state
echo "export PATH=$PATH" > state.txt
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf expat-2.1.0.tar.gz
cd expat-2.1.0
./configure --prefix=$HOME/GeoRoot/expat/2.1.0 --enable-shared --enable-static
make -j 16
make check -j 8
make install
export LD_LIBRARY_PATH=$HOME/GeoRoot/expat/2.1.0/lib:$LD_LIBRARY_PATH
export PATH=$HOME/GeoRoot/expat/2.1.0/bin:$PATH
cd ../
# Saving state
echo "export PATH=$PATH" > state.txt
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf gdal-1.9.2.tar.gz
cd gdal-1.9.2
./configure --prefix=$HOME/GeoRoot/gdal/1.9.2 --with-libtiff=internal --with-geotiff=internal --with-ogr \
--with-libz=internal --with-sqlite3=$HOME/GeoRoot/sqlite/3.7.16.2 --with-expat=$HOME/GeoRoot/expat/2.1.0 \
--with-static-proj4=$HOME/GeoRoot/proj/4.8.0/lib --with-png=internal --with-jpeg=internal CPPFLAGS=-I$HOME/GeoRoot/proj/4.8.0/include
make -j 16
make install
cd ../
export LD_LIBRARY_PATH=$HOME/GeoRoot/gdal/1.9.2/lib:$LD_LIBRARY_PATH
# Saving state
echo "export PATH=$PATH" > state.txt
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
mkdir $HOME/GeoRoot/lib
ln -s $HOME/GeoRoot/gdal/1.9.2/lib/libgdal.so $HOME/GeoRoot/lib/libz.so
ln -s $HOME/GeoRoot/gdal/1.9.2/lib/libgdal.so $HOME/GeoRoot/lib/libpng.so
ln -s $HOME/GeoRoot/gdal/1.9.2/lib/libgdal.so $HOME/GeoRoot/lib/libjpeg.so
ln -s $HOME/GeoRoot/gdal/1.9.2/lib/libgdal.so $HOME/GeoRoot/lib/libtiff.so
ln -s $HOME/GeoRoot/gdal/1.9.2/lib/libgdal.so $HOME/GeoRoot/lib/libgtiff.so
export LD_LIBRARY_PATH=$HOME/GeoRoot/lib:$LD_LIBRARY_PATH
# Saving state
echo "export PATH=$PATH" > state.txt
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
mkdir $HOME/GeoRoot/include
cd gdal-1.9.2
cp port/* $HOME/GeoRoot/include
cp frmts/gtiff/* $HOME/GeoRoot/include
cp frmts/gtiff/libtiff/* $HOME/GeoRoot/include
cp frmts/gtiff/libgeotiff/* $HOME/GeoRoot/include
cp frmts/png/libpng/* $HOME/GeoRoot/include
cp frmts/jpeg/libjpeg/* $HOME/GeoRoot/include
cp frmts/zlib/* $HOME/GeoRoot/include
cd ../
tar xvzf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make
make install PREFIX=$HOME/GeoRoot/bzip2/1.0.6
export LD_LIBRARY_PATH=$HOME/GeoRoot//bzip2/1.0.6/lib:$LD_LIBRARY_PATH
cd ../
# Saving state
echo "export PATH=$PATH" > state.txt
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf boost_1_48_0.tar.gz
cd boost_1_48_0
./bootstrap.sh --with-libraries=all --prefix=$HOME/GeoRoot/boost/1.48.0
./b2 -a -sICU_PATH=$HOME/GeoRoot/ICU/4.2 include=$HOME/GeoRoot/ICU/4.2/include/ install --without-mpi
cd ../
export LD_LIBRARY_PATH=$HOME/GeoRoot/boost/1.48.0/lib:$LD_LIBRARY_PATH
# Saving state
echo "export PATH=$PATH" > state.txt
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf mapnik-2.0.0.tar.gz
cd mapnik-2.0.0
mkdir $HOME/GeoRoot/bin
rm $HOME/GeoRoot/bin/g*
echo "#!/bin/bash" >> $HOME/GeoRoot/bin/gccmapnik
echo 'gcc "-I$HOME/GeoRoot/libtool/2.4.2/include/ -I$HOME/GeoRoot/include" "-L$HOME/GeoRoot/libtool/2.4.2/lib/ -L$HOME/GeoRoot/lib" "$@" \
"-L$HOME/GeoRoot/libtool/2.4.2/lib/ -L$HOME/GeoRoot/lib"' >> gccmapnik
echo "#!/bin/bash" >> $HOME/GeoRoot/bin/g++mapnik
echo 'g++ "-I$HOME/GeoRoot/libtool/2.4.2/include/ -I$HOME/GeoRoot/include" "-L$HOME/GeoRoot/libtool/2.4.2/lib/ -L$HOME/GeoRoot/lib" "$@" \
"-L$HOME/GeoRoot/libtool/2.4.2/lib/ -L$HOME/GeoRoot/lib"' >> g++mapnik
export PATH=$HOME/GeoRoot/bin:$PATH
./configure CXX=g++mapnik CC=gccmapnik BOOST_INCLUDES=$HOME/GeoRoot/boost/1.48.0/include/ BOOST_LIBS=$HOME/GeoRoot/boost/1.48.0/lib/ \
PROJ_LIBS=$HOME/GeoRoot/proj/4.8.0/lib/ PROJ_INCLUDES=$HOME/GeoRoot/proj/4.8.0/include/ ICU_LIBS=$HOME/GeoRoot/ICU/4.2/lib/ \
ICU_INCLUDES=$HOME/GeoRoot/ICU/4.2/include/ LTDL_INCLUDES=$HOME/GeoRoot/libtool/2.4.2/include/ LTDL_LIBS=$HOME/GeoRoot/libtool/2.4.2/lib/ \
GDAL_CONFIG=$HOME/GeoRoot/gdal/1.9.2/bin/gdal-config SQLITE_INCLUDES=$HOME/GeoRoot/sqlite/3.7.16.2/include SQLITE_LIBS=$HOME/GeoRoot/sqlite/3.7.16.2/lib \
PREFIX=$HOME/GeoRoot/mapnik/2.0.0 PYTHON_PREFIX=$HOME/GeoRoot/mapnik/2.0.0 TIFF_INCLUDES=$HOME/GeoRoot/include/ TIFF_LIBS=$HOME/GeoRoot/lib \
JPEG_INCLUDES=$HOME/GeoRoot/include/ JPEG_LIBS=$HOME/GeoRoot/lib PNG_INCLUDES=$HOME/GeoRoot/include/ PNG_LIBS=$HOME/GeoRoot/lib
python scons/scons.py
python scons/scons.py install
cd ../
# Saving state
echo "export PATH=$PATH" > state.txt
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf fltk-1.3.2-source.tar.gz
cd fltk-1.3.2
./configure --prefix=$HOME/GeoRoot/fltk/1.3.2 --enable-shared --enable-threads --enable-static
make
make install
export LD_LIBRARY_PATH=$HOME/GeoRoot/fltk/1.3.2/lib:$LD_LIBRARY_PATH
cd ../
# Saving state
echo "export PATH=$PATH" > state.txt
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> state.txt
tar xvzf OTB-3.16.tgz
mkdir OTB-build
cd OTB-build/
#cp ../OTB-3.16/CMake/ImportBoost.cmake.bkp ../OTB-3.16/CMake/ImportBoost.cmake; rm -Rf *
rm -Rf *
rm CMakeCache.txt; touch CMakeCache.txt
echo "CMAKE_INSTALL_PREFIX:PATH=$HOME/GeoRoot/OTB-3.16" >> CMakeCache.txt
echo "EXPAT_INCLUDE_DIR:PATH=$HOME/GeoRoot/expat/2.1.0/include" >> CMakeCache.txt
echo "EXPAT_LIBRARY:FILEPATH=$HOME/GeoRoot/expat/2.1.0/lib/libexpat.so" >> CMakeCache.txt
echo "FLTK_BASE_LIBRARY:FILEPATH=$HOME/GeoRoot/fltk/1.3.2/lib/libfltk.so" >> CMakeCache.txt
echo "FLTK_CONFIG_SCRIPT:FILEPATH=$HOME/GeoRoot/fltk/1.3.2/bin/fltk-config" >> CMakeCache.txt
echo "FLTK_DIR:PATH=$HOME/GeoRoot/fltk/1.3.2" >> CMakeCache.txt
echo "FLTK_FLUID_EXECUTABLE:FILEPATH=$HOME/GeoRoot/fltk/1.3.2/bin/fluid" >> CMakeCache.txt
echo "FLTK_FORMS_LIBRARY:FILEPATH=$HOME/GeoRoot/fltk/1.3.2/lib/libfltk_forms.so" >> CMakeCache.txt
echo "FLTK_GL_LIBRARY:FILEPATH=$HOME/GeoRoot/fltk/1.3.2/lib/libfltk_gl.so" >> CMakeCache.txt
echo "FLTK_IMAGES_LIBRARY:FILEPATH=$HOME/GeoRoot/fltk/1.3.2/lib/libfltk_images.so" >> CMakeCache.txt
echo "FLTK_INCLUDE_DIR:PATH=$HOME/GeoRoot/fltk/1.3.2/include" >> CMakeCache.txt
echo "FLTK_MATH_LIBRARY:FILEPATH=/usr/lib64/libm.so" >> CMakeCache.txt
echo "GDAL_CONFIG:FILEPATH=$HOME/GeoRoot/gdal/1.9.2/bin/gdal-config" >> CMakeCache.txt
echo "GDAL_INCLUDE_DIR:PATH=$HOME/GeoRoot/gdal/1.9.2/include" >> CMakeCache.txt
echo "GDAL_LIBRARY:FILEPATH=$HOME/GeoRoot/gdal/1.9.2/lib/libgdal.so" >> CMakeCache.txt
echo "GEOTIFF_INCLUDE_DIRS:PATH=$HOME/GeoRoot/include" >> CMakeCache.txt
echo "JPEG_INCLUDE_DIRS:PATH=$HOME/GeoRoot/include" >> CMakeCache.txt
echo "OGR_INCLUDE_DIRS:PATH=$HOME/GeoRoot/gdal/1.9.2/include" >> CMakeCache.txt
echo "Boost_INCLUDE_DIR:PATH=$HOME/GeoRoot/boost/1.48.0/include" >> CMakeCache.txt
echo "OTB_USE_EXTERNAL_BOOST:BOOL=ON" >> CMakeCache.txt
echo "MAPNIK_INCLUDE_DIR:PATH=$HOME/GeoRoot/mapnik/2.0.0/include" >> CMakeCache.txt
echo "MAPNIK_LIBRARY:FILEPATH=$HOME/GeoRoot/mapnik/2.0.0/lib64/libmapnik2.so" >> CMakeCache.txt
echo "OTB_USE_MAPNIK:BOOL=ON" >> CMakeCache.txt
echo "LTDL_INCLUDE_DIR:PATH=$HOME/GeoRoot/libtool/2.4.2/include" >> CMakeCache.txt
echo "LTDL_LIBRARY:FILEPATH=$HOME/GeoRoot/libtool/2.4.2/lib/libltdl.so" >> CMakeCache.txt
echo "ICUUC_INCLUDE_DIR:PATH=$HOME/GeoRoot/ICU/4.2/include/" >> CMakeCache.txt
echo "ICUUC_LIBRARY:FILEPATH=$HOME/GeoRoot/ICU/4.2/lib/libicule.so" >> CMakeCache.txt
echo "CMAKE_CXX_FLAGS:STRING=-I$HOME/GeoRoot/proj/4.8.0/include/" >> CMakeCache.txt
echo "CMAKE_C_FLAGS:STRING=-I$HOME/GeoRoot/proj/4.8.0/include/" >> CMakeCache.txt
# PATCH BOOST
sed -i '9d' ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "1i\SET( GEODIR \"$HOME\")" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nMATH(EXPR Boost_SUBMINOR_VERSION \"\${Boost_VERSION} % 100\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nMATH(EXPR Boost_MINOR_VERSION \"\${Boost_VERSION} \/ 100 % 1000\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nMATH(EXPR Boost_MAJOR_VERSION \"\${Boost_VERSION} \/ 100000\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nSET ( Boost_LIB_VERSION \"1_48\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nSET ( Boost_VERSION \"104800\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nSET ( Boost_LIBRARIES_DIRS \"\${GEODIR}\/GeoRoot\/boost\/1.48.0\/lib\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nSET ( Boost_LIBRARIES \"\${GEODIR}\/GeoRoot\/boost\/1.48.0\/lib\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nSET ( Boost_INCLUDE_DIR \"\${GEODIR}\/GeoRoot\/boost\/1.48.0\/include\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nSET ( Boost_INCLUDE_DIRS \"\${GEODIR}\/GeoRoot\/boost\/1.48.0\/include\")/" ../OTB-3.16/CMake/ImportBoost.cmake
sed -i "s/Import the package/Import the package\nSET ( Boost_FOUND TRUE)/" ../OTB-3.16/CMake/ImportBoost.cmake
# PATCH MAPNIK
# sed -i '30,48d' ../OTB-3.16/Code/Common/otbVectorDataStyle.cxx
# sed -i '47d' ../OTB-3.16/Code/Common/otbVectorDataStyle.cxx
# PATCH MAPNIK V2
sed -i '82d' ../OTB-3.16/CMake/ImportMapnik.cmake
cmake ../OTB-3.16
make -j 16
make install
# Saving final state
rm state.txt
echo "export PATH=$PATH" > finalstate.txt
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> finalstate.txt
If you get :
WARNING: Target "cmTryCompileExec" requests linking to directory "/soft/gdal/1.9.2/lib". Targets may link only to libraries. CMake is dropping the item.
It means you did not specify the exact lib position, but only it's directory. Cmake is waiting for the exact path (ending with libxxxx.so).If you get :
CMake Warning at CMake/ImportGdal.cmake:206 (MESSAGE):
CHECK_XTIFFOPEN_SYMBOL test failed : your platform exhibits a gdal/geotiff
conflict. Opening a TIF file may generate a crash. This is most probably
because the gdal library you configuredembeds its own version of libgeotiff
and is ABI incompatible with the system libgeotiff You might consider building GDAL yourself without using
--with-hide-internal-symbols and pointing GEOTIFF_INCLUDE_DIRS to the
geotiff headers included in gdal sources
Call Stack (most recent call first):
CMakeLists.txt:214 (INCLUDE) CMake Error at CMake/ImportFLTK.cmake:48 (MESSAGE):
Cannot build OTB project without FLTK. Please set FLTK_DIR or set
OTB_USE_EXTERNAL_FLTK OFF to use INTERNAL FLTK.
Call Stack (most recent call first):
CMakeLists.txt:219 (INCLUDE)
It means you builded some part of your system with another lib than the one provided by gdal. This can be done, but this is not a good idea on the long term. You might obtain corrupted files with OTB (I got some).If you get :
CMake Error at CMake/ImportBoost.cmake:18 (MESSAGE):
Cannot build OTB project without boost library. Please set Boost
directories or set OTB_USE_EXTERNAL_BOOST to OFF to use the INTERNAL Boost
version
Call Stack (most recent call first):
CMakeLists.txt:222 (INCLUDE)
CMake Warning at CMake/ImportBoost.cmake:14 (MESSAGE):
Boost >= 1.35 is required. Disabling OTB_USE_EXTERNAL_BOOST
Call Stack (most recent call first):
CMakeLists.txt:222 (INCLUDE)
But you have specified boost dir. It is because the cmake boost detection file is buggy. See the script I gave before, the trick to solve this is described under "Boost Patch".If you get :
[ 95%] [ 95%] Building CXX object Code/Common/CMakeFiles/OTBCommon.dir/otbWriterWatcherBase.cxx.o
Building CXX object Code/Common/CMakeFiles/OTBCommon.dir/otbVectorDataStyle.cxx.o
In file included from /home/myusername/OTB2/OTB-3.16/Code/Common/otbVectorDataStyle.cxx:20:0:
/soft/mapnik/2.1.0/include/mapnik/filter_factory.hpp:1:2: warning: #warning "filter_factory.hpp" is now called "expression.hpp" [-Wcpp]
/home/myusername/OTB2/OTB-3.16/Code/Common/otbVectorDataStyle.cxx:31:9: error: ‘rule_type’ in namespace ‘mapnik’ does not name a type
/home/myusername/OTB2/OTB-3.16/Code/Common/otbVectorDataStyle.cxx:32:8: error: ‘filter_ptr’ in namespace ‘mapnik’ does not name a type
/home/myusername/OTB2/OTB-3.16/Code/Common/otbVectorDataStyle.cxx:36:8: error: ‘shared_ptr’ does not name a type
...
See in the script given before. You have to edit the cmake file that detect mapnik, and force the mapnik version 2. (even with your version 2, it will detect 0.7 version, so you have force it).
\\
====gromacs====
\\
./configure --prefix=/home/toto/TEST/gromacs-bin --enable-float --disable-shared --enable-mpi --program-suffix=_mpi CPPFLAGS="-I/soft/fftw/3.3.3-shared/include" LDFLAGS="-L/soft/fftw/3.3.3-shared/lib"
If you are installing GROMACS using the Installation Instructions from Gromacs and encounter " can't find fftw3f library ", this is probably due to wrong precision being used. Try reconfiguring FFTW with the following settings "--enable-float"
\\
====gerris====
\\
First get Mesa (more informations here : http://gfs.sourceforge.net/wiki/index.php/Standalone_OSMesa):
wget ftp://ftp.freedesktop.org/pub/mesa/7.8.2/MesaLib-7.8.2.tar.bz2
tar xjvf MesaLib-7.8.2.tar.bz2
And build it as a stand alone (prefix is non standard but Gerris needs it) and add some modifications. Use Gcc 4.8 minimum to get performances :
./configure --prefix=/softs/GERRIS/ --with-driver=osmesa --with-osmesa-bits=32 --disable-egl --enable-shared --enable-64-bit CC=gcc CXX=g++
make
make install
ln -s /softs/GERRIS/lib/libOSMesa32.so.7 /softs/GERRIS/lib/libOSMesa.so.7
export LD_LIBRARY_PATH=/softs/GERRIS/lib:$LD_LIBRARY_PATH
Now build gts, then gerris, then gfsview. Again, prefer gcc 4.8.x minimum to get performances (Gerris is non compatible with intel 12). MPT library was used here, but this should work with openmpi also :
./configure --prefix=/soft/GERRIS/ --enable-shared --enable-static CC=gcc CFLAGS=" -march=native -mtune=native -O2 "
make clean; make
make check
make install
./configure --enable-shared --enable-static --prefix=/soft/GERRIS/ CC=mpicc CFLAGS=" -march=native -mtune=native -O2 " FC=mpif90 FFLAGS=" -march=native -mtune=native -O2 " F77=mpif90 FCLAGS=" -march=native -mtune=native -O2 " PKG_CONFIG_PATH=/soft/GERRIS/lib/pkgconfig/
make
make install
./configure --enable-shared --enable-static --prefix=/soft/GERRIS/ CC=mpicc CFLAGS=" -march=native -mtune=native -O2 " PKG_CONFIG_PATH=/soft/GERRIS/lib/pkgconfig/
make
make install
====metis====
\\
Download Metis 5.0.2, extract and build it (both static and shared libraries) :
wget http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/metis-5.0.2.tar.gz
tar xvzf metis-5.0.2
cd metis-5.0.2
make config cc=mpicc prefix=/soft/metis/5.0.2
make
make install
make config shared=1 cc=mpicc prefix=/soft/metis/5.0.2
make
make install
====telemac====
\\
Python install. First, download and install Metis. (see just above)\\
Now, download and extract telemac (extract the tar.gz directly where to install the soft, here /softs/telemac), then go in configs directory :
cd /softs/telemac/V6P3R2/configs/
Add the following file we call **systel.hpc.cfg** :
[Configurations]
configs: hpc
[general]
root: /softs/telemac/V6P3R2
version: v6p3
language: 2
modules: update system -dredgesim
options:
#
mods_all: -I
#
sfx_zip: .gztar
sfx_lib: .a
sfx_obj: .o
sfx_mod: .mod
sfx_exe:
#
val_root: /examples
val_rank: all
# _____ ___________________________________
# ____/ Redhat 6.4 + intel 14.0.2 + openmpi 1.6.5 _________________/
[hpc]
#
options: parallel mpi
#
par_cmdexec: /partel < PARTEL.PAR >>
#
mpi_cmdexec: /softs/intel-14.x-soft/system/openmpi/1.6.5/bin/mpiexec --hostfile /scratch/mylogin/hostfile.txt -wdir -n
mpi_hosts:
#
cmd_obj: /softs/wrapper/mpif90 -c -O2 -DHAVE_MPI -convert big_endian
cmd_lib: ar cru
cmd_exe: /softs/wrapper/mpif90 -convert big_endian -lpthread -v -lm -o -L/scratch/leveugleb
#
incs_parallel: -I /softs/intel-14.x-soft/system/openmpi/1.6.5/include
libs_partel: /softs/metis/5.0.2/lib/libmetis.a
libs_all : /softs/intel-14.x-soft/system/openmpi/1.6.5/lib/libmpi.so
#
Note : in your configuration, /softs/wrapper/ should also be /softs/intel-14.x-soft/system/openmpi/1.6.5/bin/.
The trick : to be able to run Telemac on a cluster with a job scheduler, we will pass the hostfile provided by the job scheduler directly to the mpiexec command. The hostfile will be generated in the jobscheduler script for submitting job and stored in a shared directory, here the user's scratch. (see after for the example).
Now, export 2 variables, the position of the configuration file we made, and the position of the python executables of telemac :
export PATH=/softs/telemac/V6P3R2/scripts/python27/:$PATH
export SYSTELCFG=/softs/telemac/V6P3R2/configs/systel.hpc.cfg
Then compile Telemac, can take a while.
compileTELEMAC.py
If everything went well, you should finally get "My work is done". Telemac is ready, now let's configure the script for job submission.
In your project directory, create the file (WARNING, here the jobscheduler is LoadLeveler, adapt the script to yours) :
#!/bin/sh
# Script de soumission Loadleveler pour un job Intel MPI
# @ job_name = TELEMAC
# @ output = $(job_name).out
# @ error = $(job_name).err
# @ class = intel
# @ account_no = myaccount
# @ job_type = mpich
# @ node = 1
# @ total_tasks = 8
# @ environment = COPY_ALL
# @ wall_clock_limit = 00:10:10,00:10:01
# @ queue
module load intel-14.0.2 openmpi-1.6.5-intel
export PATH=/softs/telemac/V6P3R2/scripts/python27/:$PATH
export SYSTELCFG=/softs/telemac/V6P3R2/configs/systel.hpc.cfg
# Here, wa ask the jobscheduler to write host list into a file, shared by all nodes
cat $LOADL_HOSTFILE > /scratch/mylogin/hostfile.txt
echo ""
echo "I am running on :"; hostname
echo ""
cd /scratch/mylogin/examples/tomawac/bottom_friction/
# Patch for libnuma (see after)
ln -s /usr/lib64/libnuma.so.1 /scratch/mylogin/libnuma.so
export LD_LIBRARY_PATH=/scratch/mylogin/:$LD_LIBRARY_PATH
tomawac.py tom_frot_T_V5P6.cas
rm /scratch/mylogin/hostfile.txt
rm /scratch/mylogin/libnuma.so
Note : because Telemac compile an executable before launching on calculation nodes of the cluster, I missed libnuma.so coming with a devel package (not installed on calculation nodes, for performances). This libnuma.so was only a link to /usr/lib64/libnuma.so.1 which was already installed for runtime on calculation nodes. The trick here is to create a link and the destroy it after runtime.
That's all, now you can use Telemac this way, and the only interaction with the jobscheduler is the creation of the hostsfile.
=====Rendering libraries=====
\\
====matplotlib====
\\
Do not use intel compiler, you may encounter errors, prefer gcc because we do not need extreme performances here.
Note that if it says "cannot resolve https://..." it means your python have no ssl support, which is needed to download packages. See the installation of openssl and python above.
Note also that the installer fails to install if the directory /soft/python/2.7.5-soft/matplotlib/1.3.0/lib/python2.7/site-packages is not present (you have to mkdir it yourself) and if the PYTHONPATH variable do not have this directory also.
python setup.py build
mkdir /soft/python/2.7.5-soft/matplotlib
mkdir /soft/python/2.7.5-soft/matplotlib/1.3.0
mkdir /soft/python/2.7.5-soft/matplotlib/1.3.0/lib
mkdir /soft/python/2.7.5-soft/matplotlib/1.3.0/lib/python2.7
mkdir /soft/python/2.7.5-soft/matplotlib/1.3.0/lib/python2.7/site-packages
export PYTHONPATH=/soft/python/2.7.5-soft/matplotlib/1.3.0/lib/python2.7/site-packages:/$PYTHONPATH
python setup.py install --prefix=/soft/python/2.7.5-soft/matplotlib/1.3.0
Test :
python
Python 2.7.5 (default, Sep 24 2013, 17:03:24)
[GCC 4.6.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib
>>> print matplotlib.__version__
1.3.0
And you are good to go.
\\
====flex====
\\
./configure --prefix=/soft/flex/2.5.37 CC=icc CXX=icpc
If you are working on a calculator, latex packages may not be available, and you will encounter the following error :
make[2]: Entering directory `$HOME/flex-2.5.37/doc'
TEXINPUTS=".:$TEXINPUTS" \
MAKEINFO='/bin/sh $HOME/flex-2.5.37/missing --run makeinfo -I .' \
texi2dvi --pdf --batch flex.texi
/bin/sh: texi2dvi: command not found
make[2]: *** [flex.pdf] Error 127
Just by-pass it, making a false binary :
mkdir $HOME/bin
cd $HOME/bin
vim texi2dvi.f90
Past the following text :
program texi2dvi
print *,"Fake Latex !!!"
end program texi2dvi
Save an compile :
gfortran texi2dvi.f90 -o texi2dvi
# Add to path :
export PATH=$HOME/bin:$PATH
Relaunch make, its ok now. To install, just add a fake pdf file in doc :
touch $HOME/flex-2.5.37/doc/flex.pdf
make install
\\
====gnuplot====
\\
To compile it, try to connect using ssh -X if you work on a remote server. The make check needs X11 display.
./configure --prefix=/soft/gnuplot-4.6.1 --with-readline=gnu
make
make check
make install
If you need to specify readline (for auto-completion) :
./configure --prefix=/soft/gnuplot-4.6.1 --with-readline=/soft/readline-6.2
\\
====motif====
\\
http://downloads.sourceforge.net/project/motif/Motif%202.3.4%20Source%20Code/motif-2.3.4-src.tgz
./autogen.sh
./configure --prefix=/soft/motif/2.3.4 CC=gcc CFLAGS="-I/soft/xbitmaps/1.1.1/include/"
If you get the error :
error: X11/bitmaps/gray: No such file or directory
You need to install X11 bitmaps library, and specify its position.
\\
====freetype2====
\\
http://sourceforge.net/projects/freetype/files/freetype2/2.4.11/freetype-2.4.11.tar.gz
./configure --prefix=/soft/freetype/2.4.11
make
make check
make install
\\
====xpdf====
\\
Needs a lot of dependencies : X11 bitmaps, Motif and FreeType2.
./configure --prefix=/soft/xpdf/3.03 --with-freetype2-library=/soft/freetype/2.4.11/lib/ --with-freetype2-includes=/soft/freetype/2.4.11/include/freetype2/ --with-Xm-library=/soft/motif/2.3.4/lib/ --with-Xm-includes=/soft/motif/2.3.4/include/
make
make install
If you still get this error :
configure: WARNING: Couldn't find FreeType
configure: WARNING: -- You will be able to compile pdftops, pdftotext,
pdfinfo, pdffonts, pdfdetach, and pdfimages, but not xpdf
or pdftoppm
When looking inside the config.log, the error could be :
/soft/freetype/2.4.11/include/ft2build.h:56:38: error: freetype/config/ftheader.h: No such file or directory
In fact, freetype 2 includes are not in include, but in include/freetype2/ (see above).
\\
====X11 bitmaps====
\\
http://ftp.riken.jp/pub/X11/ftp.x.org/pub/individual/data/xbitmaps-1.1.1.tar.gz
./configure --prefix=/soft/xbitmaps/1.1.1
make
make install
\\
====fltk====
\\
./configure --prefix=/soft/fltk/1.3.2 --enable-shared --enable-threads
make -j 4
make install
\\
====geotiff====
\\
./configure --prefix=/soft/geotiff/1.4.0 --with-libtiff=/soft/tiff/4.0.3/ --with-proj=/soft/proj/4.8.0/
\\
====tiff====
\\
./configure --prefix=/soft/tiff/4.0.3