/[escript]/trunk/doc/install/srclinux.tex
ViewVC logotype

Contents of /trunk/doc/install/srclinux.tex

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3335 - (show annotations)
Wed Nov 3 05:02:57 2010 UTC (8 years, 4 months ago) by jfenwick
File MIME type: application/x-tex
File size: 11611 byte(s)
Fix the launcher so that it can give an environment even if buildvars is not present.
Environment now includes scons for standalone builds.
Fixes and cleanup for the install documentation.
scons TEMPLATES updated to define the optionfile version by default.

...mumble
   finley no longer imports escript into the default namespace
...
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 %
3 % Copyright (c) 2003-2010 by University of Queensland
4 % Earth Systems Science Computational Center (ESSCC)
5 % http://www.uq.edu.au/esscc
6 %
7 % Primary Business: Queensland, Australia
8 % Licensed under the Open Software License version 3.0
9 % http://www.opensource.org/licenses/osl-3.0.php
10 %
11 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12
13 \section{Installing from source for \linux}
14 \label{sec:srclinux}
15
16 \subsection{Dependencies}
17
18 The following instructions assume you are running the \file{bash} shell.
19 Comments are indicated with \# characters.
20
21 Make sure you have the following installed:
22 \begin{itemize}
23 \item \file{g++} and associated tools.
24 \item \file{make}
25 % I suspect that these are only needed by VTK and if we aren't using it anymore they could be removed
26 % \item \file{libXext.so}\footnote{In Debian this is in the libXext-dev package.}
27 % \item \file{libxt.so}\footnote{In Debian this is in the libxt-dev package.}
28 \end{itemize}
29
30 To compile matplotlib you will also need the following\footnote{For Debian and Ubuntu users, installing \file{libfreetype6-dev} and \file{libpng-dev} will be sufficient.} (if your distribution separates development files,
31 make sure to get the development packages):
32 \begin{itemize}
33 \item \file{freetype2}
34 \item \file{zlib}
35 \item \file{libpng}
36 \end{itemize}
37
38
39 \subsection{Preliminaries}
40 \label{sec:prelim}
41 You will also need a copy of the \esfinley source code.
42 If you retrieved the source using subversion, don't forget that one can use the export command instead of checkout to get a smaller copy.
43 For additional visualization functionality see Section~\ref{sec:addfunc}.
44
45 These instructions will produce the following directory structure:
46 \begin{itemize}
47 \item[] \file{stand} \begin{itemize}
48 \item[] \file{escript.d}
49 \item[] \file{pkg}
50 \item[] \file{pkg_src}
51 \item[] \file{build}
52 \item[] \file{doc}
53 \end{itemize}
54 \end{itemize}
55
56 Before you start copy the \esfinley source into the \file{escript.d} directory.
57 The following instructions refer to software versions in the \file{escript-support-3-src} bundle.
58 If you download your own versions of those packages substitute their version numbers and names as appropriate.
59 There are a number of uses of the \file{make} command in the following instructions.
60 If your computer has multiple cores/processors you can speed up the compilation process by adding -j 2 after the make command.
61 For example to use all processors on a computer with 4 cores:
62 \begin{shellCode}
63 make
64 \end{shellCode}
65 becomes
66 \begin{shellCode}
67 make -j 4
68 \end{shellCode}
69
70 \begin{shellCode}
71 mkdir stand
72 cd stand
73 mkdir build doc pkg pkg_src
74 export PKG_ROOT=$(pwd)/pkg
75 \end{shellCode}
76
77 \subsection{Building the dependencies}
78
79 Copy the compressed sources for the packages into \file{stand/pkg_src}.
80 If you are using the support bundles, decompress them in the stand directory:
81 \begin{shellCode}
82 tar -xjf escript-support-3-src.tar.bz2
83 \end{shellCode}
84
85 Copy documentation files into \file{doc} then unpack the archives:
86
87 \begin{shellCode}
88 cd build
89 tar -jxf ../pkg_src/Python-2.6.2.tar.bz2
90 tar -jxf ../pkg_src/boost_1_39_0.tar.bz2
91 tar -zxf ../pkg_src/scons-1.2.0.tar.gz
92 tar -zxf ../pkg_src/numpy-1.3.0.tar.gz
93 tar -zxf ../pkg_src/netcdf-4.0.tar.gz
94 tar -zxf ../pkg_src/matplotlib-0.98.5.3.tar.gz
95 \end{shellCode}
96
97 \begin{itemize}
98
99 \item Build Python:
100 \begin{shellCode}
101 cd Python*
102 ./configure --prefix=$PKG_ROOT/python-2.6.2 --enable-shared 2>&1 \
103 | tee tt.configure.out
104 make
105 make install 2>&1 | tee tt.make.out
106
107 cd ..
108
109 export PATH=$PKG_ROOT/python/bin:$PATH
110 export PYTHONHOME=$PKG_ROOT/python
111 export LD_LIBRARY_PATH=$PKG_ROOT/python/lib:$LD_LIBRARY_PATH
112
113 pushd ../pkg
114 ln -s python-2.6.2/ python
115 popd
116 \end{shellCode}
117
118 Run the new python executable to make sure it works.
119
120 \item Now build NumPy:
121 \begin{shellCode}
122 cd numpy-1.3.0
123 python setup.py build
124 python setup.py install --prefix $PKG_ROOT/numpy-1.3.0
125 cd ..
126 pushd ../pkg
127 ln -s numpy-1.3.0 numpy
128 popd
129 export PYTHONPATH=$PKG_ROOT/numpy/lib/python2.6/site-packages:$PYTHONPATH
130 \end{shellCode}
131
132 % \begin{shellCode}
133 % cd numarray-1.5.2
134 %
135 % python setup.py install \
136 % --gencode --install-lib=$PKG_ROOT/numarray-1.5.2/lib \
137 % --install-headers=$PKG_ROOT=$PKG_ROOT/numarray-1.5.2/include/numarray \
138 % 2>&1 | tee tt.install.out
139 %
140 %
141 % export PYTHONPATH=$PKG_ROOT/numarray/lib:$PYTHONPATH
142 % cd ..
143 % pushd ../pkg
144 % ln -s numarray-1.5.2 numarray
145 % popd
146 % \end{shellCode}
147
148 \item Next build scons:
149 \begin{shellCode}
150 cd scons-1.2.0
151 python setup.py install --prefix=$PKG_ROOT/scons-1.2.0
152
153 export PATH=$PKG_ROOT/scons/bin:$PATH
154 cd ..
155 pushd ../pkg
156 ln -s scons-1.2.0 scons
157 popd
158 \end{shellCode}
159
160 \item The Boost libraries...:
161 \begin{shellCode}
162 pushd ../pkg
163 mkdir boost_1_39_0
164 ln -s boost_1_39_0 boost
165 popd
166 cd boost_1_39_0
167 ./bootstrap.sh --with-libraries=python --prefix=$PKG_ROOT/boost
168 ./bjam
169 ./bjam install --prefix=$PKG_ROOT/boost --libdir=$PKG_ROOT/boost/lib
170 export LD_LIBRARY_PATH=$PKG_ROOT/boost/lib:$LD_LIBRARY_PATH
171 cd ..
172 pushd ../pkg/boost/lib/
173 ln *.so.* libboost_python.so
174 popd
175 \end{shellCode}
176
177 \item ...and netCDF:
178 \begin{shellCode}
179 cd netcdf-4.0
180 CFLAGS="-O2 -fPIC -Df2cFortran" CXXFLAGS="-O2 -fPIC -Df2cFortran" \
181 FFLAGS="-O2 -fPIC -Df2cFortran" FCFLAGS="-O2 -fPIC -Df2cFortran" \
182 ./configure --prefix=$PKG_ROOT/netcdf-4.0
183
184 make
185 make install
186
187 export LD_LIBRARY_PATH=$PKG_ROOT/netcdf/lib:$LD_LIBRARY_PATH
188 cd ..
189 pushd ../pkg
190 ln -s netcdf-4.0 netcdf
191 popd
192 \end{shellCode}
193
194 \item Finally matplotlib:
195 \begin{shellCode}
196 cd matplotlib-0.98.5.3
197 python setup.py build
198 python setup.py install --prefix=$PKG_ROOT/matplotlib-0.98.5.3
199 cd ..
200 pushd ../pkg
201 ln -s matplotlib-0.98.5.3 matplotlib
202 popd
203 cd ..
204 \end{shellCode}
205
206 \end{itemize}
207
208 % \subsection{VTK support}
209 % VTK is only required for pyvisi. To build it you need CMake and Mesa.
210 % The packages can be downloaded independently or in the \file{escript-support-visi-3-src}.
211 % If you will not be using pyvisi, then skip to \Sec{sec:compileescriptlinux}
212 %
213 % Copy the compressed sources for the packages into \file{stand/pkg_src}.
214 % If you are using the support bundles, decompress them in the stand directory.
215 % \begin{shellCode}
216 % tar -xjf escript-support-visi-3-src.tar.bz2
217 % \end{shellCode}
218 %
219 % \begin{shellCode}
220 % cd build
221 % tar -jxf ../pkg_src/MesaLib-7.2.tar.bz2
222 % tar -zxf ../pkg_src/vtk-5.2.1.tar.gz
223 % tar -zxf ../pkg_src/vtkdata-5.2.1.tar.gz
224 % tar -zxf ../pkg_src/cmake-2.6.3.tar.gz
225 % \end{shellCode}
226 %
227 % \begin{itemize}
228 %
229 % \item Build CMake:
230 % \begin{shellCode}
231 % cd cmake-2.6.3
232 % ./configure --prefix=$PKG_ROOT/cmake-2.6.3 2>&1 | tee tt.configure
233 % make
234 % make install
235 %
236 % export PATH=$PKG_ROOT/cmake/bin:$PATH
237 % cd ..
238 % pushd ../pkg
239 % ln -s cmake-2.6.3 cmake
240 % popd
241 % \end{shellCode}
242 %
243 % \item Build Mesa:
244 % \begin{shellCode}
245 % cd Mesa-7.2
246 % ./configure --prefix=$PKG_ROOT/mesa-7.2 --enable-gl-osmesa --with-driver=xlib
247 %
248 % make
249 % make install
250 %
251 % export LD_LIBRARY_PATH=$PKG_ROOT/mesa/lib:$LD_LIBRARY_PATH
252 % cd ..
253 % pushd ../pkg
254 % ln -s mesa-7.2 mesa
255 % popd
256 % \end{shellCode}
257 % These instructions do not compile MesaDemos or GLUT.
258 % If you need to check if Mesa compiled correctly, then the demos are a good test.
259 %
260 % \item Finally, build VTK:
261 % \begin{shellCode}
262 % cd VTK
263 % cmake .
264 % \end{shellCode}
265 %
266 % Now edit the \file{CMakeCache.txt} file and make the following changes.
267 % Where .... appears please replace it with the absolute path to the pkg directory.
268 % For example, replace \file{CMAKE_INSTALL_PREFIX:PATH=..../vtk-5.2.1} with
269 % \file{CMAKE_INSTALL_PREFIX:PATH=/home/bob/stand/pkg/vtk-5.2.1}
270 % (Search for the text before the =).
271 % \begin{shellCode}
272 % BUILD_EXAMPLES:BOOL=OFF
273 % BUILD_SHARED_LIBS:BOOL=ON
274 % CMAKE_INSTALL_PREFIX:PATH=..../vtk-5.2.1
275 % CMAKE_VERBOSE_MAKEFILE:BOOL=TRUE
276 % VTK_OPENGL_HAS_OSMESA:BOOL=TRUE
277 % VTK_USE_64BIT_IDS:BOOL=ON
278 % VTK_WRAP_PYTHON:BOOL=ON
279 % VTK_USE_MANGLED_MESA:BOOL=OFF
280 % \end{shellCode}
281 %
282 % Now rerun cmake (it won't work but it adds some variables you need).
283 %
284 % \begin{shellCode}
285 % cmake .
286 % \end{shellCode}
287 %
288 % Edit \file{CMakeCache.txt} and change the following variables:
289 %
290 % \begin{shellCode}
291 % VTK_USE_OFFSCREEN:BOOL=ON
292 % VTK_USE_TK:BOOL=OFF
293 % OSMESA_INCLUDE_DIR:PATH=..../mesa/include
294 % OSMESA_LIBRARY:FILEPATH=..../mesa/lib/libOSMesa.so
295 % PYTHON_INCLUDE_PATH:PATH=..../python/include/python2.6
296 % PYTHON_LIBRARY:FILEPATH=..../python/lib/libpython2.6.so
297 % OPENGL_INCLUDE_DIR:PATH=..../mesa/include
298 % OPENGL_gl_LIBRARY:FILEPATH=..../mesa/lib/libGL.so
299 % \end{shellCode}
300 %
301 % The following steps will take a while so grab a coffee while it compiles.
302 % \begin{shellCode}
303 % cmake .
304 % make
305 % chmod +w Utilities/vtktiff/tif_fax3sm.c
306 % make install
307 %
308 % cd ../../pkg
309 % ln -s vtk-5.2.1 vtk
310 % cd ..
311 % \end{shellCode}
312 %
313 % \end{itemize}
314
315 \subsection{Compiling escript}\label{sec:compileescriptlinux}
316
317 Change to the directory containing your escript source (\file{stand/escript.d}), then:
318
319 \begin{shellCode}
320 cd escript.d/scons
321 cp TEMPLATE_linux.py YourMachineName_options.py
322
323 echo $PKG_ROOT
324 \end{shellCode}
325 Where \texttt{YourMachineName} is the name of your computer as returned by the hostname command.
326 If the name contains non-alphanumeric characters, then you will need to replace them with underscores.
327 For example the options file for \texttt{bob-desktop} would be named \file{bob_desktop_options.py}.
328 If you wish to build with OpenMP, MPI or configure other aspects of the system take a quick look at Section~\ref{sec:compilesrc}.
329
330
331 You will need to edit your options file and specify where to find boost and netcdf.
332 (replace \file{x/stand} with the path to \file{stand})
333
334 \begin{python}
335 #boost_prefix = '/usr/local'
336 \end{python}
337
338 should be
339 \begin{python}
340 boost_prefix = ['x/stand/pkg/boost/include/boost-1_39/', 'x/stand/pkg/boost/lib/']
341 \end{python}
342
343 \begin{python}
344 #netcdf = True
345 \end{python}
346
347 should be
348 \begin{python}
349 netcdf = True
350 \end{python}
351
352 \begin{python}
353 #netcdf_prefix = '/usr/local'
354 \end{python}
355
356 should be \begin{python}
357 netcdf_prefix = ['x/stand/pkg/netcdf/include/',
358 'x/stand/pkg/netcdf/lib/']}
359 \end{python}
360
361 %
362 % Edit the options file and put the value of PKG_ROOT between the quotes in the PKG_ROOT= line.
363 % For example:
364 % \begin{shellCode}
365 % PKG_ROOT="/home/bob/stand/pkg"
366 % \end{shellCode}
367
368 \begin{shellCode}
369 cd ../bin
370 \end{shellCode}
371
372 Modify the STANDALONE line of \file{run-escript} to read:
373
374 STANDALONE=1
375
376 Start a new terminal and go to the \file{stand} directory.
377
378 \begin{shellCode}
379 export PATH=$(pwd)/pkg/scons/bin:$PATH
380 cd escript.d
381 eval $(bin/run-escript -e)
382 scons
383 \end{shellCode}
384
385 If you wish to test your build, then you can do the following.
386 Note this may take a while if you have a slow processor and/or less than 1GB of RAM.
387 \begin{shellCode}
388 scons all_tests
389 \end{shellCode}
390
391 \subsection{Cleaning up}
392 Once you are satisfied, the \file{escript.d/build} and \file{stand/build} directories can be removed.
393
394 If you \emph{really} want to save space and do not wish to be able to edit or recompile \esfinley, you can remove the following:
395 \begin{itemize}
396 \item From the \file{escript.d} directory:\begin{itemize}
397 \item Everything except: \file{bin}, \file{include}, \file{lib}, \file{esys},
398 \file{README_LICENSE}.
399 \item Hidden files, which can be removed using
400 \begin{shellCode}
401 find . -name '.?*' | xargs rm -rf
402 \end{shellCode}
403 in the \file{escript.d} directory.
404 \end{itemize}
405 \item from the \file{pkg} directory:
406 \begin{itemize}
407 \item \file{scons}, \file{scons-1.2.0}
408 \end{itemize}
409 \item \file{package\_src}\footnote{Do not remove this if you intend to redistribute.}.
410 \end{itemize}
411
412 Please note that removing all these files may make it more difficult for us to diagnose problems.
413
414

  ViewVC Help
Powered by ViewVC 1.1.26