| [9636] | 1 | Please see the latest Installation instructions on http://ariba-underlay.org/
 | 
|---|
 | 2 | here: http://ariba-underlay.org/trac/spovnet-base/wiki/BaseInstall
 | 
|---|
 | 3 | 
 | 
|---|
 | 4 | Please see also http://spovnet.de/ for further information
 | 
|---|
 | 5 | about Ariba and its application.
 | 
|---|
 | 6 | 
 | 
|---|
 | 7 | Prerequisites
 | 
|---|
 | 8 | =============
 | 
|---|
 | 9 | ariba depends on libraries that may not be installed on your system:
 | 
|---|
 | 10 | 
 | 
|---|
 | 11 |     * Boost (version >=1.39)
 | 
|---|
 | 12 |     * Log4cxx (version >= 0.10.0)
 | 
|---|
 | 13 |     * GMP (no specific version) 
 | 
|---|
 | 14 | 
 | 
|---|
 | 15 | Furthermore, you need default development tools - that are most likely already installed on your system - such as 
 | 
|---|
 | 16 | gcc/g++, autoconf, automake, aclocal, libtool, liblt-dev ...
 | 
|---|
 | 17 | 
 | 
|---|
 | 18 | Quick Install (If all dependencies are satisfied)
 | 
|---|
 | 19 | =============
 | 
|---|
 | 20 | 
 | 
|---|
 | 21 | ariba currently build on Linux systems. Our reference platform is
 | 
|---|
 | 22 | Ubuntu 8.04 with the g++ compiler version 4.1. Download the latest
 | 
|---|
 | 23 | ariba package from the the download site 
 | 
|---|
 | 24 | http://ariba-underlay.org/downloads
 | 
|---|
 | 25 | 
 | 
|---|
 | 26 | Extract the archive and change into the project directory:
 | 
|---|
 | 27 | 
 | 
|---|
 | 28 | > tar xfz ./ariba-x.x.x.tar.gz
 | 
|---|
 | 29 | > cd ariba-x.x.x
 | 
|---|
 | 30 | 
 | 
|---|
 | 31 | Now, configure, compile, and install ariba (if not all libraries
 | 
|---|
 | 32 | needed by Ariba are available on your system, read the section
 | 
|---|
 | 33 | 'Prequisites'). 
 | 
|---|
 | 34 | 
 | 
|---|
 | 35 | If no configure script is available (e.g. when you checked out an svn
 | 
|---|
 | 36 | version), run the ./bootstrap script first.:
 | 
|---|
 | 37 | 
 | 
|---|
 | 38 | > ./configure
 | 
|---|
 | 39 | > make
 | 
|---|
 | 40 | > make install
 | 
|---|
 | 41 | 
 | 
|---|
 | 42 | In case you don't want to install Ariba into your system but to a
 | 
|---|
 | 43 | local place, do:
 | 
|---|
 | 44 | 
 | 
|---|
 | 45 | > mkdir build
 | 
|---|
 | 46 | > ./configure --prefix=$PWD/build
 | 
|---|
 | 47 | > make
 | 
|---|
 | 48 | > make install
 | 
|---|
 | 49 | 
 | 
|---|
 | 50 | 
 | 
|---|
 | 51 | Local install (Download library dependencies and install ariba in a
 | 
|---|
 | 52 | =============  local subdirectory)
 | 
|---|
 | 53 | 
 | 
|---|
 | 54 | 
 | 
|---|
 | 55 | If the required libraries are not available on your system or don't
 | 
|---|
 | 56 | want to install them to the system you can use the bootstrap_libs
 | 
|---|
 | 57 | script that comes with the ariba package. It will download all
 | 
|---|
 | 58 | dependencies, compile and install them locally, and compile and
 | 
|---|
 | 59 | install ariba:
 | 
|---|
 | 60 | 
 | 
|---|
 | 61 | > tar xfz ./ariba-x.x.x.tar.gz
 | 
