X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustrecvs;h=a76333ee53fa97c55e5ea5226461fae19b2068c1;hp=b2b21f56b80a727dc8cd19762051e50a071478de;hb=06ddb8ee6eb29f862755a3e9c15aca7ca5d9e678;hpb=f2083ec37f1b140b8e8df3d1301bc67fa6c555fe diff --git a/lustrecvs b/lustrecvs index b2b21f5..a76333e 100755 --- a/lustrecvs +++ b/lustrecvs @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash LC_COLLATE="C" progname="${0##*/}" @@ -19,8 +19,9 @@ fatal () usage () { cat < + where is a tag of the lustre-core module + and is an optional quoted timestamp suitable for cvs -D EOF } @@ -31,8 +32,18 @@ if [ -z "$LUSTRECVS_UPDATED" ] ; then exec "$0" "$@" fi +[ "$1" = "-r" ] && shift + buildtag="HEAD" lustretag="$1" +shift +pindate=$1 +shift + +if [ "$*" ] ; then + usage >&2 + exit 1 +fi case "$lustretag" in '') @@ -48,12 +59,34 @@ case "$lustretag" in # 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" @@ -63,19 +96,75 @@ cvs_cmd () update="" if [ "$tag" = "HEAD" ] ; then - cotag="" - uptag="-A" + cotag="" + uptag="-A" + elif [ "$tag" ] ; then + cotag="-r $tag" + uptag="-r $tag" else - cotag="-r $tag" - uptag="-r $tag" + # 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 -dP $uptag ) + 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 +} + +hg_cmd () +{ + dir="$1" + base_url="$2" + repository="$3" + + if [ ! "$repository" ]; then + return + fi + + url="$base_url/$repository" + + # create a cvs date format that will survive shell expansion + if [ -n "$pindate" ]; then + datecmd=$(date -u +%s -d "$pindate") + datecmd="-d \"$datecmd 0\"" + else + datecmd="" + fi + + if [ -d "$dir" ]; then + echo "$progname: Updating $dir" + if [ -f "$dir/update.sh" ]; then + ( cd "$dir" && ./update.sh $datecmd ) + else + ( cd "$dir" && hg pull && hg update $datecmd ) + fi else - echo "$progname: Checking out $dir from $tag" - cvs co -P $cotag -d "$dir" "$module" + echo "$progname: Checking out $dir" + hg clone $url $dir + if [ -f "$dir/setup.sh" ]; then + ( cd "$dir" && ./setup.sh $datecmd ) + else + ( cd "$dir" && hg update $datecmd ) + fi + fi + + if [ $? != 0 ] ; then + error_modules="$dir $error_modules" fi } @@ -86,3 +175,7 @@ if [ -f build/buildcvs ] ; then 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