#!/bin/sh # # This script will count the number of changes for each package and printout # a list of packages, the number of changes, and the last tag placed on the # package. It will also create an output file with package, tag, and change mark # # usage: Changed_packages.csh Reference-release new-release effective-date/time # # input parameters: $1 Release name to base the change detection on. # Any changes since this release will be used to # trigger the retag of the packages. # $2 The new release name. ( zb 3.11.0 ) # $3 date in the form dd-mm-yyyy - controls date of revision # to tag. Defaults to the value returned by Make_midnight # which should approximate midnight. # # output: new-release.tags: script that will cvs rtag packages with new tags # new-release.newver: script that will cvs import packages using newver # new-release.newrel: file to be used with newrel -f to create release # new-release.doc: file to serve as documentation # # Scripts: Find_cvs_root # Make_midnight # Find_package_changes # Get_last_tag_from_file # make_new_tag # # Initialize output files ref_rel=$1 release=$2 date=$3 if [ -z "$ref_rel" ] then parerr=1 elif [ "`echo $ref_rel|grep '.'`" = "" ] then parerr=1 fi if [ -z "$release" ] then parerr=1 fi if [ "$parerr" = "1" ] then echo '' echo $0 reference-release release '[tag-date (midnight)]' exit 1 fi if [ "$CDFSOFT2_DIR" = "" ] then UPS_SHELL=sh; export UPS_SHELL . `$UPS_DIR/bin/ups setup ups` setup cdfsoft2 development if [ "$CDFSOFT2_DIR" = "" ] then echo Please setup cdfsoft2 development before running changed_packages. exit 1 fi fi My_dir=${BFDIST}/releases/development/Release/Scripts Rel_dir=${BFDIST}/releases/development/Release/Releases if [ "$date" = "" ] then date=`${My_dir}/Make_midnight` fi work_space=`${My_dir}/define_work_area` if [ "$work_space" = "" ] then echo Unable to define temporary work space exit 1 else echo Using $work_space as temporary area fi if [ ! -d ${My_dir} ] then My_dir=`${My_dir}/make_my_dir $0` fi cd $work_space rm -f CDF.History OSS.History SRT.History ZOOM.History rm -f CDF.THistory OSS.THistory SRT.THistory ZOOM.THistory rm -f $release.tags $release.newver $release.newrel $release.doc touch $release.tags $release.newver $release.newrel $release.doc echo '' echo Using $ref_date as beginning reference date for changes echo Using $release as release name echo Using $date as last repository revision date to tag. echo '' echo '#!/bin/sh' >> $release.tags #echo 'UPS_SHELL=sh; export UPS_SHELL' >> %release.tags #echo '$UPS_DIR/bin/ups setup cdfsoft2 development' >> $release.tags echo 'CVS_SSH1=$CVS_RSH' >> $release.tags echo '#!/bin/sh' >> $release.newver echo 'UPS_SHELL=sh;export UPS_SHELL' >> $release.newver echo ". \$HOME/cdf2.shrc" >> $release.newver echo 'setup cdfsoft2 development' >> $release.newver echo 'CVS_SSH1=$CVS_RSH' >> $release.newver # #stdfiles=" GNUmakefile ReleaseLog " #stddirs=" tmp bin lib include man doc results ups " #stdfildirs="$stdfiles $stddirs" DEF_CVSRSH=$CVS_RSH #cdf_prods=`ls -d $BFDIST/releases/$BFCURRENT/* | awk -F/ '{print $NF}'` cdf_prods=`cat $BFDIST/releases/$BFCURRENT/Distribution/packages` # for each product find the version used in this release: for prod in $cdf_prods do set `${My_dir}/Find_cvs_root $prod | sed 's%,% %g'` cvs_svr_args="-d $1" tag_cvs_srv_args="-d $2" Repository=$3 # # get number of changes to package since tag was placed # on this package in reference-release # ----------------------------------------------------- Ref_tag=`grep "^${prod} " ${Rel_dir}/${ref_rel}.newrel | cut -f2- -d' '` num=`${My_dir}/Find_package_changes $prod $Ref_tag $date` # # get most recent tag that is currently on product # ------------------------------------------------ if [ ! -r $Repository.THistory ] then cvs $cvs_svr_args history -T -a > $Repository.THistory fi tag=`${My_dir}/Get_last_tag_from_file $prod $Repository.THistory` if [ "${tag}" = "" ]; then echo "" echo Cannot retrieve current tag on $prod echo "" echo " Skipping $prod" continue fi # # Force tagging of Release package, because its changing now # ---------------------------------------------------------- if [ "${Prod}" = "Release" ]; then if [ $num -eq 0 ]; then num=1 fi fi # # Check for changes # ------------------ if [ $num -eq 0 ]; then # # No Changes, let the user know # ----------------------------- echo $prod has no changes and tag $tag else # # Increment tag # ------------- tag2=`${My_dir}/make_new_tag $tag` # # Changes, let the user know old and new tags to check them # ------------------------------------------------- echo $prod has $num changes, old tag $tag, and new tag $tag2 # # Set the tag to be the new tag # ----------------------------- tag=$tag2 fi # # Write the package and new tag to the output files # ------------------------------------------------- echo $prod $tag >> $release.newrel if [ "${prod}" = "Release" ]; then echo 'cvs ' $tag_cvs_srv_args ' rtag '$tag ' ' $prod >> $release.tags elif [ $num -gt 0 ]; then echo 'cvs ' $tag_cvs_srv_args ' rtag ' -D\"$date\" -a $tag ' ' $prod >> \ $release.tags fi echo 'if [ ! -d $BFDIST/packages/'${prod}/${tag} ']' >> $release.newver echo 'then' >> $release.newver echo ' newver -Q -p ' $cvs_svr_args $prod $tag >> $release.newver echo 'fi' >> $release.newver prdl=`expr "$prod " : '\(........................\).*'` if [ $num -eq 0 ]; then echo "${prdl}${tag}" >> $release.doc else echo "${prdl}${tag}" ' *'${num}' changes' >> $release.doc fi done echo '' echo 'Updating the cvs repository' echo '' cvs -Q checkout Release cd Release/Releases add_release=no if [ ! -f ${release}.newrel ] then add_release=yes fi cp ${work_space}/${release}.* . chmod +x ${release}.* if [ "$add_release" = "yes" ] then cvs add ${release}.* fi cvs commit -m "Added ${release}. files to Release package" echo '' echo Cleaning up $work_space echo '' cd $work_space rm -r Release rm -f CDF.History OSS.History SRT.History ZOOM.History rm -f CDF.THistory OSS.THistory SRT.THistory ZOOM.THistory #rm -f $release.tags $release.newver $release.newrel $release.doc