branch="master" while getopts "hb:c:" opt; do case $opt in h) echo "Usage: $0 [-h] [-b ] -c " exit 1 ;; b) branch=$OPTARG ;; c) changelist=$OPTARG ;; /?) echo "Invalid option: -$OPTARG" >&2; exit 1 ;; :) echo "Option -$OPTARG requires an argument"; exit 1 ;; esac done if [ "$changelist" == "" ]; then echo "Missing required option -c to specify P4 changelist to put changed files into" exit 1 fi # Cause script to exit on any command that results in an error set -e echo "Downloading thrust code from the $branch branch into /tmp/thrust-${branch}" rm -rf /tmp/thrust-${branch} git clone -q git://github.com/thrust/thrust.git -b ${branch} /tmp/thrust-${branch} cd `dirname $0`/../.. echo "Changed current directory to `pwd`" vulcan_files=`echo *.vlcc *.vlct` logdir=`mktemp -d /tmp/tmp.XXXXXXXX` echo "Logging p4 command outputs to temporary directory $logdir" for i in *; do if [[ "$i" != "internal" && "$i" != "Makefile" ]]; then ii="$i"; if [ -d $i ]; then ii="$i/..."; fi echo "Reverting, force syncing, and then removing $ii" p4 revert $ii >> $logdir/$i.revert.log 2>&1 p4 sync -f $ii >> $logdir/$i.sync.log 2>&1 rm -rf $i fi done echo "Copying downloaded thrust code to p4 client" cp -R /tmp/thrust-${branch}/* . find . -name ".gitignore" | xargs -n 1 rm echo "Checking if version has been bumped" new_version=`grep "#define THRUST_VERSION" thrust/version.h | sed -e "s/#define THRUST_VERSION //"` old_version=`p4 print thrust/version.h | grep "#define THRUST_VERSION" | sed -e "s/#define THRUST_VERSION //"` if [ "$new_version" != "$old_version" ]; then p4 edit internal/test/version.gold new_version_print="$(( $new_version / 100000 )).$(( ($new_version / 100) % 1000 )).$(( $new_version % 100 ))" sed -e "s/v[0-9\.][0-9\.]*/v${new_version_print}/" internal/test/version.gold > internal/test/version.gold.tmp mv internal/test/version.gold.tmp internal/test/version.gold echo "Updated version.gold to version $new_version_print" else echo "Version has not changed" fi echo "Reconciling changed code into changelist $changelist" p4 reconcile -c $changelist ... >> $logdir/reconcile.log 2>&1 p4 revert -c $changelist Makefile $vulcan_files internal/... >> $logdir/internal_files_revert.log 2>&1 echo "Looking for examples that were added" for e in `find examples -name "*.cu"`; do if [ ! -e internal/build/`basename $e .cu`.mk ]; then echo "ADDED: `basename $e .cu`"; fi done echo "Looking for examples that were deleted or moved" for e in `find internal/build -name "*.mk"`; do ee=`basename $e .mk` case "$ee" in generic_example | unittester* | warningstester) continue;; esac if [ "`find examples -name $ee.cu`" == "" ]; then echo "DELETED: $ee"; fi; done