summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorunknown <georg@lmy002.wdf.sap.corp>2006-09-01 14:34:37 +0200
committerunknown <georg@lmy002.wdf.sap.corp>2006-09-01 14:34:37 +0200
commit5d3e6c275857fabffe9e38d979a12017cc257494 (patch)
treeb624943770ca093aa4373ff91f83fddb3b932094 /scripts
parentcce4cc25a9a3927d4d947d4ce006343f4503729e (diff)
downloadmariadb-git-5d3e6c275857fabffe9e38d979a12017cc257494.tar.gz
Fixes for crashes and test failures
scripts/make_win_bin_dist: BitKeeper file /home/georg/work/mysql/prod/mysql-5.0-win/scripts/make_win_bin_dist client/mysqlbinlog.cc: Fix for cmake build: Cmake doesn't use the VC++ files extra/comp_err.c: fixed windows crash (debug): We can't call DBUG_RETURN after my_end. include/my_dbug.h: added missing empty define for DBUG_LEAVE to prevent precompiler errors when compiling in non_debug mode mysql-test/mysql-test-run.pl: Added support for new cmake release and debug paths. mysql-test/t/system_mysql_db_fix.test: This test requires unix shell script mysql_fix_previleges_tables -> skip under windows mysys/my_seek.c: Fix for windows debug crash. However this solution is bad: we should never call lseek with an invalid file pointer. sql/ha_archive.cc: Fixed windows crash: We need dup in gzdopen to keep the filehandle open, otherwise subsequent calls to mysql_close will fail/crash.
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/make_win_bin_dist345
1 files changed, 345 insertions, 0 deletions
diff --git a/scripts/make_win_bin_dist b/scripts/make_win_bin_dist
new file mode 100755
index 00000000000..cc75245e5d9
--- /dev/null
+++ b/scripts/make_win_bin_dist
@@ -0,0 +1,345 @@
+#!/bin/sh
+
+# Exit if failing to copy, we want exact specifications, not
+# just "what happen to be built".
+set -e
+
+# ----------------------------------------------------------------------
+# Read first argument that is the base name of the resulting TAR file.
+# See usage() function below for a description on the arguments.
+#
+# NOTE: We will read the rest of the command line later on.
+# NOTE: Pattern matching with "{..,..}" can't be used, not portable.
+# ----------------------------------------------------------------------
+
+# FIXME FIXME "debug", own build or handled here?
+# FIXME FIXME add way to copy from other builds executables
+
+usage()
+{
+ echo <<EOF
+Usage: make_win_bin_dist [ options ] package-base-name [ copy-defs... ]
+
+This is a script to run from the top of a source tree built on Windows.
+The "package-base-name" argument should be something like
+
+ mysql-noinstall-5.0.25-win32 (or winx64)
+
+and will be the name of the directory of the unpacked ZIP (stripping
+away the "noinstall" part of the ZIP file name if any) and the base
+for the resulting package name.
+
+Options are
+
+ --embedded Pack the embedded server and give error if not built.
+ The default is to pack it if it is built.
+
+ --no-embedded Don't pack the embedded server even if built
+
+ --debug Pack the debug binaries and give error if not built.
+
+ --no-debug Don't pack the debug binaries even if built
+
+ --only-debug The target for this build was "Debug", and we just
+ want to replace the normal binaries with debug
+ versions, i.e. no separate "debug" directories.
+
+ --exe-suffix=SUF Add a suffix to the "mysqld" binary.
+
+As you might want to include files of directories from other builds
+(like a "mysqld-max.exe" server), you can instruct this script do copy
+them in for you. This is the "copy-def" arguments, and they are of the
+form
+
+ relative-dest-name=source-name .....
+
+i.e. can be something like
+
+ bin/mysqld-max.exe=../my-max-build/sql/release/mysqld.exe
+
+If you specify a directory the whole directory will be copied.
+
+EOF
+ exit 1
+}
+
+# ----------------------------------------------------------------------
+# We need to be at the top of a source tree, check that we are
+# ----------------------------------------------------------------------
+
+if [ ! -d "sql" ] ; then
+ echo "You need to run this script from inside the source tree"
+ usage
+fi
+
+# ----------------------------------------------------------------------
+# Actual argument processing, first part
+# ----------------------------------------------------------------------
+
+NOINST_NAME=""
+TARGET="release"
+PACK_EMBEDDED="" # Could be "no", "yes" or empty
+PACK_DEBUG="" # Could be "no", "yes" or empty
+EXE_SUFFIX=""
+
+for arg do
+ shift
+ case "$arg" in
+ --embedded) PACK_EMBEDDED="yes" ;;
+ --no-embedded) PACK_EMBEDDED="no" ;;
+ --debug) PACK_DEBUG="yes" ;;
+ --no-debug) PACK_DEBUG="no" ;;
+ --only-debug) TARGET="debug" ; PACK_DEBUG="no" ;;
+ --exe-suffix=*) EXE_SUFFIX=`echo "$arg" | sed -e "s,--exe-suffix=,,"` ;;
+ -*)
+ echo "Unknown argument '$arg'"
+ usage
+ ;;
+ *)
+ NOINST_NAME="$arg"
+ break
+ esac
+done
+
+if [ x"$NOINST_NAME" = x"" ] ; then
+ echo "No base package name given"
+ usage
+fi
+DESTDIR=`echo $NOINST_NAME | sed 's/-noinstall-/-/'`
+
+if [ -e $DESTDIR ] ; then
+ echo "Please remove the old $DESTDIR before running this script"
+ usage
+fi
+
+# ----------------------------------------------------------------------
+# Copy executables, and client DLL (FIXME why?)
+# ----------------------------------------------------------------------
+
+trap 'echo "Clearning up and exiting..." ; rm -fr $DESTDIR; exit 1' ERR
+
+mkdir $DESTDIR
+mkdir $DESTDIR/bin
+cp client/$TARGET/*.exe $DESTDIR/bin/
+cp extra/$TARGET/*.exe $DESTDIR/bin/
+cp myisam/$TARGET/*.exe $DESTDIR/bin/
+cp server-tools/instance-manager/$TARGET/*.exe $DESTDIR/bin/
+cp tests/$TARGET/*.exe $DESTDIR/bin/
+cp libmysql/$TARGET/*.exe $DESTDIR/bin/
+cp libmysql/$TARGET/libmysql.dll $DESTDIR/bin/
+
+# FIXME really needed?!
+mv $DESTDIR/bin/comp_err.exe $DESTDIR/bin/comp-err.exe
+
+cp sql/$TARGET/mysqld.exe $DESTDIR/bin/mysqld$EXE_SUFFIX.exe
+
+if [ x"$PACK_DEBUG" = "" -a -f "sql/debug/mysqld.exe" -o \
+ x"$PACK_DEBUG" = "yes" ] ; then
+ cp sql/debug/mysqld.exe $DESTDIR/bin/mysqld-debug.exe
+ cp sql/debug/mysqld.pdb $DESTDIR/bin/mysqld-debug.pdb
+ cp sql/debug/mysqld.map $DESTDIR/bin/mysqld-debug.map
+fi
+
+# ----------------------------------------------------------------------
+# Copy data directory, readme files etc
+# ----------------------------------------------------------------------
+
+cp COPYING EXCEPTIONS-CLIENT $DESTDIR/
+
+# FIXME is there ever a data directory to copy?
+if [ -d win/data ] ; then
+ cp -pR win/data $DESTDIR/data
+fi
+
+# FIXME maybe a flag to define "release build", or do the
+# check from the calling script that all these are there,
+# and with the correct content.
+
+mkdir $DESTDIR/Docs
+cp Docs/INSTALL-BINARY $DESTDIR/Docs/
+cp Docs/manual.chm $DESTDIR/Docs/ || /bin/true
+cp ChangeLog $DESTDIR/Docs/ || /bin/true
+cp COPYING $DESTDIR/Docs/
+cp support-files/my-*.ini $DESTDIR/
+
+# ----------------------------------------------------------------------
+# These will be filled in when we enable embedded. Note that if no
+# argument is given, it is copied if exists, else a check is done.
+# ----------------------------------------------------------------------
+
+copy_embedded()
+{
+ mkdir -p $DESTDIR/Embedded/DLL/release \
+ $DESTDIR/Embedded/static/release
+ cp libmysqld/libmysqld.def $DESTDIR/include/
+ cp libmysqld/$TARGET/mysqlserver.lib $DESTDIR/Embedded/static/release/
+ cp libmysqld/$TARGET/libmysqld.dll $DESTDIR/Embedded/DLL/release/
+ cp libmysqld/$TARGET/libmysqld.exp $DESTDIR/Embedded/DLL/release/
+ cp libmysqld/$TARGET/libmysqld.lib $DESTDIR/Embedded/DLL/release/
+
+ if [ x"$PACK_DEBUG" = "" -a -f "libmysqld/debug/libmysqld.lib" -o \
+ x"$PACK_DEBUG" = "yes" ] ; then
+ mkdir -p $DESTDIR/Embedded/DLL/debug
+ cp libmysqld/debug/libmysqld.dll $DESTDIR/Embedded/DLL/debug/
+ cp libmysqld/debug/libmysqld.exp $DESTDIR/Embedded/DLL/debug/
+ cp libmysqld/debug/libmysqld.lib $DESTDIR/Embedded/DLL/debug/
+ fi
+}
+
+if [ x"$PACK_EMBEDDED" = "" -a \
+ -f "libmysqld/$TARGET/mysqlserver.lib" -a \
+ -f "libmysqld/$TARGET/libmysqld.lib" -o \
+ x"$PACK_EMBEDDED" = "yes" ] ; then
+ copy_embedded
+fi
+
+# ----------------------------------------------------------------------
+# FIXME test stuff that is useless garbage?
+# ----------------------------------------------------------------------
+
+mkdir -p $DESTDIR/examples/libmysqltest/release
+cp libmysql/mytest.c libmysql/myTest.vcproj libmysql/$TARGET/myTest.exe \
+ $DESTDIR/examples/libmysqltest/
+cp libmysql/$TARGET/myTest.exe $DESTDIR/examples/libmysqltest/release/
+
+if [ x"$PACK_DEBUG" = "" -a -f "libmysql/debug/myTest.exe" -o \
+ x"$PACK_DEBUG" = "yes" ] ; then
+ mkdir -p $DESTDIR/examples/libmysqltest/debug
+ cp libmysql/debug/myTest.exe $DESTDIR/examples/libmysqltest/debug/
+fi
+
+mkdir -p $DESTDIR/examples/tests
+cp tests/*.res tests/*.tst tests/*.pl tests/*.c $DESTDIR/examples/tests/
+
+# ----------------------------------------------------------------------
+# FIXME why not copy it all in "include"?!
+# ----------------------------------------------------------------------
+
+mkdir -p $DESTDIR/include
+cp include/conf*.h \
+ include/mysql*.h \
+ include/errmsg.h \
+ include/my_alloc.h \
+ include/my_getopt.h \
+ include/my_sys.h \
+ include/my_list.h \
+ include/my_pthread.h \
+ include/my_dbug.h \
+ include/m_string.h \
+ include/m_ctype.h \
+ include/my_global.h \
+ include/typelib.h $DESTDIR/include/
+cp libmysql/libmysql.def $DESTDIR/include/
+
+# ----------------------------------------------------------------------
+# Client libraries, and other libraries
+# FIXME why "libmysql.dll" installed both in "bin" and "lib/opt"?
+# ----------------------------------------------------------------------
+
+mkdir -p $DESTDIR/lib/opt
+cp libmysql/$TARGET/libmysql.dll \
+ libmysql/$TARGET/libmysql.lib \
+ client/$TARGET/mysqlclient.lib \
+ regex/$TARGET/regex.lib \
+ strings/$TARGET/strings.lib \
+ zlib/$TARGET/zlib.lib $DESTDIR/lib/opt/
+
+if [ x"$PACK_DEBUG" = "" -a -f "libmysql/debug/libmysql.lib" -o \
+ x"$PACK_DEBUG" = "yes" ] ; then
+ mkdir -p $DESTDIR/lib/debug
+ cp libmysql/debug/libmysql.dll \
+ libmysql/debug/libmysql.lib \
+ client/debug/mysqlclient.lib \
+ mysys/debug/mysys.lib \
+ regex/debug/regex.lib \
+ strings/debug/strings.lib \
+ zlib/debug/zlib.lib $DESTDIR/lib/debug/
+fi
+
+# FIXME sort this out...
+cp mysys/$TARGET/mysys.lib $DESTDIR/lib/opt/mysys_tls.lib
+
+# ----------------------------------------------------------------------
+# Copy the test directory
+# ----------------------------------------------------------------------
+
+mkdir -p $DESTDIR/mysql-test/include $DESTDIR/mysql-test/lib \
+ $DESTDIR/mysql-test/r $DESTDIR/mysql-test/std_data \
+ $DESTDIR/mysql-test/t
+cp mysql-test/mysql-test-run.pl $DESTDIR/mysql-test/
+cp mysql-test/README $DESTDIR/mysql-test/
+cp mysql-test/install_test_db.sh $DESTDIR/mysql-test/install_test_db
+cp mysql-test/include/*.inc $DESTDIR/mysql-test/include/
+cp mysql-test/lib/*.pl $DESTDIR/mysql-test/lib/
+cp mysql-test/lib/*.sql $DESTDIR/mysql-test/lib/
+cp mysql-test/r/*.require $DESTDIR/mysql-test/r/
+# Need this trick, or we get "argument list too long".
+ABS_DST=`pwd`/$DESTDIR
+(cd mysql-test/r/ && cp *.result $ABS_DST/mysql-test/r/)
+cp mysql-test/std_data/* $DESTDIR/mysql-test/std_data/
+cp mysql-test/t/*.opt $DESTDIR/mysql-test/t/
+cp mysql-test/t/*.sh $DESTDIR/mysql-test/t/
+cp mysql-test/t/*.slave-mi $DESTDIR/mysql-test/t/
+cp mysql-test/t/*.sql $DESTDIR/mysql-test/t/
+cp mysql-test/t/*.def $DESTDIR/mysql-test/t/
+(cd mysql-test/t/ && cp *.test $ABS_DST/mysql-test/t/)
+
+# Note that this will not copy "extra" if a soft link
+if [ -d mysql-test/extra ] ; then
+ mkdir -p $DESTDIR/mysql-test/extra
+ cp -pR mysql-test/extra/* $DESTDIR/mysql-test/extra/
+fi
+
+# ----------------------------------------------------------------------
+# Copy what could be usable in the "scripts" directory. Currently
+# only SQL files, others are bourne shell scripts or Perl scripts
+# not really usable on Windows.
+#
+# But to be nice to the few Cygwin users we might have in 5.0 we
+# continue to copy the stuff, but don't include it include it in
+# the WiX install.
+# ----------------------------------------------------------------------
+
+mkdir -p $DESTDIR/scripts
+
+# Uncomment and remove the for loop in 5.1
+#cp scripts/*.sql $DESTDIR/scripts/
+
+for i in `cd scripts && ls`; do \
+ if echo $i | grep -q '\.sh'; then \
+ cp scripts/$i $DESTDIR/scripts/`echo $i | sed -e 's/\.sh$//'`; \
+ elif [ $i = Makefile.am -o $i = Makefile.in -o -e scripts/$i.sh ] ; then \
+ : ; \
+ else \
+ cp scripts/$i $DESTDIR/scripts/$i; \
+ fi; \
+done
+
+cp -pR sql/share $DESTDIR/
+cp -pR sql-bench $DESTDIR/
+rm -f $DESTDIR/sql-bench/*.sh $DESTDIR/sql-bench/Makefile*
+
+# ----------------------------------------------------------------------
+# Copy other files specified on command line DEST=SOURCE
+# ----------------------------------------------------------------------
+
+for arg do
+ dst=`echo $arg | sed 's/=.*$//'`
+ src=`echo $arg | sed 's/^.*=//'`
+
+ if [ x"$dst" = x"" -o x"$src" = x"" ] ; then
+ echo "Invalid specification of what to copy"
+ usage
+ fi
+
+ mkdir -p `dirname $DESTDIR/$dst`
+ cp -pR "$src" $DESTDIR/$dst
+done
+
+# ----------------------------------------------------------------------
+# Finally creat the ZIP archive
+# ----------------------------------------------------------------------
+
+rm -f $NOINST_NAME.zip
+zip -r $NOINST_NAME.zip $DESTDIR
+rm -Rf $DESTDIR