Skip to content
Snippets Groups Projects
lustrecvs 2.02 KiB
Newer Older
jacob's avatar
jacob committed
#!/bin/sh

LC_COLLATE="C"
jacob's avatar
jacob committed
progname="${0##*/}"

warn ()
{
    [ "$1" ] && echo >&2
    [ "$1" ] && echo "$progname: $1" >&2
    [ "$1" ] && echo >&2
}

fatal ()
{
    warn "$2"
    exit "$1"
}

usage ()
{
    cat <<EOF
Usage: $progname <lustretag>
  where <lustretag> is a tag of the lustre-core module
jacob's avatar
jacob committed
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

Andreas Dilger's avatar
Andreas Dilger committed
[ "$1" = "-r" ] && shift

jacob's avatar
jacob committed
buildtag="HEAD"
jacob's avatar
jacob committed
lustretag="$1"
jacob's avatar
jacob committed

jacob's avatar
jacob committed
case "$lustretag" in
jacob's avatar
jacob committed
    '')
        warn "a lustretag is required."
	usage >&2
	exit 1
	;;
    --help | -h)
	usage
	exit 0
	;;

    b1_4_newconfig*|b_newconfig_rdmarouting*|b1_4_mountconf*)
pjkirner's avatar
 
pjkirner committed
        buildtag="b_lnet"
        ;;

    # These releases use the b_lnet build
    v1_4_5_91)
        buildtag="b_lnet"
        ;;

    # Apparently these releases did not get build tagged for them...
    v1_2_8|v1_4_0) 
        buildtag="HEAD"
        ;;
        
Andreas Dilger's avatar
Andreas Dilger committed
    v*) buildtag=$lustretag ;;

jacob's avatar
jacob committed
    # this is the branch table
    # keep this list sorted alphabetically!

jacob's avatar
jacob committed
	;;

jacob's avatar
jacob committed
esac

jacob's avatar
jacob committed
error_modules=
jacob's avatar
jacob committed
cvs_cmd ()
{
jacob's avatar
jacob committed
    dir="$1"
    module="$2"
    tag="$3"
    cotag=""
    update=""
jacob's avatar
jacob committed

jacob's avatar
jacob committed
    if [ "$tag" = "HEAD" ] ; then
	cotag=""
	uptag="-A"
jacob's avatar
jacob committed
    elif [ "$tag" ] ; then
jacob's avatar
jacob committed
	cotag="-r $tag"
	uptag="-r $tag"
jacob's avatar
jacob committed
    else
	# silently skip if no tag was specified
	return
jacob's avatar
jacob committed
    if [ -d "$dir" ] ; then
jacob's avatar
jacob committed
	echo "$progname: Updating $dir to $tag"
	( cd "$dir" && cvs up -dP $uptag )
jacob's avatar
jacob committed
    else
jacob's avatar
jacob committed
	echo "$progname: Checking out $dir from $tag"
jacob's avatar
jacob committed
	cvs co -P $cotag -d "$dir" "$module"
jacob's avatar
jacob committed
    fi
jacob's avatar
jacob committed
    if [ $? != 0 ] ; then
	error_modules="$dir $error_modules"
    fi
jacob's avatar
jacob committed
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
jacob's avatar
jacob committed

if [ "$error_modules" ] ; then
    fatal 1 "There were errors checking out the following directories: $error_modules"
fi