Table of Contents

Install RPSL
To use RPSL you must have a unix-like operating system (linux, solaris, etc.)
that has reasonably recent versions of the standard GNU development tools.  

bash
autoconf
automake
libtool
pkg-config
make  (gnu make)
c/c++ compiler such as gcc

These are widely available if you don't have them and they are easy to 
compile and install.  They can even be installed into the RPSL_HOME location 
(see later) if you don't have root access by running their configure scripts 
with the --prefix=${RPSL_HOME}/usr/local argument.


STEP 1.
-------
Download RPSL if you haven't already and choose an install location and untar 
the RPSL distribution there:
 
% cd <install_location>
% tar xvfz rpsl[DDMmmYY].tar.gz

This will create a directory called rpsl.  Point your browser to the file
rpsl/usr/local/doc/rpsldocs/index.html which is the local copy of these pages.

STEP 2.
-------
Set three environment variables that define the three-level sandbox heirarchy 
supported by RPSL. You could put these statements in a startup rc file. For
.cshrc the definitions could be as follows:
 
setenv RPSL_HOME <install_location>
setenv RPSL_PROJ '/proj/rpsl_proj'
setenv RPSL_USER '/home/username/rpsl_user'

RPSL_HOME holds the RPSL files and can also hold global libraries that are 
available to all users and projects.  RPSL_PROJ holds libraries associated 
with a particular project that are visible to one or more users. RPSL_USER 
is the individual developer sandbox that is not visible to other developers 
or projects.

RPSL_HOME must be set because that's where the scripts and utility files are.
RPSL_PROJ is optional - RPSL will work without a project level. Finally,
RPSL_USER must be set simply because there needs to be a place to develop
and build.

At any one time, for a particular user, these variables each point to one place,
but generally there would be more than one project and more than one user 
sandbox for each user. Therefore, for switching among these, point the 
environment variables for the project and user sandboxes to symbolic links 
and then set up the links to point to actual sandbox directories. For example:
 
% ln -s /proj/FooProject /proj/rpsl_proj
% ln -s /home/username/FooProjectDevel /home/username/rpsl_user

STEP 3.
-------
Add the target locations to your LD_LIBRARY_PATH variable for shared object
files.  The order is critical here - local level first, global last, because
a local install of a library should be the one that's linked and tested during
development and modifications.
 
setenv LD_LIBRARY_PATH $RPSL_USER'/usr/local/lib:\
'$RPSL_PROJ'/usr/local/lib:'$RPSL_HOME'/usr/local/lib:...'

STEP 4.
-------
Set the PKG_CONFIG_PATH so that pkg-config can find the pc files.  Order is
critical here too - the local install should be the one seen first when 
testing the latest version of a library under development.
 
setenv PKG_CONFIG_PATH $RPSL_USER'/usr/local/lib/pkgconfig:\
'$RPSL_PROJ'/usr/local/lib/pkgconfig:'$RPSL_HOME'/usr/local/lib/pkgconfig'

STEP 5.
-------
Put all usr/bin and usr/local/bin directories in the executable search path. 
For the example only $RPSL_HOME/usr/bin and $RPSL_USER/usr/local/bin will be
needed.

if ( ! $?USER_PATH_SET ) then
    set path = ( \
    ...
    $RPSL_USER/usr/bin \
    $RPSL_USER/usr/local/bin \
    $RPSL_PROJ/usr/bin \
    $RPSL_PROJ/usr/local/bin \
    $RPSL_HOME/usr/bin \
    $RPSL_HOME/usr/local/bin \
    $path )
    setenv USER_PATH_SET 1       
endif


Now set up a project.


--------------------------------------------------------------------------

For reference, here are the places ${RPSL_HOME} ${RPSL_PROJ} and ${RPSL_USER} 
are used:

 1. They are set in the shell rc script.
 2. They specify the link path for dynamic libraries in the shell rc script
 3. They specify the pkgconfig search path for pc files in the shell rc script
 4. They specify the executable search path in the shell rc script
 5. RPSL_HOME specifies the search path for m4 macro files in the bootstrap 
    script 
          aclocal -I config -I ${RPSL_HOME}/usr/share/aclocal
 6. RPSL copies certain skeleton files from RPSL_USER, RPSL_PROJ or RPSL_HOME 
    that are searched in that order - see the script rpslNewClass, for example.


top


Table of Contents
William Snyder
Last modified: Fri May 27 17:05:42 EDT 2005