#!/bin/sh # # Perform the intermediate steps in the building of a release. # # Arguments: # # release Name to be given to the new release. # # revision OPTIONAL - the tag on the revision of # the Release package containing the # definition of the release to be built. # CAUTION: This should not be needed. It is usually # considered normal that the release be built # from the latest revision of Release package. # (This is the default behavior) # CDF_CVSROOT=":pserver:anonymous@cdfcvs.fnal.gov:/cdf/code/cdfcvs/run2" CVSROOT=${CDF_CVSROOT}; export CVSROOT CVS_PASSFILE=/dev/null; export CVS_PASSFILE [ `which bash | wc -w` -gt 1 ] && PATH=${PATH}/usr/local/bin; export PATH cmd=`basename $0` prefix=`echo $0 | sed "s%${cmd}%%"` [ "${prefix}" = "" ] && prefix='./' release=${1} revision=${2} Qual=${3} [ -z "${Qual}" ] && Qual=default compiler=${4} [ -z "${compiler}" ] && tcomp=GCC [ "${compiler}" = "kcc" ] && tcomp=KCC [ "${Qual}" != "default" ] && tcomp="${tcomp}.....${Qual}" [ -d "${HOME}/maint/log/prebuild" ] || mkdir -p ${HOME}/maint/log/prebuild MAIN() { NODE=`uname -n|cut -f1 -d'.'` #. ${HOME}/cdf2.shrc UPS_SHELL=sh; export UPS_SHELL . `${UPS_DIR}/bin/ups setup ups` setup cdfsoft2 development #if [ "${CDFSOFT2_DIR}" = "" ] ; then # printf "\n OOPS - failed to setup cdfsoft2 development \n\n" # exit 1 #fi # ------------------------- # Ensure that we're cdfsoft # ------------------------- cdf_test=`echo ${SRT_DIST} | grep ${HOME}` if [ -z "${cdf_test}" ]; then echo "" echo "You must become cdfsoft before attempting $0" echo "" echo "slogin ${NODE} -l cdfsoft" echo "" exit 2 fi if [ -z "${release}" ]; then echo echo Usage: echo ' ' $0 '' echo exit fi # # Get latest Release package # if [ -z "${My_dir}" ] then [ -d /tmp/Prebuild.$$ ] && rm -r /tmp/Prebuild.$$ mkdir /tmp/Prebuild.$$ cd /tmp/Prebuild.$$ cvs -d ${CDF_CVSROOT} -Q checkout Release/Scripts if [ -f /tmp/Prebuild.$$/Release/Scripts/Prebuild_new_release ] then My_dir=/tmp/Prebuild.$$/Release/Scripts; export My_dir else echo ' ERROR: Failed to get Release scripts for use' cd [ -d /tmp/Prebuild.$$ ] && rm -r /tmp/Prebuild.$$ exit fi # exec ${My_dir}/Prebuild_new_release fi [ `${My_dir}/which cvs | wc -w` -gt 1 ] && setup cvs v1_11_1p1 SRT_REP=`${My_dir}/Find_cvs_root SRT-REP | cut -f1 -d','` #NEW_REL=/tmp/Prebuild.$$/SoftRelTools/scripts/newrel NEW_REL=newrel #NewVer=/tmp/Prebuild.$$/SoftRelTools/scripts/newver; export NewVer NewVer=newver; export NewVer # # Find some place to work # My_work_space=`${My_dir}/define_work_area` if [ "${My_work_space}" = "" ]; then echo 'Unable to define work space' [ -d /tmp/Prebuild.$$ ] && rm -r /tmp/Prebuild.$$ exit 1 else echo Using ${My_work_space} fi # # Get latest revision of Releases package # cd ${My_work_space} if [ -d Release ]; then rm -r Release fi if [ "${revision}" != "" ] then cvs -Q checkout -r ${revision} Release/Releases/${release}.newrel else cvs -Q checkout Release/Releases/${release}.newrel fi # # Is everything ready? # if [ -f ${My_work_space}/Release/Releases/${release}.newrel ]; then [ -f ${My_work_space}/Release/Releases/${release}.newlinks ] && \ cp ${My_work_space}/Release/Releases/${release}.newlinks ${HOME} cp ${My_work_space}/Release/Releases/${release}.newrel ${HOME} fi [ -d ${My_work_space}/Release ] && rm -r ${My_work_space}/Release if [ ! -f ${HOME}/${release}.newrel ]; then echo echo ERROR: The required ${release} definition files are not available [ -d /tmp/Prebuild.$$ ] && rm -r /tmp/Prebuild.$$ exit fi # # Determine if release specific files are up to date. # #if [ ! -z "`grep Visualization ${HOME}/${release}.newver`" ]; then # echo '' # echo \${HOME}/${release}.\* files not up to date. # echo Please update these files. # echo '' # exit 1 #fi #--------------------------------------------- # Make sure there is space for the release in # ${CDFSOFT2_DIR}: see notes at bottom. #---------------------------------------------- cd ${SRT_DIST}/releases if [ -z "`ups list -KVersion cdfsoft2 ${release}`" ]; then echo '====================================' echo Approximate space required in KBytes echo echo " 6 GB Linux " echo " 10 GB IRIX " # du -ks development echo echo Current space utilization echo '====================================' df -h ${HOME} echo echo 'Is sufficient space available for the release (y, or n)\? [n]' read reply if [ x$reply = x ]; then reply=no fi rep=`echo $reply|cut -c1` if [ $rep != y -a $rep != Y ]; then echo Exiting by request - space available: $reply [ -d /tmp/Prebuild.$$ ] && rm -r /tmp/Prebuild.$$ exit fi fi # ------------------------------------------------- # Remove Visualization from files, if not supported # ------------------------------------------------- if [ ! -d ${SRT_DIST}/packages/Visualization/development ]; then if [ -f ${HOME}/${release}.newrel ]; then ed ${HOME}/${release}.newrel </dev/null /Visualization .d w q EdCmDr fi fi #--------------------------- # Bring new packages to disk #--------------------------- [ -f ${HOME}/${release}.newver.log ] && rm ${HOME}/${release}.newver.log if [ -f ${HOME}/${release}.newver ]; then chmod +x ${HOME}/${release}.newver ${HOME}/${release}.newver 2>&1 | tee ${HOME}/${release}.newver.log elif [ -f ${My_dir}/Rel_newver ]; then ${My_dir}/Rel_newver ${HOME}/${release}.newrel | \ tee ${HOME}/${release}.newver.log fi if [ -f ${HOME}/newver.errors ] then echo '' cat ${HOME}/newver.errors [ -d /tmp/Prebuild.$$ ] && rm -r /tmp/Prebuild.$$ exit fi #----------------------------------------------- # create the soft links that define the release #----------------------------------------------- cd ${SRT_DIST}/releases if [ ! -d ${SRT_DIST}/releases/${release} ]; then ${NEW_REL} -plf ${HOME}/${release}.newrel ${release} elif [ -x ${My_dir}/rel_link.new ] then ${My_dir}/rel_link.new ${release} elif [ -f ${HOME}/${release}.newlinks ]; then ${My_dir}/rel_link ${release} fi rebuild="yes" exist="`ls ${SRT_DIST}/releases/${release}/tmp | grep $tcomp`" [ -z "${exist}" ] && rebuild=no #chmod 755 ${CDFSOFT2_DIR}/Distribution/cdfsoftups/products if [ ! -d ${release}/ups ]; then mkdir ${release}/ups fi if [ ! -d ${release}/results ];then mkdir ${release}/results fi if [ ! -f ${release}/ups/cdfsoft2.table ] then cp ${release}/Distribution/cdfsoftups/cdfsoft2.table ${release}/ups fi if [ -f ${release}/SoftRelTools/include/platforms/Linux2.mk ] then [ ! -f ${release}/SoftRelTools/include/platforms/Linux2_SL.mk ] && \ cp ${release}/SoftRelTools/include/platforms/Linux2.mk \ ${release}/SoftRelTools/include/platforms/Linux2_SL.mk fi # -------------------------------------------------------- # If ups database entry does not exist, attempt to declare # -------------------------------------------------------- if [ -z "`ups list -KVersion cdfsoft2 ${release}`" ]; then ups declare -C -r '~cdfsoft'/dist/releases/${release} -z ${HOME}/upsdb \ -2 -m cdfsoft2.table cdfsoft2 ${release} fi #----------------------- # Create validation area #----------------------- [ ! -d ${SRT_DIST}/valfiles/${release} ] && mkdir ${SRT_DIST}/valfiles/${release} if [ -d ${SRT_DIST}/valfiles/${release} ] then cd ${SRT_DIST}/valfiles/${release} if [ -f ${SRT_DIST}/releases/${release}/Validation/link_data_new ] then ${SRT_DIST}/releases/${release}/Validation/link_data_new else ${SRT_DIST}/releases/${release}/Validation/link_data fi fi chmod 755 ${SRT_DIST}/releases/${release}/Distribution/cdfsoftups/products [ ! -d "${HOME}/maint/log/ups" ] && mkdir -p ${HOME}/maint/log/ups rm -f ${HOME}/maint/log/ups/${release}.log ups configure cdfsoft2 ${release} 2>&1 | tee ${HOME}/maint/log/ups/${release}.log #------------------------------------------------------ # Output continuation info for cut and paste operation #------------------------------------------------------ if [ "${NODE}" = fcdfcaf553 ] then opts='p=6 E=3' elif [ ${NODE} = fcdfsgi2 ] then opts='p=8' elif [ ${NODE} = fcdfdev ] then opts='p=6 E=4' elif [ ${NODE} = fcdfcode ] then opts='p=6 E=4' elif [ ${NODE} = cdfcode ] then opts='p=6 E=3' else opts='' fi [ -n "${Qual}" ] && opts="Q=${Qual} ${opts}" [ -n "${compiler}" ] && opts="c=${compiler} ${opts}" [ "${rebuild}" = "yes" ] && opts="clean ${opts}" echo echo If all is well at this stage, continue with: echo echo cd ${SRT_DIST}/releases/${release}/results echo '' echo "../Release/Scripts/Build_release ${release} ${opts} \\" echo " " \> Build.log 2\>\&1 \& echo '' chmod 644 ${HOME}/dist/releases/development/Distribution/srt2/.cvspass echo tail -f Build.log echo } # End of MAIN [ -r ${HOME}/maint/log/prebuild/${release}.log ] && \ mv ${HOME}/maint/log/prebuild/${release}.log \ ${HOME}/maint/log/prebuild/${release}.log.`date +%Y%m%d%H%M` [ -f ${HOME}/${release}.newver.log ] && mv ${HOME}/${release}.newver.log \ ${HOME}/maint/log/prebuild/${release}.newver.log [ -f ${HOME}/${release}.newrel ] && rm ${HOME}/${release}.newrel MAIN 2>&1 | tee ${HOME}/maint/log/prebuild/${release}.log [ -f ${HOME}/${release}.newrel ] && rm ${HOME}/${release}.newrel [ -d /tmp/Prebuild.$$ ] && rm -r /tmp/Prebuild.$$ exit 0 2003 12 11 debaun Removed dependence on development release with associated cleanup No longer checkout entire Release/Releases area. Only one file needed. 2003 09 05 kreymer Added logging to maint/log/prebuild Removed unneeded old_dir Change BFDIST to SRT_DIST Added brackets to My_work_space, HOME, UPS_DIR, release, PROJECT_DIR, CDFSOFT2_DIR, Quoted release in the test Removed commented-out kerberos tests Removed commented-out tagging code Removed request to set up development, changed to a test