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 d0cvsThe 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 D0RunII t00.xx.00 -f NULL
setup ace v4_6
# setup new SRT
. /usr/global/d0dist/srt/srt.sh
srt_setup
setup d0cvsIn 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.
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
newrel -t new_srt_version directoryNameIf 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:
cd directoryName
addpkg -h thread_util
addpkg -h itc
gmake all
.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 aceYou 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:
setup kai
/usr/global/people/slacker/testbin/hello
ERROR 2 IN kai_key SETUP ---------------------------------------------------To verify that LD_LIBRARY_PATH has been properly defined one can use "printenv LD_LIBRARY_PATH".
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.
|
||||||||||||||||
|