summaryrefslogtreecommitdiff
path: root/scripts/make_win_bin_dist
diff options
context:
space:
mode:
authorunknown <kent@mysql.com/c-544072d5.010-2112-6f72651.cust.bredbandsbolaget.se>2006-10-20 20:18:44 +0200
committerunknown <kent@mysql.com/c-544072d5.010-2112-6f72651.cust.bredbandsbolaget.se>2006-10-20 20:18:44 +0200
commite6fbb896ab0420b0fb99460666e70a06d16cd781 (patch)
treee57844f0db7c46936f8e22c80f2e8b4cede0ca1f /scripts/make_win_bin_dist
parent7debdee89e1729a6a501d7c7e8473cf23f185662 (diff)
downloadmariadb-git-e6fbb896ab0420b0fb99460666e70a06d16cd781.tar.gz
make_win_bin_dist:
Aligned script with updated 5.0 version scripts/make_win_bin_dist: Aligned script with updated 5.0 version
Diffstat (limited to 'scripts/make_win_bin_dist')
-rwxr-xr-xscripts/make_win_bin_dist425
1 files changed, 332 insertions, 93 deletions
diff --git a/scripts/make_win_bin_dist b/scripts/make_win_bin_dist
index cebcccb56f4..b200e5428be 100755
--- a/scripts/make_win_bin_dist
+++ b/scripts/make_win_bin_dist
@@ -1,41 +1,227 @@
-#! /bin/sh
-
-NOINST_NAME=$1
-
-mkdir $NOINST_NAME
-mkdir $NOINST_NAME/bin
-cp client/release/*.exe $NOINST_NAME/bin/
-cp extra/release/*.exe $NOINST_NAME/bin/
-mv $NOINST_NAME/bin/comp_err.exe $NOINST_NAME/bin/comp-err.exe
-cp storage/myisam/release/*.exe $NOINST_NAME/bin/
-cp server-tools/instance-manager/release/*.exe $NOINST_NAME/bin/
-cp tests/release/*.exe $NOINST_NAME/bin/
-cp libmysql/release/*.exe $NOINST_NAME/bin/
-cp libmysql/release/libmysql.dll $NOINST_NAME/bin/
-
-cp sql/release/mysqld.exe $NOINST_NAME/bin/mysqld.exe
-cp sql/debug/mysqld.exe $NOINST_NAME/bin/mysqld-debug.exe
-# For Pro/Classic builds, do this instead:
-# cp sql/release/mysqld.exe $NOINST_NAME/bin/mysqld-nt.exe
-# cp sql/debug/mysqld.exe $NOINST_NAME/bin/mysqld-debug.exe
-
-cp COPYING EXCEPTIONS-CLIENT $NOINST_NAME/
-cp -dpR win/data $NOINST_NAME/data
-mkdir $NOINST_NAME/Docs
-cp Docs/INSTALL-BINARY Docs/manual.chm ChangeLog COPYING $NOINST_NAME/Docs/
-
-# These will be filled in when we enable embedded.
-mkdir -p $NOINST_NAME/Embedded/DLL/debug $NOINST_NAME/Embedded/DLL/release $NOINST_NAME/Embedded/static/release
-
-mkdir -p $NOINST_NAME/examples/libmysqltest/debug $NOINST_NAME/examples/libmysqltest/release
-cp libmysql/mytest.c libmysql/myTest.vcproj libmysql/release/myTest.exe $NOINST_NAME/examples/libmysqltest/
-cp libmysql/debug/myTest.exe $NOINST_NAME/examples/libmysqltest/debug/
-cp libmysql/release/myTest.exe $NOINST_NAME/examples/libmysqltest/release/
-
-mkdir -p $NOINST_NAME/examples/tests
-cp tests/*.res tests/*.tst tests/*.pl tests/*.c $NOINST_NAME/examples/tests/
-
-mkdir -p $NOINST_NAME/include
+#!/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 storage/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
+# ----------------------------------------------------------------------
+
+# 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 support-files/my-*.ini $DESTDIR/
+
+if [ -f COPYING ] ; then
+ cp COPYING EXCEPTIONS-CLIENT $DESTDIR/
+ cp COPYING $DESTDIR/Docs/
+fi
+
+# ----------------------------------------------------------------------
+# 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 \
+ $DESTDIR/include
+ 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/
+
+mkdir -p $DESTDIR/examples/udf_example
+cp sql/udf_example.def sql/udf_example.vcproj sql/udf_example.c $DESTDIR/examples/udf_example/
+
+# ----------------------------------------------------------------------
+# FIXME why not copy it all in "include"?!
+# ----------------------------------------------------------------------
+
+mkdir -p $DESTDIR/include
cp include/conf*.h \
include/mysql*.h \
include/errmsg.h \
@@ -48,69 +234,122 @@ cp include/conf*.h \
include/m_string.h \
include/m_ctype.h \
include/my_global.h \
- include/typelib.h $NOINST_NAME/include/
-cp libmysql/libmysql.def $NOINST_NAME/include/
-cp libmysqld/libmysqld.def $NOINST_NAME/include/
-
-mkdir -p $NOINST_NAME/lib/debug $NOINST_NAME/lib/opt
-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 $NOINST_NAME/lib/debug/
-cp libmysql/release/libmysql.dll \
- libmysql/release/libmysql.lib \
- client/release/mysqlclient.lib \
- regex/release/regex.lib \
- strings/release/strings.lib \
- zlib/release/zlib.lib $NOINST_NAME/lib/opt/
-cp mysys/release/mysys.lib $NOINST_NAME/lib/opt/mysys_tls.lib
-
-cp support-files/my-*.ini $NOINST_NAME/
-
-mkdir -p $NOINST_NAME/mysql-test/include $NOINST_NAME/mysql-test/lib \
- $NOINST_NAME/mysql-test/r $NOINST_NAME/mysql-test/std_data \
- $NOINST_NAME/mysql-test/t $NOINST_NAME/mysql-test/extra
-cp mysql-test/mysql-test-run.pl $NOINST_NAME/mysql-test/
-cp mysql-test/README $NOINST_NAME/mysql-test/
-cp mysql-test/install_test_db.sh $NOINST_NAME/mysql-test/install_test_db
-cp mysql-test/include/*.inc $NOINST_NAME/mysql-test/include/
-cp mysql-test/lib/*.pl $NOINST_NAME/mysql-test/lib/
-cp mysql-test/lib/*.sql $NOINST_NAME/mysql-test/lib/
-cp mysql-test/r/*.require $NOINST_NAME/mysql-test/r/
+ 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`/$NOINST_NAME
+ABS_DST=`pwd`/$DESTDIR
(cd mysql-test/r/ && cp *.result $ABS_DST/mysql-test/r/)
-cp mysql-test/std_data/* $NOINST_NAME/mysql-test/std_data/
-cp mysql-test/t/*.disabled $NOINST_NAME/mysql-test/t/
-cp mysql-test/t/*.opt $NOINST_NAME/mysql-test/t/
-cp mysql-test/t/*.sh $NOINST_NAME/mysql-test/t/
-cp mysql-test/t/*.slave-mi $NOINST_NAME/mysql-test/t/
-cp mysql-test/t/*.sql $NOINST_NAME/mysql-test/t/
-cp mysql-test/t/*.def $NOINST_NAME/mysql-test/t/
+cp mysql-test/std_data/Moscow_leap $DESTDIR/mysql-test/std_data/
+cp mysql-test/std_data/des_key_file $DESTDIR/mysql-test/std_data/
+cp mysql-test/std_data/*.000001 $DESTDIR/mysql-test/std_data/
+cp mysql-test/std_data/*.cnf $DESTDIR/mysql-test/std_data/
+cp mysql-test/std_data/*.dat $DESTDIR/mysql-test/std_data/
+cp mysql-test/std_data/*.frm $DESTDIR/mysql-test/std_data/
+cp mysql-test/std_data/*.pem $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/)
-cp -dpR mysql-test/extra/* $NOINST_NAME/mysql-test/extra/
-# This copies in the unsubstituted scripts (containing @VAR@), but that seems
-# rather better than substituting random Unix paths and architecture names
-# from the Unix bootstrap host. Not sure what the point is of including these
-# shell scripts in the Windows packaging in any case.
-mkdir -p $NOINST_NAME/scripts
+# 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 $NOINST_NAME/scripts/`echo $i | sed -e 's/\.sh$//'`; \
- else if [ $i = Makefile.am -o $i = Makefile.in -o -e scripts/$i.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 $NOINST_NAME/scripts/$i; \
- fi; fi; \
+ cp scripts/$i $DESTDIR/scripts/$i; \
+ fi; \
+done
+
+cp -pR sql/share $DESTDIR/
+
+# ----------------------------------------------------------------------
+# 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
-cp -dpR sql/share $NOINST_NAME/
-cp -dpR sql-bench $NOINST_NAME/
-rm -f $NOINST_NAME/sql-bench/*.sh $NOINST_NAME/sql-bench/Makefile*
+# ----------------------------------------------------------------------
+# Finally creat the ZIP archive
+# ----------------------------------------------------------------------
-zip -r $NOINST_NAME.zip $NOINST_NAME
-rm -Rf $NOINST_NAME
+rm -f $NOINST_NAME.zip
+zip -r $NOINST_NAME.zip $DESTDIR
+rm -Rf $DESTDIR