Building and installing 'Data Monitor Tool' (DMT) on Solaris 2.6 Ultra SPARC. Prerequizites: -------------- GNU software packages required for installation of ROOT and DMT are available via FTP from the World-wide network of mirror sites. Refer to http://www.gnu.org for details. If impossible to install required software into system directories (usually /usr/local/bin) it is necessary to specify another directory where you have write permissions and where all software will reside (/ligo for example). To achieve this you must configure each tool via command: ./configure --prefix=/ligo follow this by running make: make and make install During installation binaries will go to '/ligo/bin', libraries to '/ligo/lib' etc. You should have directory '/ligo/bin' in your shell's 'path' variable. 1) Install GNU make (gcc-2.95 compillation may not work with system's make). Ensure it is in path before system's make and available as 'make' and 'gmake'. Version 3.78.1 was used. 2) Install utilities: m4 (ver. 1.4), automake (1.4), autoconf (2.13), libtool (1.3.4). Note: installation order is important, after installation of each tool it is necessary to ensure that previous tool is available before starting of compilation next. Tools should be placed in directory listed in path variable and the command 'rehash' should be issued if working shell is 'csh' or 'tcsh'. 3) Install binutils-2.9.1. 4) Install GNU utilities like 'cp' (GNU fileutils 4.0) and 'env'(GNU sh-utils 2.0), because some scripts and makefiles use extended syntax. Built-in shell commands or system's utilities may not work properly. 5) If 'bash' (Borne Again SHell) is not available, build and install it, version 2.03 is OK. Without 'bash' configure script for ROOT may not work properly. 6) Install gcc-2.95.2 a) unpack distribution: gunzip -c gcc-2.95.2.tar.gz |tar xf - b) make separate directory gcc-obj and go to it: mkdir gcc-obj ; cd gcc-obj c) in directory gcc-obj issue command: ../gcc-2.95.2/configure --prefix=/ligo \ --with-gnu-as=/ligo/bin/as --with-gnu-ld=/ligo/bin/ld \ --enable-shared --enable-threads d) follow this by: gmake bootstrap gmake install If GCC fail to compile (we got "Segmentation fault" while building "stage2" compiler using binaries generated at "stage1") build and install binutils-2.8.1. Then run 'configure' for GCC again. Install GCC, then install again binutils-2.9.1, and build GCC from scratch using previous compiler. Staying with binutils-2.8.1 is not possible because configure script for DMT claims linker 'ld' from this release is not reliable for building shared libraries. 7) Compile ROOT with gcc. 'Configure' script for ROOT may not work with system's 'sh'. Use 'bash' (Born Again Shell) instead. Source for building ROOT should be unpacked after unpacking binaries and inside binary package tree. We used ROOT version 2.23.11. Here are John's Zweizigs instructions for building ROOT. 1) Download Sun CC binaries and root source directory 2) set ROOTSYS, LD_LIBRARY_PATH and PATH variables 3) At this point I remove -I/usr/openwin/include from src/Makefile.solarisegcs. The reason is that my versions of the open (X)windows headers are missing the return type in the function prototypes. This is overlooked by gcc2.95.1 if the header is in /usr/include/X11/*.h but not if it's in /usr/openwin/include/X11/*.h You might try the standard make file, but if you get a lot of errors in X header files, try making sure that the headers are available from /usr/include/ and remove the include paths to /usr/openwin/include. 4) bash ./configure solarisegcs 5) make depend 6) make 8) Install compression library. It's home page http://www.cdrom.com/pub/infozip/zlib/. 9) Install 'perceps'. This Perl script is required for DMT documentation installation (PERCEPS's home page - http://starship.python.net/crew/tbryan/PERCEPS/ ). If Perl is not available in system then it should be installed too. You may skip documentation step by commenting out lines containing string 'env=$(PERCEPS) ..' in files Makefile located in directories RDist/src/ldas/lib/general/doc/html/ and RDist/src/ldas/lib/framecpp/doc/html/. This should be done after unpacking of DMT distribution and running 'start' and 'configure'. Building DMT -------------- To avoid confusing with multiple instances of GNU utilities ensure that path variable contains minimal set of directories and installed by you utilities has preference over system's. Use command like this to set path: set path= ( /ligo/bin /ligo/root/bin /usr/local/bin /usr/bin ) 1) Unpack distribution: gunzip -c rdist-1.1b.tar.gz | tar xf - This will creat directory tree starting from RDist 2) Go to RDist directory: cd RDist: 3) Go to source directory of LDAS library: cd src/ldas 4) Run script 'start': ./start 5) Configure LDAS: ./configure --prefix=/ligo/dmt 6) Build LDAS: make 7) Install LDAS: make install 8) Return to directory RDist: cd ../.. 9) Set environment for DMT: setenv TARGET /ligo/dmt/ (for example) setenv DMTINPUT ./emptyfile.F setenv MACHTYPE sparc setenv OSTYPE solaris 10) Go into RDist/src/Makefile. Change line with SLIBsolaris to include reference to -L/opt/SUNWspro/lib (SUN's Workshop Compiler run-time libraries). SLIBsolaris = -L/usr/openwin/lib -L/opt/SUNWspro/lib -lXpm -lX11 11) Build and install DMT: make all In case of success you will get binaries "sandbox" and "DChart" in directory ${TARGET}/bin, libraries in ${TARGET}/lib etc. Shared libraries libRSand.so, libPanel.so, libLGraf.so are intended to be used with any compatible ROOT (i.e. compiled for Solaris with gcc). To load libraries in ROOT session use command: gSystem.Load("libRSand.so"); Check if DMT classes are available: .class TSeries; You should get list of TSeries class members. If you tune your .rootrc file as described below the shared libraries will be loaded automaticaly at start of ROOT's session. Binaries "sandbox" and "DChart" are intended to start ROOT session instead of 'root' executable. This may be useful but we didn't get it working. Starting common 'root' and loading shared libraries via command 'gSystem.Load' is enough for using all DMT's stuff. To start using DMT you must set enviroment for ROOT and DMT. Variables 'path' and 'LD_LIBRARY_PATH' must include correspondings directories with binaries and libraries. Example of commands for "csh" and 'tcsh': setenv ROOTSYS /ligo/tmp2/sw/root set path = ( /ligo/bin $path ${ROOTSYS}/bin /ligo/dmt/bin ) setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${ROOTSYS}/lib:/ligo/dmt/lib It is convinient to put this commands at the end of file .cshrc in your home directory. If you are not going to compile something else you may omit directory '/ligo/bin' in path. You also need to edit lines in your file .rootrc in your home directory. The references to DMT directories and macroses should be included in .rootrc: Unix.*.Root.DynamicPath: .:$(ROOTSYS)/lib:/ligo/dmt/lib Unix.*.Root.MacroPath: .:/ligo/dmt/include:/ligo/dmt/macros Rint.Logon: rootlogon.C LIGO.Rint.Logon: sboxlogon.C *.Rint.Logoff: sboxlogoff.C Note: Standard LDAS installation procedure creates extremely large libraries like libframecpp.so (up to 85 MB) and libgeneral.so. You may reduce their sizes if compile without optimization and debugging ( look -O2 and -g options in makefiles deep inside directory tree starting from RDist/src/ldas ). Without -O2 and -g options libframecpp.so will be about 4.3 MB in size. Andrei Sazonov (sazonov@thsun1.jinr.ru) 29th March 2000.