#!/bin/sh die () { echo $* >&2; exit 1; } PACK=${1} VERS=${2} LOCAL=${3} if [ -z "${PACK}" ] then echo " " echo "usage: create_tarball cdfsoft2 version" echo " or create_tarball cdfpatch version" echo " " echo " if local parameter is defined, ProductionExe and Production .tcl files " echo " will be taken from the local test release" echo " " echo "example: create_tarball cdfsoft2 4.0.0" echo " will create tarball ProductionExe_4.0.0.tar.gz" echo " " echo "example: create_tarball cdfpatch 4.0.0h" echo " will create tarball ProductionExe_4.0.0h.tar.gz" echo " " exit fi echo "########################################" echo " Going to create tarball for ${VERS} " date echo "########################################" cdf_home=`/bin/csh -f -c "echo ~cdfsoft"` unset SETUPS_DIR unset SETUP_UPS unset UPS_DIR unset UPS_SHELL unset PRODUCTS . ${cdf_home}/cdf2.shrc setup gtools v2_4 if [ -r "${cdf_home}/upsdb/${PACK}/${VERS}.version" ] then echo " OK - ${PACK} ${VERS} exists " else echo " OOPS - there is no ${PACK} ${VERS} " ups list -aK+ ${PACK} exit 1 fi echo "Setup ${PACK} ${VERS} ${LOCAL}" setup ${PACK} ${VERS} echo " OK - Going to copy files that are needed." echo " OK - ROOT directory: ${ROOTSYS} " DIST_PATH="" if [ "${PACK}" = "cdfsoft2" ] then DIST_PATH=${PROJECT_DIR} elif [ "${PACK}" = "cdfpatch" ] then DIST_PATH=${CDFPATCH_DIR} fi if [ "${LOCAL}" = "local" ] ; then DIST_PATH=${SRT_LOCAL} fi if [ -z "${DIST_PATH}" ] then echo " OOPS - You have to use either cdfsoft2 or cdfpatch for the name of a release" exit fi echo " OK - CDF software directory: ${DIST_PATH} " #printenv | fgrep cdfsoft #rm -rf ${VERS} tmpdist=cdfmcdist rm -rf $tmpdist mkdir $tmpdist pushd $tmpdist mkdir -p releases/${VERS} pushd releases/${VERS} mkdir bin lib lib32 Production cint cint/include DBUtils DBUtils/Examples dbt include EXECUTABLE=${DIST_PATH}/bin/${SRT_SUBDIR}/ProductionExe for b in ProductionExe TRGSim++ cdfSim Edm_ObjectLister; do cp ${DIST_PATH}/bin/${SRT_SUBDIR}/$b bin/ || exit 1 done #cp ${EXECUTABLE} bin/ProductionExe_${VERS} #cp ${DIST_PATH}/bin/${SRT_SUBDIR}/TRGSim++ TRGSim++ #cp ${DIST_PATH}/bin/${SRT_SUBDIR}/cdfSim cdfSim cp $ORACLE_HOME/lib/libclntsh.so.8.0 lib/libclntsh.so.8.0 cp $ORACLE_HOME/lib/libwtc8.so lib/libwtc8.so cp ${ROOTSYS}/lib/libNew.so lib/libNew.so cp ${ROOTSYS}/lib/libCore.so lib/libCore.so cp ${ROOTSYS}/lib/libRint.so lib/libRint.so cp ${ROOTSYS}/lib/libCint.so lib/libCint.so cp ${ROOTSYS}/lib/libGraf.so lib/libGraf.so cp ${ROOTSYS}/lib/libGraf3d.so lib/libGraf3d.so cp ${ROOTSYS}/lib/libHist.so lib/libHist.so cp ${ROOTSYS}/lib/libHtml.so lib/libHtml.so cp ${ROOTSYS}/lib/libMatrix.so lib/libMatrix.so cp ${ROOTSYS}/lib/libMinuit.so lib/libMinuit.so cp ${ROOTSYS}/lib/libPostscript.so lib/libPostscript.so cp ${ROOTSYS}/lib/libProof.so lib/libProof.so cp ${ROOTSYS}/lib/libTree.so lib/libTree.so cp ${ROOTSYS}/lib/libEG.so lib/libEG.so cp ${ROOTSYS}/lib/libPhysics.so lib/libPhysics.so [ -r "/usr/lib/libtcl.so" ] && \ cp /usr/lib/libtcl.so lib/libtcl.so [ -r "${KCC_BASE}/lib/libKCC.so" ] && \ cp ${KCC_BASE}/lib/libKCC.so lib/libKCC.so [ -r "${KCC_BASE}/lib32/libKCC.so" ] && \ cp ${KCC_BASE}/lib32/libKCC.so lib/libKCC.so cp ${ROOTSYS}/cint/include/bool.h cint/include/bool.h cp ${ROOTSYS}/include/RQ_OBJECT.h include/RQ_OBJECT.h cp ${TNS_ADMIN}/tnsnames.ora DBUtils/Examples/tnsnames.ora cp ${DISKCACHE_I_DIR}/lib/*so lib cp ${ROOTSYS}/lib/libDCache.so lib/libDCache.so cp ${ROOTSYS}/lib/libGpad.so lib/libGpad.so cp ${ROOTSYS}/lib/libGui.so lib/libGui.so cp ${ROOTSYS}/lib/libGX11.so lib/libGX11.so cp ${ROOTSYS}/lib/libX3d.so lib/libX3d.so cp ${ROOTSYS}/lib/libTreeViewer.so lib/libTreeViewer.so cp ${DCAP_DIR}/lib/libdcap.so lib/libdcap.so cp ${ROOTSYS}/cint/MAKEINFO cint/MAKEINFO cp ${DIST_PATH}/Production/*tcl Production chmod -R u+w . # Let me write my own files echo "exit" > test.tcl echo '#!/bin/sh' > run echo 'echo " "' >> run echo 'echo "# Running a test"' >> run echo ' ' >> run echo 'TCLFILE=${1}' >> run echo 'PWD=`/bin/pwd`' >> run echo ' ' >> run echo 'export CDFSOFT2_DIR ; CDFSOFT2_DIR=${PWD}' >> run echo 'export LD_LIBRARY_PATH ; LD_LIBRARY_PATH=${PWD}/lib' >> run echo 'export BFIELDM ; BFIELDM=${PWD}/dbt/bfieldmap.dbt' >> run echo 'export BFARCH ; BFARCH=' >> run echo 'export CDFGEOM ; CDFGEOM=${PWD}/dbt/geom99.dab' >> run echo 'export ROOTSYS ; ROOTSYS=${PWD}' >> run echo 'export TNS_ADMIN ; TNS_ADMIN=${PWD}/DBUtils/Examples' >> run echo 'export RCP_SCRIPT_BASE ; RCP_SCRIPT_BASE=${PWD}/RCP' >> run echo 'export RCP_FILESYSTEMDB_READONLY_DIR ; \ RCP_FILESYSTEMDB_READONLY_DIR=${PWD}/RCP' >> run echo 'export RCP_DB_NAMES_FILE ; RCP_DB_NAMES_FILE=${PWD}/RCP' >> run echo 'export RCP_DATABASE_PATH ; RCP_DATABASE_PATH=${PWD}/RCP' >> run echo 'export SRT_BASE_RELEASE ; SRT_BASE_RELEASE='${VERS} >> run echo 'printenv PATH' >> run echo 'printenv LD_LIBRARY_PATH' >> run echo '#export DEBUG ; DEBUG=xx' >> run echo '' >> run echo 'mkdir -p RCP' >> run echo './bin/ProductionExe ${TCLFILE} > /dev/null' >> run echo '' >> run echo 'if [ $? = 0 ]' >> run echo 'then' >> run echo ' echo "Production ran sucessfully."' >> run echo ' echo " "' >> run echo 'else' >> run echo ' echo "Production did not run sucessfully."' >> run echo ' echo " "' >> run echo ' exit 1' >> run echo 'fi' >> run chmod 755 run ./run test.tcl || die "test failed" packages="cesData svtsim XFTSim EvtGen" echo "adding release packages: $packages" for p in $packages; do #RTrailing slash in the first argument to cp ensures deep copy echo " $p." cp -R $DIST_PATH/$p/ . || die "can't find $p" done echo "Making the dbt cocktail from several ingredients" mkdir weird_stuff #yuck! needs a database cp ${CDFGEOM} weird_stuff/geom99.dab cp ${BFIELDM} weird_stuff/bfieldmap.dbt popd #yuck! do not copy oracle_tnsnames from UPS! get it from ~cdfsoft! cp -R $TNS_ADMIN oracle_tnsnames || die "cannot get tnsnames" packages="cdfdab" echo "Adding (external) packages $packages" for p in $packages; do echo " adding package $p" p_dir=`echo $p | tr "[a-z]" "[A-Z]"`_DIR [ -n "$p_dir" ] || die "$p doesn't seem to be a UPS package" rm -rf $p echo cp -R `printenv $p_dir` $p cp -R `printenv $p_dir` $p || die "Can't copy $p" done echo "Adding rcpdb" cp -R $SRT_DIST/rcpdb . || die "Problem with rcpdb" initfile=cdfmcdist_init.sh echo "creating init file $initfile" distbase=`basename $tmpdist` # Only $VERS, $initfile, $distbase should be expanded, # other $'s must be backslashed below cat < $initfile #\!/bin/sh # Source File to initalize remote CDF MC distribusion if [ \$# -ne 1 ]; then dist=$distbase # backslashed else dist=\$1 #not backslashed fi dist=\`cd \$dist; pwd\` [ -f \$dist/$initfile ] \ || echo "$mybase: WARNING, distribution root doesn't match me" >&2 echo "$initfile: initilizing CDF MC DIST $VERS from directory \$dist" export SRT_DIST=\$dist export PROJECT_DIR=\$SRT_DIST/releases/${VERS} # VERS must be expanded export PATH=\$PROJECT_DIR/bin:\$PATH export LD_LIBRARY_PATH=\$PROJECT_DIR/lib:\$LD_LIBRARY_PATH export CDFDAB_DIR=\$SRT_DIST/cdfdab export TNS_ADMIN=\$SRT_DIST/oracle_tnsnames export ROOTSYS=\$PROJECT_DIR # Wonderful, magic SRT variables export SRT_PRIVATE_CONTEXT="." export SRT_LOCAL="." export SRT_PUBLIC_CONTEXT=\$PROJECT_DIR #DBT package seems to require too many vars export BFIELDM=\$SRT_DIST/weird_stuff/bfieldmap.dbt export CDFGEOM=\$SRT_DIST/weird_stuff/geom99.dab export EVTGEN_DECAY_DIR=\$PROJECT_DIR/EvtGen export EVTGEN_DECAY_FILE=\$EVTGEN_DECAY_DIR/DECAY.DEC #MOre magic in RCP variables export RCP_FILESYSTEMDB_READONLY_DIR=\$SRT_DIST/rcpdb export RCP_DATABASE_PATH=level3/FileSystemDB:official/FileSystemDB/ export RCP_DB_NAMES_FILE=\$RCP_FILESYSTEMDB_READONLY_DIR/dbnames.txt export RCP_SCRIPT_BASE="." #Gotta have this one. export TCL_TAG="anyTag" export DEFAULT_SRT_BASE_RELEASE=${VERS} export SRT_BASE_RELEASE=${VERS} # Not enough to have SRT_DIST etc export CDFSOFT2_DIR=\$PROJECT_DIR EOF popd tarball=cdfmc_${VERS}.tar.gz echo "# Creating tarball $tarball" gtar -czf $tarball $tmpdist ls -lF $tarball $tmpdist #rm -r ${VERS} exit 20010917 kreymer Added variables per wicklund BFIELDM RCP* SRT_BASE_RELEASE Added creation of ./RCP for test job