== GUSH Evaluation == GENI 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. Software 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. Time frame: Evaluation took place between March 15, 28, 2010. == Gush Findings == == GUSH How-to == Using 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: {{{ $ sudo apt-get install subversion $ svn co http://gush.cs.williams.edu/svn/gush/trunk --username guest }}} No changes have been made to the README.txt since the last [wiki:GIR2.1_GushProto GUSH Evaluation]: {{{ Gush is written in a mix of C++ and Perl, and we intend for it to be runnable on any UNIX-ish OS. That said, we have been using it primarily with Linux 2.6. Compiling Gush can be challenging, so please contact us if you experience too many problems. Gush requires the following libraries: * xmlrpc-c: libxmlrpc_client++, libxmlrpc_client, libxmlrpc_server_abyss++, libxmlrpc_server++, libxmlrpc_server_abyss, libxmlrpc_server, libxmlrpc_abyss, libxmlrpc++, libxmlrpc, libxmlrpc_util, libxmlrpc_xmlparse, libxmlrpc_xmltok Note: lbxmlrpc-c3 will not work. xmlrpc-c must be installed, and to my knowledge, there is no debian package available. * curl: libcurl * xml2: libxml2 * zlib compression/decompression: libz * math: libm * openssl (version 0.9.8e): libssl, libcrypto * dynamic linking: libdl * readline: libreadline * curses: libcurses * intl domain names: libidn * pthreads: libpthread (NOTE: NPTL recommended) The ares library (libares) for asynchronous DNS lookups is optional, though recommended for performance on PlanetLab. The boost software package is also required, as well as lex and yacc (we use flex and bison). Gush uses some Perl helper scripts. If you want Gush to automatically interface with the PlanetLab Central (PLC) database for you, you will need to have Frontier::Client and Crypt::SSLeay properly installed. We'll get to that in the next step. Getting and building the code After downloading the code from SVN, follow the instructions below from a Linux host. NOTE: This statically compiles gush and client. Remove the --with-static compile flags to compile dynamically (which may be easier to configure). Compiling Gush $ cd gush $ autoconf $ ./configure --with-static-client --with-static-gush $ make dep $ make Setting up Gush $ perl helper-scripts/setup.pl That should be it! Let us know if you have problems. This is still a work in progress! }}} Following is a capture of all software installed to meet GUSH pre-requisites: {{{ $ sudo apt-get install gcc $ sudo apt-get install g++ $ wget https://launchpad.net/ubuntu/+archive/primary/+files/xmlrpc-c_1.06.27.orig.tar.gz $ tar xvzf xmlrpc-c_1.06.27.orig.tar.gz $ cd xmlrpc-c-1.06.27/ $ ./configure $ make $ sudo make install ; cd .. $ sudo apt-get install curl $ sudo apt-get install xml2 $ wget http://www.zlib.net/zlib-1.2.5.tar.gz $ tar -xvzf zlib-1.2.5.tar.gz $ cd zlib-1.2.5/ $ ./configure --prefix=/usr/local/zlib $ make $ sudo make install ; cd .. Notes: The libm and pthreads libraries and OpenSSL were already on systems. $ sudo apt-get install libreadline6 $ sudo apt-get install libncurses5 $ sudo apt-get install libidn11 }}} Found that Perl library Crypt::SSLeay required the libssl-dev package: {{{ $ sudo apt-get install libssl-dev $ sudo cpan cpan[1]> install Frontier::Client cpan[2]> install Crypt::SSLeay cpan[3]> quit }}} Now onto the GUSH code: {{{ $ svn co http://gush.cs.williams.edu/svn/gush/trunk --username guest $ cd trunk $ sudo apt-get install autoconf $ ./configure --with-static-client --with-static-gush }}} Configure and make had "numerous failures" which were addressed by installing the following additional packages: {{{ $ sudo apt-get install pkg-config libxml2-dev $ sudo apt-get install libboost-dev makedepend $ sudo apt-get install bison flex $ sudo apt-get install libreadline6 libreadline6-dev libexpat1-dev $ sudo apt-get install libcurl4-openssl-dev }}} Note that various changes had to be made for the "make" to work. Added the following to main.cc file: {{{ #include #include #include #include #include }}} Also the gcc-4.4 and g++-4.4 had to both be downgraded to avoid the following build issue: {{{ g++ -g -Wall -Wno-unused -I. -I/usr/include/libxml2 -I/usr/local/include -c version.cc -o version.o version.cc: In constructor 'FileVersion::FileVersion(const char*)': version.cc:56: error: invalid conversion from 'const char*' to 'char*' version.cc:63: error: invalid conversion from 'const char*' to 'char*' version.cc:69: error: invalid conversion from 'const char*' to 'char*' version.cc:75: error: invalid conversion from 'const char*' to 'char*' version.cc:81: error: invalid conversion from 'const char*' to 'char*' make: *** [version.o] Error 1 }}} With the additional packages, environment settings and downgraded versions was able to complete: {{{ $ ./configure --with-static-client --with-static-gush $ make dep $ make }}} Also found the following are required for LD_LIBRARY_PATH: ''/usr/local/lib:/usr/lib:/usr/local/include/''