mariadb/ndb/home/bin/import-from-bk.sh
unknown 6386c55cee Initial revision of NDB Cluster files
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
2004-04-14 10:53:21 +02:00

158 lines
2.9 KiB
Bash
Executable file

#! /bin/sh
# XXX does not delete files
# XXX does not handle nested new dirs
# this script screams for perl, no time now
# look for bk2cvs on the net
PATH=/usr/local/bin:$PATH; export PATH
LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
batch=n
if [ "$1" = "-batch" ]; then
batch=y
shift
fi
say() {
echo "$*"
}
die() {
case $# in
0) set -- "command failed" ;;
esac
say "$* -- aborted" >&2
exit 1
}
usage() {
die "usage: $0 [-batch] top -- copy from mysql/ndb to another NDB_TOP"
}
doit() {
cmd="$*"
if [ $batch = n ]; then
echo -n "$cmd [y]"
read junk
sh -c "$cmd"
return 0
else
echo "$cmd"
sh -c "$cmd"
return $?
fi
}
say "======================"
say "`date`"
case $# in
1) [ -d $1/src/CVS ] || die "$1 is not an NDB_TOP"
top=$1 ;;
*) usage ;;
esac
if ! fgrep ndb_kernel_version.h $top/include/kernel/CVS/Entries >/dev/null 2>&1; then
die "$top is not an NDB_TOP"
fi
if find $top -path '*/CVS/Tag' -print | grep . >/dev/null; then
die "$top: contains CVS/Tag files, not accepted"
fi
if [ ! -f include/SCCS/s.ndb_version.h ]; then
die "current dir ($PWD) is not an NDB_TOP"
fi
doit "bk pull" || exit 1
doit "bk -r clean"
doit "bk -r get -q"
files=`bk -r. sfiles -g |
fgrep -v ' ' |
fgrep -v /.cvsignore`
n=0
files2=
for f in $files; do
if [ ! -f $f ]; then
die "$f: no such file"
fi
if [ -w $f ]; then
say "$f: is writable, accept anyway"
fi
files2="$files2 $f"
n=$((n+1))
done
files=$files2
say "$n files..."
adddirs= addfiles= updfiles=
for f in $files; do
d=`dirname $f`
b=`basename $f`
if [ ! -f $top/$d/CVS/Entries ]; then
found=n
for x in $adddirs; do
if [ $x = $d ]; then found=y; break; fi
done
if [ $found = n ]; then
say "$d: to create dir"
adddirs="$adddirs $d"
fi
addfiles="$addfiles $f"
say "$f: to create"
elif ! fgrep "/$b/" $top/$d/CVS/Entries >/dev/null; then
addfiles="$addfiles $f"
say "$f: to create"
else
cmp $f $top/$f >/dev/null
case $? in
0) continue ;;
1) ;;
*) die "$f: unknown error" ;;
esac
updfiles="$updfiles $f"
say "$f: to update"
fi
done
for d in $adddirs; do
doit "cd $top && mkdir -p $d" || die
done
for f in $addfiles $updfiles; do
doit "cp -fp $f $top/$f" || die
done
for d in $adddirs; do
# fix 1 level up
d2=`dirname $d`
if [ ! -d $top/$d2/CVS ]; then
doit "cd $top && cvs add $d2" || die
fi
doit "cd $top && cvs add $d" || die
done
for f in $addfiles; do
kb=
if echo $f | perl -nle "print(-B $_)" | grep 1 >/dev/null; then
kb="-kb"
fi
doit "cd $top && cvs add $kb $f" || die
done
tag=import_bk_`date +%Y_%m_%d`
doit "cd $top && cvs commit -m $tag" || die
doit "cd $top && cvs tag -F $tag" || die
env="NDB_TOP=$top; export NDB_TOP"
env="$env; USER_FLAGS='-DAPI_TRACE -fmessage-length=0'; export USER_FLAGS"
doit "$env; cd $top && ./configure"
doit "$env; cd $top && sh config/GuessConfig.sh"
doit "$env; cd $top && make clean nuke-deps vim-tags"
doit "$env; cd $top && make" || die
say "imported ok"