################**##############
# NetSolve v2.0 INSTALLATION   #
#################**#############

NetSolve-2.0 is a major release which fixes several
known bugs in version 1.4.1, as well as incorporating many
new features.  For more details, see the release notes
and the README file in the NetSolve directory.

Upgrading an Existing Installation
==================================

    If you have already installed your own problems into an older
  version of NetSolve, it is simple to incorporate those problems
  into a new 2.0 installation.  If you never created any of
  your own problem description files, but you changed some information
  in the server_config, then you can skip step 3.

  1.  Unzip the new distribution:
      # gunzip NetSolve-2.0.tgz
      # tar xvf NetSolve-2.0.tar

  2.  Copy your server_config to the new distribution:
      # cp NetSolve-1.4.1/server_config NetSolve-2.0

  3.  Copy any problem description files you had created
      previously to the new distribution.  For example, carry out
      the following step for each problem you created (where "MyProblem"
      should be replaced with the specific filename):
      # cp NetSolve-1.4.1/problems/MyProblem NetSolve-2.0/problems

    The rest of the build instructions for compiling NetSolve
  are the similar to previous versions.  With the exception of
  a new install script that has been created to assist with the 
  installation.  Those instructions follow for your reference.  

Introduction
============

  NetSolve 2.0's configuration and installation environment has changed
  from previous versions prior to 1.4.1. Previously, a custom set of make
  include files were used to achieve easy installation. NetSolve 2.0 now
  uses autoconf to create an environment that looks like many other Open
  Source projects.  There is also a new script, ns_install, to help make
  the installation even easier.  It is recommended that you use this script 
  to assist with the configuration and install of NetSolve.  It will step 
  you through the configuration, prompting for the necessary information 
  to complete the install and then run configure.  You can bypass this 
  script and run configure yourself if you are comfortable doing so.
  
  
INSTALLING THE NETSOLVE SOFTWARE USING ns_install
=================================================

0.  Run ns_install from the new NetSolve-2.0 directory where 
    the NetSolve package was uncompressed. 
    --------------------------------------
    
    UNIX> ./ns_install
    
1.  The script will first prompt for the components to be installed.  

    1. Standard (Client, Server, Agent, Testers, Tools)
    2. Client
    3. Server
    4. Agent
    5. Tools
    6. Testers
    7. GridRPC API
    8. Matlab interface
    9. Octave interface
 
    Enter 1 for the most common set of components.
    
2.  If your selection above included the Server component you
    will be asked whether you want to enable GPG for signing
    software when using the Hardware/Software server feature.
    It is recommended that you enter y here if you wish to use
    the Hardware/Software server.
    
