#!/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 pacakge, tag, and change mark # # usage: changed_packages.csh date output_file # # input parameters: $1 date in the form dd-mmm-yyyy, like 26-Jan-1998. # This is the reference date for changes. # $2 output file name (for example 2.5.0 for release 2.5.0) # $3 date in the form dd-mm-yyyy - controls date of revision # to tag. Defaults to the value retuened by Make_midnight # which should approximate midnight. # # output: output_file.tags: script that will cvs rtag packages with new tags # output_file.newver: script that will cvs import packages using newver # output_file.newrel: file to be used with newrel -f to create release # output_file.doc: file to serve as documentation # # Scripts: Find_cvs_root # Make_midnight # Get_last_tag_from_file # make_new_tag # # Initialize output files ref_date=$1 release=$2 date=$3 if [ -z "$ref_date" ] then parerr=1 fi if [ -z "$release" ] then parerr=1 fi if [ "$parerr" = "1" ] then echo '' echo $0 reference-date release '[tag-date (yesterday)]' 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 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 # --Second group: packages beginning with A-Z,a-c #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 product since date # ------------------------------------------- if [ ! -r $Repository.History ] then cvs $cvs_svr_args history -x AMR -a -D $ref_date > $Repository.History fi num=`egrep " "$prod" | "$prod/ $Repository.History | wc -l` # # It is possible that the product was updated via cvs checkin # rather than commit. Check that out. # if [ ${num} -eq 0 ] then num=`ssh cdfsoft@cdfsga \ "\$BFDIST/releases/development/Release/Scripts/Find_revisions_from_log \ $prod $ref_date"` fi # # 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 -a -D'\"$date\" $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 for ext in doc newrel newver tags do cp ${work_space}/${release}.${ext} . chmod +x ${release}.${ext} if [ "$add_release" = "yes" ] then cvs add ${release}.${ext} fi done # # Empty the newlinks file, if present # ----------------------------------- # if [ -f ${release}.newlinks ] then rm ${release}.newlinks echo '' > ${release}.newlinks 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