mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
158 lines
2.9 KiB
Bash
Executable file
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"
|