|---|
 | 62 | > cd ariba-x.x.x
 | 
|---|
 | 63 | > ./bootstrap_libs
 | 
|---|
 | 64 | 
 | 
|---|
 | 65 | This script will automatically download all necessary libraries and
 | 
|---|
 | 66 | compile them inside a new ./libs subdirectory and install them into
 | 
|---|
 | 67 | ./build. In the end the ariba library itself is compiled to
 | 
|---|
 | 68 | ./build. You can safely delete the ./libs subdirectory after the
 | 
|---|
 | 69 | process.
 | 
|---|
 | 70 | 
 | 
|---|
 | 71 | Here is the manual way to go: If you install Ariba locally and have
 | 
|---|
 | 72 | the required libraries also installed locally, you can use a
 | 
|---|
 | 73 | config.site script to make it easier. The config.site file must reside
 | 
|---|
 | 74 | in a folder called share. If your install path is /home/foo/local and
 | 
|---|
 | 75 | you do a ./configure --prefix=/home/foo/local, ariba headers will be
 | 
|---|
 | 76 | installed in /home/foo/local/include, and the ariba library in
 | 
|---|
 | 77 | /home/foo/local/lib. To use a config.site script, create a folder
 | 
|---|
 | 78 | /home/foo/local/share and create a file config.site. Such a file has
 | 
|---|
 | 79 | paths towards required header files and libraries.
 | 
|---|
 | 80 | 
 | 
|---|
 | 81 | with_boost=/home/foo/Libraries/include
 | 
|---|
 | 82 | test -z "$CPPFLAGS" && CPPFLAGS='-I/home/foo/Libraries/include'
 | 
|---|
 | 83 | test -z "$LDFLAGS" && LDFLAGS='-L/home/foo/Libraries/lib'
 | 
|---|
 | 84 | 
 | 
|---|
 | 85 | If you now do a ./configure --prefix=/home/foo/local, the config.site
 | 
|---|
 | 86 | will be found and the paths therein used for finding libraries. If you
 | 
|---|
 | 87 | e.g. have multiple libraries distributed in their own include folders,
 | 
|---|
 | 88 | you can also have multiple includes:
 | 
|---|
 | 89 | 
 | 
|---|
 | 90 | test -z "$CPPFLAGS" && CPPFLAGS='-I/home/foo/Libraries/include -I/home/foo/otherlibrary/include'
 | 
|---|
 | 91 | 
 | 
|---|
 | 92 | Running the PingPong Sample
 | 
|---|
 | 93 | ===========================
 | 
|---|
 | 94 | The PingPong binary pingpong is installed in build/bin. It has one
 | 
|---|
 | 95 | parameter, a configuration file. You can find sample configuration
 | 
|---|
 | 96 | files in the etc/pingpongconfig folder. If no configuration file is
 | 
|---|
 | 97 | given, the node will randomly select its NodeID but will not find
 | 
|---|
 | 98 | other nodes. This is because bootstrap modules are selected in the
 | 
|---|
 | 99 | configuration file.
 | 
|---|
 | 100 | 
 | 
|---|
 | 101 | > ./pingpong ../../etc/pingpong/settings_node1.cnf
 | 
|---|
 | 102 | 
 | 
|---|
 | 103 | If this will fail to find the libariba you may have to set the LD_LIBRARY_PATH correctly in your current terminal, or better add it to your .bashrc
 | 
|---|
 | 104 | 
 | 
|---|
 | 105 | > export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user/ariba/build/lib
 | 
|---|
 | 106 | 
 | 
|---|
 | 107 | When running the pingpong application it will output a large number of
 | 
|---|
 | 108 | log messages and the initiator will wait for other nodes to join. You
 | 
|---|
 | 109 | can start them using the configuration files settings_node1.cnf and
 | 
|---|
 | 110 | settings_node2.cnf. You may need to adjust the configurations files:
 | 
