---------- Forwarded message ---------- Date: Wed, 12 Dec 2001 08:57:40 -0500 (EST) From: Jim Shank To: atlas-sw-developers@atlas-lb.cern.ch Subject: Re: ATLAS sw on a laptop -- Rev. 2 I have had some feedback on the instructions for running ATLAS sw on laptops reulting in the following revision. Please send me more feedback. --Jim How to develop ATLAS software on your disconnected laptop. shank@bu.edu shank Tue Dec 11 10:53:15 2001 This works only with version 2.4.1 1. Get the current version of cmt on to your laptop, see: http://www.lal.in2p3.fr/SI/CMT/CMT.htm Ugly hack number 1: mkdir -p /afs/cern.ch/sw/contrib/CMT/cmtcvs/v1/i386_linux22/ get /afs/cern.ch/sw/contrib/CMT/cmtcvs/v1/i386_linux22/cmtcvs.exe from an afs-connected machine and put it in the directory made above. This file seems to be hard-wired into cvs, so you need to fake it. You could follow the instructions on the cmt web page to put the cmt plugin into cvs after you run the mirror command, but you would have to do it every time you mirror. I think the correct thing to do is check the plugin into cvs, but from a standard place like /usr/local/bin. Then you would only have to do this once--I'll check with experts. 2. Get a local copy of the ATLAS cvs repository on your machine. Use the cvsupd running on atlas-sw.cern.ch. Get cvsup installed on your laptop using URL = http://www.polstra.com/projects/freeware/CVSup/ make this atlas.sup file: >more atlas.sup *default host=atlas-sw.cern.ch *default base=/my/laptop/cvs/directorybase *default prefix=/my/laptop/cvs/directory *default release=cvs *default delete use-rel-suffix *default compress atlas where you change /my/laptop/cvs/directory to your favorite directory. You also need this file for authorization: >more $HOME/.cvsup/auth atlas-sw.cern.ch:atlasclient@anywhere.:insider: Then, whenever you want to update your copy of the repositiry, run: cvsup -g atlas.sup This uses the cvsupd set up by Helge. Note: this copy of the repository is only useful for check outs! Of course you dont want to make commits to this repository copy. 3. Get a full build on your laptop using your favorite mirroring software. This takes about 2 Gbytes and about 2 hours with a good internet connection. I use cvsup for this also. I looked at rsync, but dont like the fact that the client (the person trying to get the files on his laptop) has to know too much about what files need to be downloaded. With cvsup, one person sets up the list.cvs file at cern and then each client just issues the "cvsup -g sw.sup". using this sup-file: >more sw.sup *default host=lxplus034.cern.ch *default base=/data *default prefix=/data/ *default release=ext *default delete use-rel-suffix *default compress sw > I run my own cvsupd on lxplus034 (we probably should have an official one). This is the list file that the above sup file accesses: upgrade 2.4.1 rsymlink * rsymlink 2.4.1 omitany */sun4x_57 omitany */sun4x_57/* omitany */SUN-CC5/* omitany */i386_linux22/ omitany */i386_linux*/* omitany */Linux-gcc-opt/* omitany */Solaris-CC-*/* You shouldnt have to set this up, as long as my daemon is running on lxplus034. --Alternatively, if you are brave, you could do your own full-build of a release! The above mirroring process will download symlinks that point to /afs/cern.ch cells. I dont know if these are actually used. I have left the symlinks and compiled /run code fine. The following perl script will fix them: >more atlas_link_fix.pl #!/usr/bin/perl -- # -*-Perl-*- # # Script to fix symlinks in ATLAS sw releases. It just strips off # afs references and puts in your local dir. # # input to this program is a list of files produced by: # find . -name \*.so -type l # shank@bu.edu shank Wed Dec 5 08:41:51 2001 # # change this for your laptop: # location of the release on your local machine: $basedir = "/data"; while (<>){ chop; $file =$_; $link = readlink($file); $link =~ s/\/afs\/cern.ch\/atlas\/software\/dist/$basedir/; # print $file,"\n"; # print readlink($file),"\n"; # print "new link: ",$link,"\n"; system("rm $file"); system("ln -s $link $file"); } To run, do this from the dist directory: find . -name \*.so -type l | atlas_link_fix.pl 4. External Software: (requires about 1 Gbyte) More mirroring with these 2 cvsup commands: >more ext.sup *default host=lxplus034.cern.ch *default base=/apps *default prefix=/apps *default release=ext *default delete use-rel-suffix *default compress external >more gaudi.sup *default host=lxplus034.cern.ch *default base=/apps/ *default prefix=/apps/ *default release=ext *default delete use-rel-suffix *default compress gaudi cvsup -g gaudi.sup cvsup -g ext.sup Note: These commands will download things into the /apps directory on my laptop. The daemons running at cern, have these list.cvs files: >more gaudi/list.cvs upgrade Gaudi/0.8.3 omitany sun4x_57 upgrade geant4/geant4.3.0 omitany SUN-CC5 omitany geant4/geant4.3.0/tmp omitany tmp omitany sun4x_57 omitany example* omitany geant4/geant4.3.0/example* upgrade pythia/pythia_6.15* omitany */tmp omitany */sparc* upgrade MySQL upgrade isajet/isajet_7.5* omitany */sparc* upgrade tauola/tauola-cleo upgrade herwig/herwig6* upgrade Boost/boost_1* >more external/list.cvs upgrade HTL/1.3.* upgrade HTL/1.4.* upgrade CLHEP/1.6* upgrade Qt/2.2.1 upgrade HepODBMS/0.3.2.* upgrade ConditionsDB/0.3.0.1 You can see the cvsupd set up in: /afs/cern.ch/user/s/shank/public/cvsupd The above list files are not optimized--we should be more clever with the omitany statements. I am also sure I have not downloaded everything needed, but it was enough for me to run HelloWorld and and isajet example as well as compile the Moore code. We should have an automatic way of generating these mirror-tool configuration files during the build process. The general user wont have to know the details of this cvsupd set up. You just need to make the .sup files mentioned above and issue the cvsup -g commands. More External Software: Install Objectivity version 6.1 (see URL http://wwwinfo.cern.ch/db/objectivity/) Look in the How-to and FAQ section. This comes in convenient rpm files. I had to force the install with: rpm -U --nodeps Objectivity-client-6.1-2.i386.rpm 5. Laptop directory structure: make an atlas_root directory and set up the links: (replace /data with a dir on your laptop that has a lot of space) mkdir -P /data/atlas_root/sw/lhcxx/specific/redhat61/gcc-2.95.2/ mkdir -P /data/atlas_root/software/ cd /data/atlas_root/sw/lhcxx/specific/redhat61/gcc-2.95.2/ ln -s /apps//Objectivity . ln -s /apps/CLHEP . etc. >cd /data/atlas_root/ >ls -last total 16 4 drwxrwxrwt 30 root root 4096 Dec 6 11:26 ../ 4 drwxr-xr-x 3 shank shank 4096 Dec 6 08:50 sw/ 4 drwxr-xr-x 4 shank shank 4096 Dec 6 08:49 ./ 4 drwxr-xr-x 2 shank shank 4096 Dec 6 04:46 software/ 0 lrwxrwxrwx 1 shank shank 5 Dec 6 04:40 external -> /apps/ 0 lrwxrwxrwx 1 shank shank 6 Dec 6 04:25 cern -> /cern// > >ls -last software/ total 8 4 drwxr-xr-x 4 shank shank 4096 Dec 6 08:49 ../ 4 drwxr-xr-x 2 shank shank 4096 Dec 6 04:46 ./ 0 lrwxrwxrwx 1 shank shank 5 Dec 6 04:46 dist -> /data/ > >ls -last sw/lhcxx/specific/redhat61/gcc-2.95.2/ total 8 4 drwxr-xr-x 2 shank shank 4096 Dec 7 02:04 ./ 0 lrwxrwxrwx 1 shank shank 18 Dec 7 02:04 Objectivity -> /apps/Objectivity// 0 lrwxrwxrwx 1 shank shank 12 Dec 6 08:51 CLHEP -> /apps/CLHEP// 0 lrwxrwxrwx 1 shank shank 10 Dec 6 08:51 HTL -> /apps/HTL// 0 lrwxrwxrwx 1 shank shank 9 Dec 6 08:50 Qt -> /apps/Qt// 0 lrwxrwxrwx 1 shank shank 15 Dec 6 08:50 HepODBMS -> /apps/HepODBMS// 4 drwxr-xr-x 3 shank shank 4096 Dec 6 08:50 ../ 6. Set up your laptop working environment 6.1 Get AtlasSettings This will use your local copy of the ATLAS CVS repositroy: cd to your dist area and make sure your CVSROOT environment variable points to your local copy of th erepository. >cd ${SITEROOT}/software/dist >mkdir AtlasSettings >cd AtlasSettings >cvs co -d v1r4 offline/AtlasSettings This checks out some scripts that will be used in the next steps. 6.2 make sure your CMTSITE variable is set to EXTSITE. I do this in my requirements file in my home directory: >more requirements # Setup Environment # Setup the ATLAS CVS repository #set CVSROOT ":kserver:atlas-sw.cern.ch:/atlascvs" # This needs to be set according to your local site. Known sites are: # CERN # BNL # LBNL set CMTSITE "EXTSITE" macro ATLAS_DIST_AREA "/afs/cern.ch/atlas/software/dist" \ CERN "/afs/cern.ch/atlas/software/dist" \ BNL "/afs/rhic/usatlas/software/dist" \ LBNL "/auto/atlas/local/software/dist" \ EXTSITE "${SITEROOT}/software/dist" # Modify this to be your current base release macro ATLAS_RELEASE 2.4.1 use AtlasSettings v* $(ATLAS_DIST_AREA) set CMTTEST "/data/moore_cmt" # Setup the CMT search path path_prepend CMTPATH "$(CMTTEST)" # This environment variable is needed in order to setup GAUDI correctly #set SITEROOT /data/atlas_root I set the following in my .login file: setenv SITEROOT /data/atlas_root setenv CMTVERS v1r10p20011126 setenv CMTBASE /data/cmt/CMT setenv CMTROOT $CMTBASE/$CMTVERS setenv CMTATLAS /data/2.4.1 setenv CMTGAUDI /apps/Gaudi source $CMTBASE/$CMTVERS/mgr/setup.csh Then, from your login directory: >cd ~ >cmt version v1r10p20011126 >cmt config ------------------------------------------ Configuring environment for standalone package. CMT version v1r10p20011126. System is Linux-i686 ------------------------------------------ Creating setup scripts. Creating cleanup scripts. >source ./setup.csh 6.5 Ugly hack number 2 avoiding an unresolved reference to libstdc++-libc6.1-2.so.3 Since the release was built at CERN, this non-standard version of the stdc++ lib needs to be downloaded. I copied it to /usr/local/lib: >sudo scp -p atlas.cern.ch:/asis.local/i386_redhat61/usr.local/gcc-alt-2.95.2/lib/libstdc++-libc6.1-2.so.3 \ /usr/local/lib 7. Follow the official CMT developing guide URL:http://atlas.web.cern.ch/Atlas/GROUPS/SOFTWARE/OO/tools.html then click on the: "Getting started with CMT. Here are some instructions on using CMT in ATLAS." Example: [shank@jimspc moore_cmt]$ cd $CMTTEST [shank@jimspc moore_cmt]$ pwd /data/moore_cmt [shank@jimspc moore_cmt]$ cmt co TestRelease # ================= Package TestRelease version TestRelease-00-00-11 path already installed. # Required version v1r6p2 of package CLHEP incompatible with selected version CLHEP-00-01-06 # Required version v1r6p2 of package CLHEP incompatible with selected version CLHEP-00-01-06 # package GeneratorFilters GeneratorFilters-00-00-01 Generators not found # package Tauola_i Tauola_i-00-00-01 Generators not found Removing all previous make fragments from cmt Removing all previous make fragments from Linux-gcc-dbg Creating setup scripts. Creating cleanup scripts. [shank@jimspc moore_cmt]$ cd TestRelease/TestRelease-00-00-11/cmt [shank@jimspc cmt]$ cmt config # Required version v1r6p2 of package CLHEP incompatible with selected version CLHEP-00-01-06 # Required version v1r6p2 of package CLHEP incompatible with selected version CLHEP-00-01-06 # package GeneratorFilters GeneratorFilters-00-00-01 Generators not found # package Tauola_i Tauola_i-00-00-01 Generators not found Creating setup scripts. Creating cleanup scripts. [shank@jimspc cmt]$ source ./setup.csh [shank@jimspc cmt]$ cd ../run/ [shank@jimspc run]$ athena HelloWorldOptions.txt JobOptionsSvc INFO Service initialized successfully JobOptionsSvc INFO //############################################################## // // Job options file // //============================================================== //use McEventSelector// --> Including file $ATHENACOMMONROOT/share/Atlas_Gen.UnixStandardJob.txt //************************************************************** // // Unix standard job options file [lines of output cut out here] HelloWorld INFO finalize() *****Chrono***** INFO **************************************************************************************************** *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc INFO Time User : Tot= 2 [ms] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.f... INFO Service finalized succesfully ToolSvc INFO Removing all tools created by ToolSvc ApplicationMgr INFO Application Manager Finalized successfully [shank@jimspc run]$ 8. Doing code development. Now you can connect to the net, setenv CVSROOT to the kserver: setenv CVSROOT :kserver:atlas-sw.cern.ch:/atlascvs Do a cmt co from the official CVS repository while still connected to the net: cmt co MuonSpectrometer/Moore This sets up the directories in way that you could eventually check back into the CVS repository. Now you can disconnect from the net, develop and test your code, then connect to do a cvs commit. ___________________________________________________________________ This mail has been sent to all members of the list atlas-sw-developers ___________________________________________________________________