File indexing completed on 2024-04-06 12:11:44
0001
0002
0003 getExternals()
0004 {
0005 mkdir ${tard}/external
0006
0007 ext=$CMS_PATH/$SCRAM_ARCH/external
0008 echo "=========================================================="
0009 echo "=========================================================="
0010
0011 cd $CMSSW_BASE
0012 echo "Copy gcc subdirs"
0013 scram tool tag gcc-ccompiler GCC_CCOMPILER_BASE
0014 gccd_src=`scram tool tag gcc-ccompiler GCC_CCOMPILER_BASE`
0015 set -x
0016 gccd_target=${tard}/external/gcc
0017 mkdir $gccd_target
0018 cp -a $gccd_src/include $gccd_target
0019 cp -a $gccd_src/bin $gccd_target
0020
0021 if [ `uname` = "Darwin" ]; then
0022 cp -a $gccd_src/lib $gccd_target/lib64
0023 else
0024 cp -a $gccd_src/lib64 $gccd_target/lib64
0025 fi
0026 exit
0027 echo "=========================================================="
0028 echo "=========================================================="
0029
0030 echo "Copying external libraries from $ext to $extdl."
0031
0032
0033 extdl=${tard}/external/lib
0034 mkdir $extdl
0035 extt=/tmp/cmsswExt
0036 ls -l $CMSSW_RELEASE_BASE/external/$SCRAM_ARCH/lib/* > $extt
0037
0038 for i in boost bz2lib castor clhep dcap db4 dcap \
0039 expat fftw3 gdbm gsl hepmc\
0040 libjpg libpng libtiff libungif \
0041 openssl pcre \
0042 sigcpp xrootd zlib xz freetype tbb
0043 do
0044 export i;
0045 ever=`grep $i $extt | perl -ne 'if ($_ =~ /$ENV{i}\/(.*)\/lib\/(.*)/ ) {print "$1\n"; last;}'`
0046 echo "copy $i $ever"
0047 if [ -z "$ever" ]; then
0048 echo "!!!!!!!! can't get externals for $i"
0049 fi
0050
0051 cp -a $ext/$i/$ever/lib/* ${extdl}
0052 done
0053
0054
0055 echo "=========================================================="
0056 echo "=========================================================="
0057 echo "Copying external headers."
0058
0059 mkdir ${tard}/external/var-inc
0060 for i in CLHEP HepMC boost sigcpp; do
0061
0062 edir=`scram tool info $i | grep INCL | head -1| perl -ne 'if ($_ =~/\=(.*)$/) {print "$1\n"}'`
0063 if [ -n $edir ]; then
0064 cp -r $edir/* ${tard}/external/var-inc
0065 fi
0066 done
0067
0068 echo "=========================================================="
0069 echo "=========================================================="
0070
0071 ROOTSYS=`echo $ROOTSYS | sed 's/\/$//'`
0072 origr=$ROOTSYS
0073 if [ -L ${ROOTSYS} ]; then
0074 b=`dirname ${ROOTSYS}`
0075 if [ `uname` = "Linux" ]; then
0076 origr=`readlink -f ${ROOTSYS}`
0077 else
0078 origr=`readlink ${ROOTSYS}`
0079 fi
0080 fi
0081
0082 echo "copy root from $origr to ${tard}/external/root"
0083
0084
0085
0086
0087 cp -a $origr ${tard}/external/root
0088
0089 }
0090
0091
0092 getCmsSources()
0093 {
0094 echo "get list from $fwpl"
0095 for i in `cat $fwl` $extra_list
0096 do
0097
0098 if [ -f $CMSSW_RELEASE_BASE/src/${i} ]; then
0099 mkdir -p $tard/src/`dirname $i`
0100 cp $CMSSW_RELEASE_BASE/src/$i $tard/src/$i
0101 fi
0102
0103
0104 mkdir -p $tard/src/$i
0105 mkdir -p $tard/src/$i/src
0106
0107 if [ -e $CMSSW_BASE/src/$i ]; then
0108 cp -rf $CMSSW_BASE/src/${i}/interface $tard/src/$i
0109 cp -rf $CMSSW_BASE/src/${i}/src/*.h $tard/src/$i/src
0110 else
0111 cp -rf $CMSSW_RELEASE_BASE/src/${i}/interface $tard/src/$i
0112 cp -rf $CMSSW_RELEASE_BASE/src/${i}/src/*.h $tard/src/$i/src
0113 fi
0114 done;
0115 }
0116
0117
0118
0119 getFireworksSources()
0120 {
0121 echo "=========================================================="
0122 echo "=========================================================="
0123 echo "getting Fireworks info/config files."
0124
0125 mkdir ${tard}/libexec
0126 cp $CMSSW_RELEASE_BASE/bin/$SCRAM_ARCH/cmsShow.exe ${tard}/libexec
0127 cp $CMSSW_RELEASE_BASE/bin/$SCRAM_ARCH/cmsShowSendReport ${tard}/libexec
0128
0129 if [ -e $CMSSW_BASE/bin/$SCRAM_ARCH/cmsShow.exe ]; then
0130 cp -f $CMSSW_BASE/bin/$SCRAM_ARCH/cmsShow.exe ${tard}/libexec
0131 fi
0132 if [ -e $CMSSW_BASE/bin/$SCRAM_ARCH/cmsShowSendReport ]; then
0133 cp -f $CMSSW_BASE/bin/$SCRAM_ARCH/cmsShowSendReport ${tard}/libexec
0134 fi
0135
0136
0137 srcDir="${tard}/src/Fireworks/Core"
0138 mkdir -p $srcDir
0139 cp -a $CMSSW_BASE/src/Fireworks/Core/macros $srcDir
0140 cp -a $CMSSW_BASE/src/Fireworks/Core/icons $srcDir
0141 cp -a $CMSSW_BASE/src/Fireworks/Core/data $srcDir
0142 cp -a $CMSSW_BASE/src/Fireworks/Core/scripts $srcDir
0143
0144
0145 cv=$tversion;
0146 if [ -z $cv ]; then
0147 cv=`perl -e 'if ($ENV{CMSSW_VERSION} =~ /CMSSW_(\d+)_(\d+)_/) {print "${1}.${2}";}'`
0148 fi
0149 echo $cv > $srcDir/data/version.txt
0150 echo "DataFormats: $CMSSW_VERSION" >> $srcDir/data/version.txt
0151
0152 cp -a $CMSSW_RELEASE_BASE/src/Fireworks/Core/scripts $srcDir
0153
0154
0155 cd $tard
0156 ln -s src/Fireworks/Core/macros/aod.fwc .
0157 ln -s src/Fireworks/Core/macros/ispy.fwc .
0158 ln -s src/Fireworks/Core/macros/pflow.fwc .
0159 ln -s src/Fireworks/Core/macros/miniaod.fwc .
0160 ln -s src/Fireworks/Core/macros/simGeo.fwc .
0161 ln -s src/Fireworks/Core/macros/overlaps.fwc .
0162
0163 ln -s src/Fireworks/Core/scripts/cmsShow .
0164 }
0165
0166
0167
0168 getCmsLibs()
0169 {
0170 mkdir -p $tard/lib
0171 echo "=========================================================="
0172 echo "=========================================================="
0173 echo "get CMS libs"
0174
0175 libext=".so";
0176 if [ `uname` = "Darwin" ]; then
0177 libext=".dylib";
0178 fi
0179
0180 cat $fwl | grep -v '\.h$' > ${fwl}tmp
0181
0182 perl -i -ne 'print unless /Fireworks\/Macros/' ${fwl}tmp
0183 perl -i -ne 'print unless /FWCore\/PythonUtilities/' ${fwl}tmp
0184 perl -i -ne 'print unless /DataFormats\/MuonData/' ${fwl}tmp
0185 perl -i -ne 'print unless /Utilities\/ReleaseScripts/' ${fwl}tmp
0186
0187
0188 libl=`cat ${fwl}tmp | perl -ne 'if( ~/(.+)\/(.+)$/){print "$1$2 ";}'`
0189 libl_extra=`echo $extra_list | perl -pe '{ s/\///og;}'`
0190
0191 echo "get FWLite libraries"
0192
0193 cn=${tard}/lib/.edmplugincache;
0194 for i in $libl $libl_extra; do
0195 if [ -e $CMSSW_BASE/lib/$SCRAM_ARCH/lib${i}.$libext ]; then
0196 cp -f $CMSSW_BASE/lib/$SCRAM_ARCH/*${i}* $tard/lib
0197 else
0198 cp -f $CMSSW_RELEASE_BASE/lib/$SCRAM_ARCH/*${i}* $tard/lib
0199 fi
0200 grep $i $CMSSW_RELEASE_BASE/lib/$SCRAM_ARCH/.edmplugincache >> $cn
0201 grep $i $CMSSW_BASE/lib/$SCRAM_ARCH/.edmplugincache >> $cn
0202 done
0203
0204 echo "getting libs from $CMSSW_BASE/lib/$SCRAM_ARCH"
0205 cp -f $CMSSW_BASE/lib/$SCRAM_ARCH/* ${tard}/lib/
0206
0207 sort -u $cn -o $cn
0208
0209 rm ${fwl}tmp
0210 }
0211
0212
0213
0214 getDataFiles()
0215 {
0216 echo "=========================================================="
0217 echo "=========================================================="
0218 echo "get data files"
0219
0220 cd ${tard}
0221 name=`perl -e '($ver, $a, $b, $c) = split('_', $ENV{CMSSW_VERSION}); print "data", $a, $b, ".root" '`
0222 $dwnCmd data.root http://amraktad.web.cern.ch/amraktad/scratch0/data/$name
0223
0224
0225
0226
0227
0228 cp $CMSSW_RELEASE_BASE/external/$SCRAM_ARCH/data/Fireworks/Geometry/data/cmsSimGeom-* ${tard}
0229 cp $CMSSW_RELEASE_BASE/external/$SCRAM_ARCH/data/Fireworks/Geometry/data/cmsGeom10.root ${tard}
0230 }
0231
0232
0233
0234 makeTar()
0235 {
0236 bdir=`dirname $tard`
0237 cd $bdir
0238 tname=`basename $tard`
0239 if [ `uname` = "Darwin" ]; then
0240 echo "Packing tarball ${tname}.mac.tar.gz"
0241 tar -czf ${tname}.mac.tar.gz $tname
0242 else
0243 echo "Packing tarball ${tname}.linux.tar.gz"
0244 tar -czf ${tname}.linux.tar.gz $tname
0245 fi
0246 }
0247
0248
0249
0250
0251
0252
0253 usage() { echo "Usage: $0 --tar --version=<version> --dir=<destDir> --verbose --force" ; exit;}
0254
0255 for i in "$@"
0256 do
0257 case $i in
0258 --dir=*)
0259 tard="${i#*=}"
0260 echo "Destination directory == [$tard]"
0261 shift;
0262 ;;
0263 --version=*)
0264 tversion="${i#*=}"
0265 echo "Tarball version == $tversion"
0266 shift;
0267 ;;
0268 --tar)
0269 doTar=YES
0270 echo "Do tar&zip after extraction"
0271 shift;
0272 ;;
0273 --verbose)
0274 set -x
0275 shift;
0276 ;;
0277 --force)
0278 doForce=1;
0279 shift;
0280 ;;
0281 --fwlite=*)
0282 fwlite_list="${i#*=}"
0283 shift;
0284 ;;
0285 *)
0286 echo "usage [$i] ----"
0287 usage
0288 ;;
0289 esac
0290 done
0291
0292 export tard
0293 tard=`perl -e '{$a = $ENV{tard}; $a =~ s/^~/$ENV{HOME}/;$a =~ s/^\./$ENV{PWD}/; print "$a"; }'`
0294
0295
0296 if [ -z $tard ]; then
0297 echo "Destination directory not specified"
0298 usage
0299 fi
0300
0301 echo -e "Start packaging .... \n"
0302
0303
0304
0305 if [ -z $doForce ] && [ -e $tard ] ; then
0306 echo "Destination directory [$tard] already exists. Use --force option."
0307 exit 1;
0308 fi
0309
0310 mkdir $tard
0311
0312 dwnCmd="wget --no-check-certificate -O "
0313 if [ `uname` = "Darwin" ]; then
0314 dwnCmd="curl --insecure -o "
0315 fi
0316
0317 origd=$PWD
0318
0319 if [ -z fwlite_list ]; then
0320 fwl="/tmp/fwlite_build_set.file"
0321 $dwnCmd $fwl https://raw.githubusercontent.com/cms-sw/cmsdist/IB/CMSSW_7_3_X/stable/fwlite_build_set.file
0322 else
0323 fwl=$fwlite_list
0324 fi
0325 extra_list="/CondFormats/Serialization /Geometry/CommonDetUnit /DataFormats/MuonSeed"
0326
0327
0328 getExternals
0329 getCmsSources
0330 getFireworksSources
0331
0332
0333 getCmsLibs
0334
0335
0336 getDataFiles
0337 echo $tard
0338 if [ -n "$doTar" ] ; then
0339 makeTar
0340 fi
0341