/[escript]/branches/doubleplusgood/doc/install/srclinux.tex
ViewVC logotype

Annotation of /branches/doubleplusgood/doc/install/srclinux.tex

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3335 - (hide annotations)
Wed Nov 3 05:02:57 2010 UTC (8 years, 5 months ago) by jfenwick
Original Path: trunk/doc/install/srclinux.tex
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 jfenwick 2289 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2     %
3 jfenwick 2881 % Copyright (c) 2003-2010 by University of Queensland
4 jfenwick 2289 % 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 jfenwick 2317 \label{sec:srclinux}
15 caltinay 2536
16 jfenwick 3335 \subsection{Dependencies}
17 caltinay 2536
18 jfenwick 3322 The following instructions assume you are running the \file{bash} shell.
19 jfenwick 2317 Comments are indicated with \# characters.
20    
21     Make sure you have the following installed:
22     \begin{itemize}
23 jfenwick 3322 \item \file{g++} and associated tools.
24     \item \file{make}
25 caltinay 2536 % I suspect that these are only needed by VTK and if we aren't using it anymore they could be removed
26 jfenwick 3322 % \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 jfenwick 2317 \end{itemize}
29    
30 jfenwick 3322 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 jfenwick 2602 make sure to get the development packages):
32     \begin{itemize}
33 jfenwick 3322 \item \file{freetype2}
34     \item \file{zlib}
35     \item \file{libpng}
36 jfenwick 2602 \end{itemize}
37    
38    
39 jfenwick 3335 \subsection{Preliminaries}
40     \label{sec:prelim}
41 jfenwick 2317 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 jfenwick 3322 For additional visualization functionality see Section~\ref{sec:addfunc}.
44 jfenwick 2317
45 caltinay 2536 These instructions will produce the following directory structure:
46 jfenwick 2317 \begin{itemize}
47 jfenwick 3322 \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 caltinay 2536 \end{itemize}
54 jfenwick 2317 \end{itemize}
55    
56 jfenwick 3322 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 caltinay 2536 If you download your own versions of those packages substitute their version numbers and names as appropriate.
59 jfenwick 3322 There are a number of uses of the \file{make} command in the following instructions.
60 caltinay 2536 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 jfenwick 2317 \begin{shellCode}
63 jfenwick 3335 make
64 jfenwick 2529 \end{shellCode}
65 caltinay 2536 becomes
66 jfenwick 2529 \begin{shellCode}
67 jfenwick 3335 make -j 4
68 jfenwick 2529 \end{shellCode}
69    
70     \begin{shellCode}
71 jfenwick 2317 mkdir stand
72     cd stand
73 caltinay 2536 mkdir build doc pkg pkg_src
74 jfenwick 2529 export PKG_ROOT=$(pwd)/pkg
75 jfenwick 2317 \end{shellCode}
76    
77 caltinay 2536 \subsection{Building the dependencies}
78    
79 jfenwick 3322 Copy the compressed sources for the packages into \file{stand/pkg_src}.
80 caltinay 2536 If you are using the support bundles, decompress them in the stand directory:
81 jfenwick 2529 \begin{shellCode}
82     tar -xjf escript-support-3-src.tar.bz2
83     \end{shellCode}
84    
85 jfenwick 3322 Copy documentation files into \file{doc} then unpack the archives:
86 jfenwick 2317
87     \begin{shellCode}
88     cd build
89 jfenwick 2568 tar -jxf ../pkg_src/Python-2.6.2.tar.bz2
90 jfenwick 2529 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 jfenwick 2317 \end{shellCode}
96    
97 caltinay 2536 \begin{itemize}
98    
99     \item Build Python:
100 jfenwick 2317 \begin{shellCode}
101     cd Python*
102 jfenwick 2568 ./configure --prefix=$PKG_ROOT/python-2.6.2 --enable-shared 2>&1 \
103 jfenwick 2317 | tee tt.configure.out
104 jfenwick 2568 make
105 jfenwick 2317 make install 2>&1 | tee tt.make.out
106    
107     cd ..
108    
109 artak 2328 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 jfenwick 2317
113 jfenwick 2529 pushd ../pkg
114 jfenwick 2568 ln -s python-2.6.2/ python
115 jfenwick 2317 popd
116     \end{shellCode}
117    
118 caltinay 2536 Run the new python executable to make sure it works.
119 jfenwick 2317
120 caltinay 2536 \item Now build NumPy:
121 jfenwick 2317 \begin{shellCode}
122 jfenwick 2462 cd numpy-1.3.0
123     python setup.py build
124     python setup.py install --prefix $PKG_ROOT/numpy-1.3.0
125 jfenwick 2317 cd ..
126 jfenwick 2529 pushd ../pkg
127 jfenwick 2462 ln -s numpy-1.3.0 numpy
128 jfenwick 2317 popd
129 jfenwick 2462 export PYTHONPATH=$PKG_ROOT/numpy/lib/python2.6/site-packages:$PYTHONPATH
130 jfenwick 2317 \end{shellCode}
131    
132 jfenwick 2462 % \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 jfenwick 2529 % pushd ../pkg
144 jfenwick 2462 % ln -s numarray-1.5.2 numarray
145     % popd
146     % \end{shellCode}
147    
148 caltinay 2536 \item Next build scons:
149 jfenwick 2317 \begin{shellCode}
150     cd scons-1.2.0
151 artak 2328 python setup.py install --prefix=$PKG_ROOT/scons-1.2.0
152 jfenwick 2317
153 artak 2328 export PATH=$PKG_ROOT/scons/bin:$PATH
154 jfenwick 2317 cd ..
155 jfenwick 2529 pushd ../pkg
156 jfenwick 2317 ln -s scons-1.2.0 scons
157     popd
158     \end{shellCode}
159    
160 caltinay 2536 \item The Boost libraries...:
161 jfenwick 2317 \begin{shellCode}
162 jfenwick 2529 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 caltinay 2536 ./bjam
169 jfenwick 2529 ./bjam install --prefix=$PKG_ROOT/boost --libdir=$PKG_ROOT/boost/lib
170 artak 2328 export LD_LIBRARY_PATH=$PKG_ROOT/boost/lib:$LD_LIBRARY_PATH
171 jfenwick 2317 cd ..
172 jfenwick 2529 pushd ../pkg/boost/lib/
173     ln *.so.* libboost_python.so
174 jfenwick 2317 popd
175     \end{shellCode}
176    
177 caltinay 3265 \item ...and netCDF:
178 jfenwick 2317 \begin{shellCode}
179     cd netcdf-4.0
180 jfenwick 2462 CFLAGS="-O2 -fPIC -Df2cFortran" CXXFLAGS="-O2 -fPIC -Df2cFortran" \
181     FFLAGS="-O2 -fPIC -Df2cFortran" FCFLAGS="-O2 -fPIC -Df2cFortran" \
182 artak 2328 ./configure --prefix=$PKG_ROOT/netcdf-4.0
183 jfenwick 2317
184 jfenwick 2529 make
185 jfenwick 2317 make install
186    
187 artak 2328 export LD_LIBRARY_PATH=$PKG_ROOT/netcdf/lib:$LD_LIBRARY_PATH
188 jfenwick 2317 cd ..
189 jfenwick 2529 pushd ../pkg
190 jfenwick 2317 ln -s netcdf-4.0 netcdf
191     popd
192     \end{shellCode}
193    
194 caltinay 2536 \item Finally matplotlib:
195 jfenwick 2529 \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 caltinay 2536 \end{itemize}
207    
208 jfenwick 2568 % \subsection{VTK support}
209     % VTK is only required for pyvisi. To build it you need CMake and Mesa.
210 jfenwick 3322 % The packages can be downloaded independently or in the \file{escript-support-visi-3-src}.
211 jfenwick 2568 % If you will not be using pyvisi, then skip to \Sec{sec:compileescriptlinux}
212     %
213 jfenwick 3322 % Copy the compressed sources for the packages into \file{stand/pkg_src}.
214 jfenwick 2568 % 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 jfenwick 3322 % Now edit the \file{CMakeCache.txt} file and make the following changes.
267 jfenwick 2568 % Where .... appears please replace it with the absolute path to the pkg directory.
268 jfenwick 3322 % 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 jfenwick 2568 % (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 jfenwick 3322 % Edit \file{CMakeCache.txt} and change the following variables:
289 jfenwick 2568 %
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 jfenwick 2529
315 jfenwick 2324 \subsection{Compiling escript}\label{sec:compileescriptlinux}
316    
317 jfenwick 3322 Change to the directory containing your escript source (\file{stand/escript.d}), then:
318 jfenwick 2324
319 jfenwick 2317 \begin{shellCode}
320 jfenwick 2529 cd escript.d/scons
321 jfenwick 3335 cp TEMPLATE_linux.py YourMachineName_options.py
322 jfenwick 2317
323 jfenwick 2529 echo $PKG_ROOT
324     \end{shellCode}
325 jfenwick 2602 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 jfenwick 3322 For example the options file for \texttt{bob-desktop} would be named \file{bob_desktop_options.py}.
328 jfenwick 3335 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 jfenwick 2317
330    
331 jfenwick 3335 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 jfenwick 2529 \begin{shellCode}
369     cd ../bin
370     \end{shellCode}
371 jfenwick 2317
372 jfenwick 3322 Modify the STANDALONE line of \file{run-escript} to read:
373 jfenwick 2529
374 jfenwick 2317 STANDALONE=1
375    
376 jfenwick 3322 Start a new terminal and go to the \file{stand} directory.
377 jfenwick 2317
378 jfenwick 2529 \begin{shellCode}
379     export PATH=$(pwd)/pkg/scons/bin:$PATH
380 jfenwick 2317 cd escript.d
381 jfenwick 2923 eval $(bin/run-escript -e)
382 jfenwick 2317 scons
383     \end{shellCode}
384    
385     If you wish to test your build, then you can do the following.
386 caltinay 2536 Note this may take a while if you have a slow processor and/or less than 1GB of RAM.
387 jfenwick 2317 \begin{shellCode}
388     scons all_tests
389     \end{shellCode}
390    
391 jfenwick 2324 \subsection{Cleaning up}
392 jfenwick 3335 Once you are satisfied, the \file{escript.d/build} and \file{stand/build} directories can be removed.
393 jfenwick 2317
394 caltinay 2536 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 jfenwick 2317 \begin{itemize}
396 jfenwick 3322 \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 jfenwick 2324 \item Hidden files, which can be removed using
400 jfenwick 2317 \begin{shellCode}
401 jfenwick 2602 find . -name '.?*' | xargs rm -rf
402 jfenwick 2317 \end{shellCode}
403 jfenwick 3322 in the \file{escript.d} directory.
404 jfenwick 2324 \end{itemize}
405 jfenwick 3322 \item from the \file{pkg} directory:
406 jfenwick 2324 \begin{itemize}
407 jfenwick 3335 \item \file{scons}, \file{scons-1.2.0}
408 jfenwick 2324 \end{itemize}
409 jfenwick 3322 \item \file{package\_src}\footnote{Do not remove this if you intend to redistribute.}.
410 jfenwick 2324 \end{itemize}
411 jfenwick 2317
412 jfenwick 2324 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