Project

General

Profile

Installation » History » Version 21

Tony Ciavarella, 06/04/2012 02:46 AM

1 1 Tony Ciavarella
h1. Installation
2
3 5 Tony Ciavarella
h2. Obtaining the Source Code
4 1 Tony Ciavarella
5 2 Tony Ciavarella
h3. Release Tarballs
6
7 4 Tony Ciavarella
Release source tarballs are available on the "Files":http://oss.squalllinesoftware.com/projects/disorder/files page.  This is what you want if you are looking for stability and something ready for production use.  You'll probably want to use the most recent version found on that page.
8 2 Tony Ciavarella
9
h3. SCM
10
11 4 Tony Ciavarella
The Disorder source code is hosted in a "Bazaar":http://bazaar.canonical.com repository.  This is what you want if you are looking for the very latest bleeding edge of the code for contributing to Disorder or whatever other reason you may have.
12 2 Tony Ciavarella
13
To get a lightweight checkout of the latest version without all the history (not suitable for Disorder development):
14 3 Tony Ciavarella
<pre>bzr co --lightweight http://???.squalllinesoftware.com/???/disorder</pre>
15 2 Tony Ciavarella
16
To clone the repository including the full history:
17 3 Tony Ciavarella
<pre>bzr branch http://???.squalllinesoftware.com/???/disorder</pre>
18 2 Tony Ciavarella
19 1 Tony Ciavarella
h2. Prerequisites
20
21
The following third party things are required to use Disorder:
22 6 Tony Ciavarella
* "Boost":http://www.boost.org >= 1.49.0
23 8 Tony Ciavarella
* "Eigen":http://eigen.tuxfamily.org >= 3.0.5
24 7 Tony Ciavarella
* C++ version of the "SEDRIS SRM":http://www.sedris.org/srm_4.4/srm_c_cpp.htm >= 4.4.0 (optional but you will need some kind of sophisticated geospatial library)
25 1 Tony Ciavarella
* A "Python":http://www.python.org interpreter (needed to use the "waf":https://code.google.com/p/waf/ build system)
26
27 13 Tony Ciavarella
Build and install these things in accordance with the instructions for your operating system provided by each vendor.  Some hints for certain platforms follow.
28 1 Tony Ciavarella
29 8 Tony Ciavarella
h3. Debian Linux and Derivatives
30
31 13 Tony Ciavarella
Pat yourself on the back for using a good operating system.  All the dependencies are available via the package system.  To install the Boost and Eigen build dependencies on Debian and maybe other derivatives:
32 8 Tony Ciavarella
<pre>sudo apt-get install libboost-dev libboost-system-dev libboost-thread-dev libboost-date-time-dev libeigen3-dev</pre>
33 1 Tony Ciavarella
34
If you don't already have python, this will get the required bits of that:
35
<pre>sudo apt-get install python</pre>
36 13 Tony Ciavarella
37
h2. Configuration
38
39
If everything is setup properly, this step will be a breeze, but it is important to resolve any errors produced by the configuration step prior to attempting to compile Disorder.
40
41 15 Tony Ciavarella
h3. Linux
42 13 Tony Ciavarella
43
From inside the root of the Disorder tree do this in your favorite terminal emulator:
44
<pre>./waf configure --sedris-srm-root=<put the path to the SEDRIS SRM root here></pre>
45
For example, if your SEDRIS SRM is in /opt/sedris/srm:
46
<pre>./waf configure --sedris-srm-root=/opt/sedris/srm</pre>
47
48
That command will take several seconds and print a bunch of hopefully green stuff.  The output should end up looking something like this:
49
<pre>
50
Setting top to                           : /opt/disorder 
51
Setting out to                           : /opt/disorder/bin 
52
Checking for 'g++' (c++ compiler)        : /usr/bin/g++ 
53
Checking for program doxygen             : /usr/bin/doxygen 
54
Checking for program tar                 : /bin/tar 
55
Checking boost ABI tag                   :  
56
Checking boost includes                  : 1_49 
57
Checking boost libs                      : ok 
58
Checking for boost linkage               : ok 
59
Checking for header boost/asio.hpp       : yes 
60
Checking for header boost/bind.hpp       : yes 
61
Checking for header boost/date_time.hpp  : yes 
62
Checking for header boost/detail/endian.hpp : yes 
63
Checking for header boost/format.hpp        : yes 
64
Checking for header boost/function.hpp      : yes 
65
Checking for header boost/functional/factory.hpp : yes 
66
Checking for header boost/ptr_container/ptr_vector.hpp : yes 
67
Checking for header boost/scoped_ptr.hpp               : yes 
68
Checking for header boost/static_assert.hpp            : yes 
69
Checking for header boost/thread.hpp                   : yes 
70
Checking for program pkg-config                        : /usr/bin/pkg-config 
71
Checking for 'eigen3'                                  : yes 
72
Checking for header Eigen/Dense                        : yes 
73
Checking for SEDRIS SRM                                : /opt/sedris/srm 
74
Checking for SEDRIS SRM include directory              : /opt/sedris/srm/src/include 
75
Checking for SEDRIS SRM library directory              : /opt/sedris/srm/lib/linux-3.1.0-1-amd64-i386-gnu-/OPT 
76
SEDRIS SRM library                                     : /opt/sedris/srm/lib/linux-3.1.0-1-amd64-i386-gnu-/OPT/libsrm.so 
77
Checking for header srf_all.h                          : yes 
78
'configure' finished successfully (25.518s)
79
</pre>
80
81 18 Tony Ciavarella
If you get an error instead of that last line saying that 'configure' finished successfully, you must fix whatever is making it unhappy and try again.
82 13 Tony Ciavarella
83 19 Tony Ciavarella
h4. Clang++
84 16 Tony Ciavarella
85 19 Tony Ciavarella
To use the Clang C++ compiler instead of GCC, assuming clang++ is installed on the build system:
86 16 Tony Ciavarella
<pre>CXX=<put the path to clang++ here> ./waf configure --sedris-srm-root=<put the path to the SEDRIS SRM root here></pre>
87
88 19 Tony Ciavarella
For example:
89 16 Tony Ciavarella
<pre>CXX=/usr/bin/clang++ ./waf configure --sedris-srm-root=/opt/sedris/srm</pre>
90
91 13 Tony Ciavarella
h3. Windows
92
93
On windows, your $PATH environment variable needs to include the path to the Python interpreter.
94
95
Next, you'll want to modify the provided batch file to tell Disorder where your prerequisites live.  From inside the root of the disorder tree:
96
<pre>copy tools/configure.bat configure.bat</pre>
97
98
This file contains some stuff at the top you'll want to edit to match your system configuration.
99 10 Tony Ciavarella
100 1 Tony Ciavarella
h2. Compiling
101
102 20 Tony Ciavarella
The basic strategy for building Disorder is to invoke the waf build system with the desired build variant.
103 1 Tony Ciavarella
104 20 Tony Ciavarella
Disorder has two build variants:
105
* build_debug: produces a library that contains debugging symbols and disables most compiler optimizations
106
* build_release: produces a library stripped of debugging symbols and enables compiler optimizations for performance
107 1 Tony Ciavarella
108 21 Tony Ciavarella
It might be reasonable to use the @build_debug@ variant in a development environment and the @build_release@ variant in a production environment.
109
110 20 Tony Ciavarella
h3. Linux
111
112
On Linux, to build the Disorder @build_debug@ variant:
113
<pre>./waf build_debug</pre>
114
115
h3. Windows
116
117
On windows, the waf script is invoked indirectly.  So to build the @build_release@ variant:
118
<pre>python.exe waf build_release</pre>
119 12 Tony Ciavarella
120 1 Tony Ciavarella
h2. Building Against the Disorder Library