#! /bin/sh # debug #set -x # stop on errors set -e path=`dirname $0` # repository direcotry repo_dir=`pwd` # build directory build_dir="$HOME/mydev" wine_build_dir="F:/mydev" # doc directory doc_dir="$repo_dir/../mysqldoc" # init target_dir="" temp_dir="" revision="" rev="" build="" suffix="" mwenv="" # show usage show_usage() { cat << EOF usage: nwbootstrap [options] Exports a revision of the BitKeeper tree (nwbootstrap must be run inside a directory of the BitKeeper tree to be used). Creates the ChangeLog file. Adds the latest manual.texi from the mysqldoc BitKeeper tree. Builds the Linux tools required for cross-platform builds. Optionally, builds the binary distributions for NetWare. options: --build=<opt> Build the binary distributions for NetWare, where <opt> is "standard", "debug", or "all" (default is to not build a binary distribution) --build-dir=<dir> Export the BitKeeper tree to the <dir> directroy (default is "$build_dir") --doc-dir=<dir> Use the mysqldoc BitKeeper tree located in the <dir> directory (default is parallel to current BitKeeper tree) --help Show this help information --revision=<rev> Export the BitKeeper tree as of revision <rev> (default is the latest revision) --wine-build-dir=<dir> Use the WINE directory <dir>, which should correspond to the --build-dir directory (default is "$wine_build_dir") examples: nwbootstrap nwbootstrap --revision=1.1594 --build=all nwbootstrap --build-dir=/home/jdoe/dev --wine-build-dir=F:/dev EOF exit 0; } # parse arguments for arg do case "$arg" in --build-dir=*) build_dir=`echo "$arg" | sed -e "s;--build-dir=;;"` ;; --wine-build-dir=*) wine_build_dir=`echo "$arg" | sed -e "s;--wine-build-dir=;;"` ;; --revision=*) revision=`echo "$arg" | sed -e "s;--revision=;;"` ;; --build=*) build=`echo "$arg" | sed -e "s;--build=;;"` ;; --suffix=*) suffix=`echo "$arg" | sed -e "s;--suffix=;;"` ;; --doc-dir=*) doc_dir=`echo "$arg" | sed -e "s;--doc-dir=;;"` ;; *) show_usage ;; esac done echo "starting build..." # check for bk and repo_dir bk help > /dev/null repo_dir=`bk root $repo_dir` cd $repo_dir doc_dir="$repo_dir/../mysqldoc" # build temporary directory temp_dir="$build_dir/mysql-$$.tmp" # export the bk tree command="bk export"; if test $revision; then command="$command -r$revision"; fi command="$command $temp_dir" echo "exporting $repo_dir..." $command # determine version version=`grep -e "AM_INIT_AUTOMAKE(mysql, .*)" < $temp_dir/configure.in | sed -e "s/AM_INIT_AUTOMAKE(mysql, \(.*\))/\1/"` echo "version: $version" # build target directory target_dir="$build_dir/mysql-$version" # add suffix if test $suffix then target_dir="$target_dir-$suffix" fi # delete any old target if test -d $target_dir.old; then rm -rf $target_dir.old; fi # rename old target if test -d $target_dir; then mv -f $target_dir $target_dir.old; fi # rename directory to use version mv $temp_dir $target_dir # create ChangeLog if test $revision then rev=`bk changes -r..$revision -t -d':REV:' -n | head -2 | tail -1` else rev=`bk changes -t -d':REV:' -n | head -1` fi echo "creating ChangeLog..." bk changes -v -r$rev..$revision > $target_dir/ChangeLog # add the latest manual if test -d $doc_dir then echo "adding the latest manual..." install -m 644 $doc_dir/Docs/{manual,reservedwords}.texi $target_dir/Docs/ fi # make files writeable echo "making files writable..." cd $target_dir chmod -R u+rw,g+rw . # edit the mvenv file echo "updating the mwenv environment file..." mwenv="./netware/BUILD/mwenv" mv -f $mwenv $mwenv.org sed -e "s;WINE_BUILD_DIR;$wine_build_dir;g" \ -e "s;BUILD_DIR;$build_dir;g" \ -e "s;VERSION;$version;g" $mwenv.org > $mwenv chmod +rwx $mwenv # edit the def file versions echo "updating *.def file versions..." nlm_version=`echo "$version" | sed -e "s;\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*;\1, \2, \3;"` for file in ./netware/*.def do mv -f $file $file.org sed -e "s;VERSION.*;VERSION $nlm_version;g" $file.org > $file rm $file.org done # create the libmysql.imp file in netware folder from libmysql/libmysql.def # file echo "generating llibmysql.imp file..." awk 'BEGIN{x=0;} x==1 {print $1;next} /EXPORTS/{x=1}' libmysql/libmysql.def > netware/libmysql.imp # build linux tools echo "compiling linux tools..." ./netware/BUILD/compile-linux-tools # compile if test $build then echo "compiling $build..." ./netware/BUILD/compile-netware-$build fi echo "done"