Changes between Initial Version and Version 1 of GIR3.1_GushProto


Ignore:
Timestamp:
04/06/11 15:47:47 (13 years ago)
Author:
lnevers@bbn.com
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GIR3.1_GushProto

    v1 v1  
     1== GUSH Evaluation ==
     2
     3GENI User Shell ([http://gush.cs.williams.edu/trac/gush GUSH]) provides an execution management system that allows users to describe an experiment in an XML file, and Gush uses the xml file to locate, and prepare resources through interactions with GENI Clearinghouses. Gush will run and clean-up the experiment.
     4
     5Software can be checked out from the [http://gush.cs.williams.edu/svn/gush/trunk GUSH SVN Repository] using username '''guest''' and password is provided out of band. Software revisions used is 120.
     6
     7Time frame: Evaluation took place between March 15, 28, 2010.
     8
     9== Gush Findings ==
     10
     11
     12== GUSH How-to ==
     13
     14Using a newly build Ubuntu 10.04.2 VM for this evaluation in order to verify ''all'' prerequisites.  First, gush does not provide a release package, the entire repository must be checked out, do installed SVN package (Subversion version 1.6.6).  Checked out the GUSH repo:
     15{{{
     16$ sudo apt-get install subversion
     17$ svn co http://gush.cs.williams.edu/svn/gush/trunk --username guest
     18}}}
     19No changes have been made to the README.txt since the last [wiki:GIR2.1_GushProto GUSH Evaluation]:
     20{{{
     21Gush is written in a mix of C++ and Perl, and we intend for it to be runnable
     22on any UNIX-ish OS. That said, we have been using it primarily with Linux 2.6.
     23
     24Compiling Gush can be challenging, so please contact us if you experience
     25too many problems.  Gush requires the following libraries:
     26
     27    * xmlrpc-c: libxmlrpc_client++, libxmlrpc_client,
     28      libxmlrpc_server_abyss++, libxmlrpc_server++,
     29      libxmlrpc_server_abyss, libxmlrpc_server,
     30      libxmlrpc_abyss, libxmlrpc++, libxmlrpc,
     31      libxmlrpc_util, libxmlrpc_xmlparse, libxmlrpc_xmltok
     32     
     33      Note: lbxmlrpc-c3 will not work. xmlrpc-c must be
     34      installed, and to my knowledge, there is no debian package available.
     35
     36    * curl: libcurl
     37    * xml2: libxml2
     38    * zlib compression/decompression: libz
     39    * math: libm
     40    * openssl (version 0.9.8e): libssl, libcrypto
     41    * dynamic linking: libdl
     42    * readline: libreadline
     43    * curses: libcurses
     44    * intl domain names: libidn
     45    * pthreads: libpthread (NOTE: NPTL recommended)
     46
     47    The ares library (libares) for asynchronous DNS lookups is optional,
     48    though recommended for performance on PlanetLab. The boost
     49    software package is also required, as well as lex and yacc
     50    (we use flex and bison).
     51
     52    Gush uses some Perl helper scripts. If you want Gush to automatically
     53    interface with the PlanetLab Central (PLC) database for you, you will
     54    need to have Frontier::Client and Crypt::SSLeay properly installed.
     55    We'll get to that in the next step.
     56
     57Getting and building the code
     58
     59    After downloading the code from SVN, follow the instructions below
     60    from a Linux host. NOTE: This statically compiles gush and client. Remove
     61    the --with-static compile flags to compile dynamically (which may be
     62    easier to configure).
     63
     64    Compiling Gush
     65      $ cd gush
     66      $ autoconf
     67      $ ./configure --with-static-client --with-static-gush
     68      $ make dep
     69      $ make
     70
     71    Setting up Gush
     72      $ perl helper-scripts/setup.pl
     73
     74That should be it!  Let us know if you have problems.  This is still a work
     75in progress!
     76}}}
     77
     78Following is a capture of all software installed to meet GUSH pre-requisites:
     79
     80{{{
     81$ sudo apt-get install gcc
     82$ sudo apt-get install g++
     83$ wget https://launchpad.net/ubuntu/+archive/primary/+files/xmlrpc-c_1.06.27.orig.tar.gz
     84$ tar xvzf xmlrpc-c_1.06.27.orig.tar.gz
     85$ cd xmlrpc-c-1.06.27/
     86$ ./configure
     87$ make
     88$ sudo make install ; cd ..
     89$ sudo apt-get install curl
     90$ sudo apt-get install xml2
     91$ wget http://www.zlib.net/zlib-1.2.5.tar.gz
     92$ tar -xvzf zlib-1.2.5.tar.gz
     93$ cd zlib-1.2.5/
     94$ ./configure --prefix=/usr/local/zlib
     95$ make
     96$ sudo make install ; cd ..
     97
     98Notes: The libm and pthreads libraries and OpenSSL were already on systems.
     99     
     100$ sudo apt-get install libreadline6
     101$ sudo apt-get install libncurses5
     102$ sudo apt-get install libidn11
     103}}}
     104
     105Found that Perl library Crypt::SSLeay required the libssl-dev package:
     106{{{
     107$ sudo apt-get install libssl-dev
     108$ sudo cpan
     109cpan[1]> install Frontier::Client           
     110cpan[2]> install Crypt::SSLeay
     111cpan[3]> quit
     112}}}
     113
     114Now onto the GUSH code:
     115{{{
     116
     117$ svn co http://gush.cs.williams.edu/svn/gush/trunk --username guest
     118$ cd trunk
     119$ sudo apt-get install autoconf
     120$ ./configure --with-static-client --with-static-gush
     121}}}
     122
     123Configure and make had "numerous failures" which were addressed by installing the following additional packages:
     124{{{
     125$ sudo apt-get install pkg-config libxml2-dev
     126$ sudo apt-get install libboost-dev makedepend 
     127$ sudo apt-get install bison flex
     128$ sudo apt-get install libreadline6 libreadline6-dev libexpat1-dev
     129$ sudo apt-get install libcurl4-openssl-dev
     130
     131}}}
     132Note that various changes had to be made for the "make" to work.  Added the following
     133to main.cc file:
     134{{{
     135 #include <limits.h>
     136 #include <strings.h>
     137 #include <stdlib.h>
     138 #include <string.h>
     139 #include <cstring>
     140}}}
     141
     142Also the gcc-4.4 and g++-4.4 had to both be downgraded to avoid the following build issue:
     143
     144{{{
     145g++ -g -Wall -Wno-unused -I. -I/usr/include/libxml2 -I/usr/local/include     -c version.cc -o version.o
     146version.cc: In constructor 'FileVersion::FileVersion(const char*)':
     147version.cc:56: error: invalid conversion from 'const char*' to 'char*'
     148version.cc:63: error: invalid conversion from 'const char*' to 'char*'
     149version.cc:69: error: invalid conversion from 'const char*' to 'char*'
     150version.cc:75: error: invalid conversion from 'const char*' to 'char*'
     151version.cc:81: error: invalid conversion from 'const char*' to 'char*'
     152make: *** [version.o] Error 1
     153}}}
     154
     155With the additional packages, environment settings and downgraded versions was able to complete:
     156{{{
     157$ ./configure  --with-static-client --with-static-gush
     158$ make dep
     159$ make
     160}}}
     161
     162
     163Also found the following are required for LD_LIBRARY_PATH: ''/usr/local/lib:/usr/lib:/usr/local/include/''
     164
     165