3.  GPG options.  If you selected to use GPG then you
    will be prompted to use version 1.2.2.  If this 
    version is present in your PATH you can choose to
    use it.  Otherwise you may select to download GPG 
    yourself ( see http://www.gnupg.org/ ), or let the
    script handle this download for you, or use a tarball
    already present.  You may also skip GPG at this time.
    
4.  Finally you will be prompted for any additional arguements
    to be passed to configure.  Options are listed below under
    2.1 Command line arguements.  For example, if you wanted to 
    limit the number of ports used by NetSolve to 9001 thru 9204,
    simply enter;
    
    --enable-port-restriction
    
    
5.  The script will now configure and build the components
    selected.  If successful you should see;
    
    NetSolve installation complete.
    
6.  Starting the Agent

    bin/$NETSOLVE_ARCH/NS_agent

7.  Starting the Server

    bin/$NETSOLVE_ARCH/NS_server
    
8.  Testing 

    bin/$NETSOLVE_ARCH/Test
   
    
    
  

INSTALLING THE NETSOLVE SOFTWARE USING CONFIGURE
================================================

0. Overview for the impatient
   -------------------------- 

   UNIX> ./configure
   UNIX> make standard

1. Configuration (generic)
   -----------------------

   NetSolve now uses an autoconf generated "configure" script to
   help automate the installation process. To run this script,
   simply change to the top level NetSolve directory and run:
  
     UNIX> ./configure

   You should see a number of messages print out as configure
   tries to decipher the environment.
 
   NOTE: If you have previously configured on another platform,
         you MUST run:
 
     UNIX> make configclean



2. Customizing the configuration
   -----------------------------

   There are 2 main ways to customize the NetSolve configuration. The
   first is to pass command line arguments to the configure script described
   above. The second is to manually edit the files that would be created
   by the configure script.

2.1 Command line arguments to configure
    -----------------------------------
     If you type:
 
       UNIX> ./configure --help

     you should see a message discussing the usage of the configure script.
     At the bottom of the printout, you should see the options pertinent
     specifically to NetSolve. They are:

  ===Begin NetSolve Compile Options:
  --with-cc                      determine which C compiler to use
  --with-cnooptflags             set compiler flags that don't deal with optimization
                                  - (ONLY USE IN COMBINATION WITH --with-cc)
                                  - CFLAGS will be set to C_OPT_FLAGS+C_NOOPT_FLAGS
  --with-coptflags               set compiler optimization flags
                                  - (ONLY USE IN COMBINATION WITH --with-cc)
                                  - CFLAGS will be set to C_OPT_FLAGS+C_NOOPT_FLAGS
  --with-fc                      determine which Fortran compiler to use
  --with-fnooptflags             set compiler flags that don't deal with optimization
                                  - (ONLY USE IN COMBINATION WITH --with-fc)
                                  - FFLAGS will be set to F_OPT_FLAGS+F_NOOPT_FLAGS
  --with-foptflags               set compiler optimization flags
                                  - (ONLY USE IN COMBINATION WITH --with-fc)
                                  - FFLAGS will be set to F_OPT_FLAGS+F_NOOPT_FLAGS
  --with-ldflags                 set loader flags
  

  ===Begin NetSolve Run Time Options:
  --with-nws=NWSDIR              location of NWS installation dir
  --with-ibp=IBPDIR              location of IBP installation dir
  --with-kerberos[=KRBDIR]       use Kerberos5 client authentication
  --with-proxy                   which Proxy? (netsolve, globus)
  --with-outputlevel             output level (debug,view,none)
  --enable-infoserver[=alone]    use InfoServer [alone] 
  --enable-port-restriction      server uses only ports 9001 thru 9204

  ===Begin NetSolve Service Options:
  --with-petsc=PETSCDIR               location of PETSc installation dir
  --with-petsclibdir=PETSC_LIB_DIR    location of PETSc library
  --with-aztec=AZTEC_DIR              location of Aztec installation dir
  --with-azteclib=AZTEC_LIB           Aztec link line
  --with-superlu=SUPERLU_DIR          location of SuperLU installation dir
  --with-superlulib=SUPERLU_LIB       SuperLU link line
  --with-ma28          if ma28 is to be included in the NetSolve services
  --with-itpack          if itpack is to be included in the NetSolve services
  --with-arpacklib=ARPACK_LIB         Arpack link line
  --with-mpi=MPI_DIR                  location of MPI Root Directory
  --with-lapacklib=LAPACK_LIB         LAPACK link line
  --with-scalapacklib=SCALAPACK_LIB   SCALAPACK link line
  --with-blaslib=BLAS_LIB             BLAS link line
  --with-blacslib=BLACS_LIB           BLACS link line
  --with-mldk=MLDK_PATH               Path to MathLink Development Kit
  --with-rpclib=RPC_LIB               Full path of RPC library
  --with-octave-include=OCTAVE_INC_DIR      location of Octave include directory
  --with-rpcinc=RPC_INC               Directory containing RPC header files
  --with-gpg=GPGPATH                  Full path of gpg binary
  --with-buildgpg=BUILDGPG            Location of gpg tar.gz file


   2.2 Manually editing configuration files
   ----------------------------------------

    The main file created by the ./configure command is
    ./conf/Makefile.$NETSOLVE_ARCH.in, where $NETSOLVE_ARCH is typically
    the string printed out by the command ./conf/config.guess, with all '-'
    and '.' characters converted to '_' characters.
    A user may edit this file to his/her liking, however, *ALL* pertinent
    options can be set by using the above mentioned command line arguments 
    to configure.



3. Compilation
   -----------

     UNIX> ./configure    # see above section
     UNIX> make           # prints out all available options

          Edit ./server_config if you wish to specify an agent
          other than netsolve.cs.utk.edu, or if you are planning
          to compile the agent and server and need to enable
          optional services (LAPACK, Sparse Solvers, etc...)

     UNIX> make standard  # makes agent, server, client, tools, tests
  
   All binary executables can be found in ./bin/$NETSOLVE_ARCH
   Client Libraries will be located in    ./lib/$NETSOLVE_ARCH

   NOTE: If for some reason you wish to force a rebuild, use
     UNIX> make ... FRC=force_rebuild



4. Testing
   -------

     UNIX> setenv NETSOLVE_AGENT `hostname`      #Assumes shell from csh family
     UNIX> $NETSOLVE_ROOT/bin/$NETSOLVE_ARCH/agent
     UNIX> $NETSOLVE_ROOT/bin/$NETSOLVE_ARCH/server
     UNIX> cd $NETSOLVE_ROOT/bin/$NETSOLVE_ARCH
     UNIX> Test


5.  Notes
    -----
    
    Compiler flag / Matlab mismatch on IRIX: If you wish to compile
    the Matlab interface to NetSolve, you must select a compiler flag setting 
    for NetSolve that matches that used by Matlab.  If you have the IRIX64 version
    of Matlab, you will need to over NetSolve's flags to select the -64 during the 
    configure step.
