#!/bin/bash LC_COLLATE="C" progname="${0##*/}" warn () { [ "$1" ] && echo >&2 [ "$1" ] && echo "$progname: $1" >&2 [ "$1" ] && echo >&2 } fatal () { warn "$2" exit "$1" } usage () { cat < where is a tag of the lustre-core module and is an optional quoted timestamp suitable for cvs -D EOF } if [ -z "$LUSTRECVS_UPDATED" ] ; then echo "$progname: updating lustrecvs" cvs up -l || fatal 1 "Error updating lustrecvs" export LUSTRECVS_UPDATED=yes exec "$0" "$@" fi [ "$1" = "-r" ] && shift buildtag="HEAD" lustretag="$1" shift pindate=$1 shift if [ "$*" ] ; then usage >&2 exit 1 fi case "$lustretag" in '') warn "a lustretag is required." usage >&2 exit 1 ;; --help | -h) usage exit 0 ;; # this is the branch table # keep this list sorted alphabetically! # These use special build directories b1_4*) buildtag="b1_4" ;; b_release_1_4_6-patchless) buildtag="b1_4" ;; b_release_1_4_7-test) buildtag="b_release_1_4_7" ;; b_release*) buildtag=$lustretag ;; b_uoss) buildtag=$lustretag ;; # These releases did not get build tagged for them because they # this build system didn't exist when they were tagged v1_2_8|v1_4_0) buildtag="b1_4" ;; v*) buildtag=$lustretag ;; # this is the branch table # keep this list sorted alphabetically! *) buildtag="HEAD" ;; esac error_modules= cvs_cmd () { dir="$1" module="$2" tag="$3" cotag="" update="" if [ "$tag" = "HEAD" ] ; then cotag="" uptag="-A" elif [ "$tag" ] ; then cotag="-r $tag" uptag="-r $tag" else # silently skip if no tag was specified return fi # create a cvs date format that will survive shell expansion if [ -n "$pindate" ]; then datecmd=$(date -u +%s -d "$pindate") datecmd="-D @$datecmd" else datecmd="" fi if [ -d "$dir" ] ; then echo "$progname: Updating $dir to $tag" ( cd "$dir" && cvs up $datecmd -dAP $uptag ) else echo "$progname: Checking out $dir from $tag" cvs co $datecmd -P $cotag -d "$dir" "$module" fi if [ $? != 0 ] ; then error_modules="$dir $error_modules" fi } cvs_cmd build lustre-build "$buildtag" if [ -f build/buildcvs ] ; then . build/buildcvs else fatal 1 "build/buildcvs does not exist; not updating other modules." fi if [ "$error_modules" ] ; then fatal 1 "There were errors checking out the following directories: $error_modules" fi