|---|
 | 111 | currently both node1 and node2 try to join the initiator on the local
 | 
|---|
 | 112 | machine. This will only work if you start all instances on a local
 | 
|---|
 | 113 | machine.
 | 
|---|
 | 114 | 
 | 
|---|
 | 115 | Once the PingPong sample is running and the nodes have connected, each
 | 
|---|
 | 116 | node will send out ping messages to every node he knows in the overlay
 | 
|---|
 | 117 | structure every 5 seconds. You can now e.g. test mobility of Ariba and
 | 
|---|
 | 118 | change the IP address of a node, or swith from LAN connection to
 | 
|---|
 | 119 | WLAN. The links established by the PingPong sample through Ariba are
 | 
|---|
 | 120 | mobility invariant and automatically repaired.  Selecting a compiler
 | 
|---|
 | 121 | 
 | 
|---|
 | 122 | As the g++-4.3 compiler is very restrictive when compiling C++ and you
 | 
|---|
 | 123 | will have some trouble with Boost and Log4cxx, we suggest to use
 | 
|---|
 | 124 | e.g. g++-4.1. You then have to compile the libraries and Ariba with
 | 
|---|
 | 125 | this compiler. You can tell Log4cxx and Ariba to use a different
 | 
|---|
 | 126 | compiler using:
 | 
|---|
 | 127 | 
 | 
|---|
 | 128 | ./configure --prefix=... CXX=g++-4.1
 | 
|---|
 | 129 | 
 | 
|---|
 | 130 | This will not work in Boost as the configure script is just a wrapper around the Boost Build.System bjam. You can edit the jamfile in the Boost root directory:
 | 
|---|
 | 131 | 
 | 
|---|
 | 132 | using gcc : 4.1 ;
 | 
|---|
 | 133 | 
 | 
|---|
 | 134 | and then build using bjam as described in http://www.boost.org/doc/libs/1_38_0/more/getting_started/unix-variants.html.
 | 
|---|
 | 135 | 
 | 
|---|
 | 136 | Cross-Comiling for Maemo
 | 
|---|
 | 137 | ========================
 | 
|---|
 | 138 | Ariba runs on Nokia Maemo 4 (tested) and probably Maemo 5. We have
 | 
|---|
 | 139 | tested Ariba on an N810 device. Cross-Compiling is done using
 | 
|---|
 | 140 | Scratchbox. Use the preassembled Scratchbox version provided by Nokia
 | 
|---|
 | 141 | which will install and configure the complete Scratchbox system
 | 
|---|
 | 142 | automatically.
 | 
|---|
 | 143 | 
 | 
|---|
 | 144 | The Ariba configure will test for Maemo systems. Internally there are
 | 
|---|
 | 145 | a number of special cases where handling on Maemo is different from
 | 
|---|
 | 146 | normal Linux. If you require special handling, do the following in
 | 
|---|
 | 147 | your code:
 | 
|---|
 | 148 | 
 | 
|---|
 | 149 | #include "ariba/config.h"
 | 
|---|
 | 150 | ...
 | 
|---|
 | 151 | #ifdef HAVE_MAEMO
 | 
|---|
 | 152 |  // special Maemo handling
 | 
|---|
 | 153 | #endif
 | 
|---|
 | 154 | 
 | 
|---|
 | 155 | Overview of special configure options
 | 
|---|
 | 156 | =====================================
 | 
|---|
 | 157 | There are several options to configure that are specific to Ariba:
 | 
|---|
 | 158 | 
 | 
|---|
 | 159 |     * --enable-debug=yes - for building a debug build
 | 
|---|
 | 160 |     * --enable-profiling=yes - for profiling with gprof
 | 
|---|
 | 161 |     * --enable-logcolors=yes - for colorful logging output
 | 
|---|
 | 162 |     * --enable-doxygen=yes - for generating doxygen documentation (do a make html-local in ariba/docu/doxygen) 
 | 
|---|