System Administration on the

DØ RunII Online Integration & Development

Testing Systems

D.R.O.I.D. Testing Systems
Fermi National Accelerator Laboratory
A joint project between the
Online and Database Systems Department
and the DØ Online Computing effort.

The D.R.O.I.D. Testing Systems Getting Started with SRT Example

This section contains information on how to configure your environment for building DØ software under the SoftRelTools framework on the droid systems. The most important rule to remember is that building can only be done on droidh since that is the only system with a license for the KAI compiler. In the Bash shell the basic commands for setting up your environment properly are:

setup d0cvs
setup D0RunII t00.xx.00 -f NULL
setup ace v4_6
# setup new SRT
. /usr/global/d0dist/srt/srt.sh
srt_setup
The previous setup tailors the build environment to use the KAI KCC (C++) compiler. If one wishes to use the egcs comipler instead, then try:
setup d0cvs
setup D0RunII t00.xx.00 -f NULL
setup ace v4_6
# setup new SRT
. /usr/global/d0dist/srt/srt.sh
srt_setup -d
setup egcs
SRT_COMPILER="SRT_CXX=EGCS_1_1"
srt_setup $SRT_COMPILER
In either example one should now be ready to create a new release, add packages and build the software. With the new version of SoftRelTools it is no longer necessary to do "gmake installdirs" as this is accomplished by the addpkg command now. In the following example directoryName is the name of the top level directory to be created and the "-h" option is telling addpkg to take the package from the cvs head version and not from the release.
newrel -t new_srt_version directoryName
cd directoryName
addpkg -h thread_util
addpkg -h itc
gmake all
If the executables you are going to build need to be run on other droid nodes, then you need to place the executables in a global directory. There are several ways to accomplish this task. The first is to do your building in a subdirectory of you global area (/usr/global/people/yourUserName). This solution is useful for debugging where you need access to the source code on more than one node. The second solution is to create a link from the "bin" directory in your build tree to a subdirectory of your global area (for example "ln -s /usr/global/people/yourUserName bin"). A third method is to just copy the built executables over to a subdirectory of your global area. Now to access the executables from another node you will need to know the path to the executables and setup a few products. Perhaps the best way to do it would be to consult the SRT Manual  and see how to make SRT create the link for you, (see the section on User Preferences for newrel). Following the example in the manual I created the following file in my home area:
.srtrc:
# only redirect bin and tmp _NOT_ lib to the global area in this example
extra_dirs="$extra_dirs tmp>/usr/global/people/gug/tmp bin>/usr/global/people/gug/bin"


In the following example assume that "hello" was built on droidh and copied to /usr/global/people/slacker/testbin.  Now to access the executables on any of the other nodes (droida through droidf), the following should be sufficient:

setup ace
setup kai
/usr/global/people/slacker/testbin/hello
You will probably notice an error message because these nodes do not have a license for building with the KAI compiler. Although you cannot build libraries and executables with the KAI compiler on these nodes, you are allowed to run executables on these nodes that were built on a node with a valid license. The UPS packaging of the "kai" product is smart enough to understand this and will set the environment variable LD_LIBRARY_PATH appropriately to allow you to run the built executables but not the compiler. The error message you will see probalbly that looks very close to:
ERROR 2 IN kai_key SETUP ---------------------------------------------------
License info for Kai C++ on droida.fnal.gov is not correctly installed
in the file /usr/global/products/NULL/kai_key/v3_personal_use/KeyTable.v3_personal_use
Please, contact kai-support@fnal.gov for further help.
To verify that LD_LIBRARY_PATH has been properly defined one can use "printenv LD_LIBRARY_PATH".


Web Page Information
Creation Information
Maintenance Information
Author Group Date
Gerald Guglielmo (gug@fnal.gov)
CD/ODS/OSP 12-Aug-1999
Maintainer Group Last Updated
Gerald Guglielmo (gug@fnal.gov)
CD/ODS/OSP 19-Jan-2000