Commit e6fbb896 authored by unknown's avatar unknown

make_win_bin_dist:

  Aligned script with updated 5.0 version


scripts/make_win_bin_dist:
  Aligned script with updated 5.0 version
parent 7debdee8
#! /bin/sh #!/bin/sh
NOINST_NAME=$1 # Exit if failing to copy, we want exact specifications, not
# just "what happen to be built".
mkdir $NOINST_NAME set -e
mkdir $NOINST_NAME/bin
cp client/release/*.exe $NOINST_NAME/bin/ # ----------------------------------------------------------------------
cp extra/release/*.exe $NOINST_NAME/bin/ # Read first argument that is the base name of the resulting TAR file.
mv $NOINST_NAME/bin/comp_err.exe $NOINST_NAME/bin/comp-err.exe # See usage() function below for a description on the arguments.
cp storage/myisam/release/*.exe $NOINST_NAME/bin/ #
cp server-tools/instance-manager/release/*.exe $NOINST_NAME/bin/ # NOTE: We will read the rest of the command line later on.
cp tests/release/*.exe $NOINST_NAME/bin/ # NOTE: Pattern matching with "{..,..}" can't be used, not portable.
cp libmysql/release/*.exe $NOINST_NAME/bin/ # ----------------------------------------------------------------------
cp libmysql/release/libmysql.dll $NOINST_NAME/bin/
# FIXME FIXME "debug", own build or handled here?
cp sql/release/mysqld.exe $NOINST_NAME/bin/mysqld.exe # FIXME FIXME add way to copy from other builds executables
cp sql/debug/mysqld.exe $NOINST_NAME/bin/mysqld-debug.exe
# For Pro/Classic builds, do this instead: usage()
# cp sql/release/mysqld.exe $NOINST_NAME/bin/mysqld-nt.exe {
# cp sql/debug/mysqld.exe $NOINST_NAME/bin/mysqld-debug.exe echo <<EOF
Usage: make_win_bin_dist [ options ] package-base-name [ copy-defs... ]
cp COPYING EXCEPTIONS-CLIENT $NOINST_NAME/
cp -dpR win/data $NOINST_NAME/data This is a script to run from the top of a source tree built on Windows.
mkdir $NOINST_NAME/Docs The "package-base-name" argument should be something like
cp Docs/INSTALL-BINARY Docs/manual.chm ChangeLog COPYING $NOINST_NAME/Docs/
mysql-noinstall-5.0.25-win32 (or winx64)
# 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 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
mkdir -p $NOINST_NAME/examples/libmysqltest/debug $NOINST_NAME/examples/libmysqltest/release for the resulting package name.
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/ Options are
cp libmysql/release/myTest.exe $NOINST_NAME/examples/libmysqltest/release/
--embedded Pack the embedded server and give error if not built.
mkdir -p $NOINST_NAME/examples/tests The default is to pack it if it is built.
cp tests/*.res tests/*.tst tests/*.pl tests/*.c $NOINST_NAME/examples/tests/
--no-embedded Don't pack the embedded server even if built
mkdir -p $NOINST_NAME/include
--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 \ cp include/conf*.h \
include/mysql*.h \ include/mysql*.h \
include/errmsg.h \ include/errmsg.h \
...@@ -48,69 +234,122 @@ cp include/conf*.h \ ...@@ -48,69 +234,122 @@ cp include/conf*.h \
include/m_string.h \ include/m_string.h \
include/m_ctype.h \ include/m_ctype.h \
include/my_global.h \ include/my_global.h \
include/typelib.h $NOINST_NAME/include/ include/typelib.h $DESTDIR/include/
cp libmysql/libmysql.def $NOINST_NAME/include/ cp libmysql/libmysql.def $DESTDIR/include/
cp libmysqld/libmysqld.def $NOINST_NAME/include/
# ----------------------------------------------------------------------
mkdir -p $NOINST_NAME/lib/debug $NOINST_NAME/lib/opt # Client libraries, and other libraries
cp libmysql/debug/libmysql.dll \ # FIXME why "libmysql.dll" installed both in "bin" and "lib/opt"?
libmysql/debug/libmysql.lib \ # ----------------------------------------------------------------------
client/debug/mysqlclient.lib \
mysys/debug/mysys.lib \ mkdir -p $DESTDIR/lib/opt
regex/debug/regex.lib \ cp libmysql/$TARGET/libmysql.dll \
strings/debug/strings.lib \ libmysql/$TARGET/libmysql.lib \
zlib/debug/zlib.lib $NOINST_NAME/lib/debug/ client/$TARGET/mysqlclient.lib \
cp libmysql/release/libmysql.dll \ regex/$TARGET/regex.lib \
libmysql/release/libmysql.lib \ strings/$TARGET/strings.lib \
client/release/mysqlclient.lib \ zlib/$TARGET/zlib.lib $DESTDIR/lib/opt/
regex/release/regex.lib \
strings/release/strings.lib \ if [ x"$PACK_DEBUG" = "" -a -f "libmysql/debug/libmysql.lib" -o \
zlib/release/zlib.lib $NOINST_NAME/lib/opt/ x"$PACK_DEBUG" = "yes" ] ; then
cp mysys/release/mysys.lib $NOINST_NAME/lib/opt/mysys_tls.lib mkdir -p $DESTDIR/lib/debug
cp libmysql/debug/libmysql.dll \
cp support-files/my-*.ini $NOINST_NAME/ libmysql/debug/libmysql.lib \
client/debug/mysqlclient.lib \
mkdir -p $NOINST_NAME/mysql-test/include $NOINST_NAME/mysql-test/lib \ mysys/debug/mysys.lib \
$NOINST_NAME/mysql-test/r $NOINST_NAME/mysql-test/std_data \ regex/debug/regex.lib \
$NOINST_NAME/mysql-test/t $NOINST_NAME/mysql-test/extra strings/debug/strings.lib \
cp mysql-test/mysql-test-run.pl $NOINST_NAME/mysql-test/ zlib/debug/zlib.lib $DESTDIR/lib/debug/
cp mysql-test/README $NOINST_NAME/mysql-test/ fi
cp mysql-test/install_test_db.sh $NOINST_NAME/mysql-test/install_test_db
cp mysql-test/include/*.inc $NOINST_NAME/mysql-test/include/ # FIXME sort this out...
cp mysql-test/lib/*.pl $NOINST_NAME/mysql-test/lib/ cp mysys/$TARGET/mysys.lib $DESTDIR/lib/opt/mysys_tls.lib
cp mysql-test/lib/*.sql $NOINST_NAME/mysql-test/lib/
cp mysql-test/r/*.require $NOINST_NAME/mysql-test/r/ # ----------------------------------------------------------------------
# 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". # 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/) (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/std_data/Moscow_leap $DESTDIR/mysql-test/std_data/
cp mysql-test/t/*.disabled $NOINST_NAME/mysql-test/t/ cp mysql-test/std_data/des_key_file $DESTDIR/mysql-test/std_data/
cp mysql-test/t/*.opt $NOINST_NAME/mysql-test/t/ cp mysql-test/std_data/*.000001 $DESTDIR/mysql-test/std_data/
cp mysql-test/t/*.sh $NOINST_NAME/mysql-test/t/ cp mysql-test/std_data/*.cnf $DESTDIR/mysql-test/std_data/
cp mysql-test/t/*.slave-mi $NOINST_NAME/mysql-test/t/ cp mysql-test/std_data/*.dat $DESTDIR/mysql-test/std_data/
cp mysql-test/t/*.sql $NOINST_NAME/mysql-test/t/ cp mysql-test/std_data/*.frm $DESTDIR/mysql-test/std_data/
cp mysql-test/t/*.def $NOINST_NAME/mysql-test/t/ 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/) (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 # Note that this will not copy "extra" if a soft link
# rather better than substituting random Unix paths and architecture names if [ -d mysql-test/extra ] ; then
# from the Unix bootstrap host. Not sure what the point is of including these mkdir -p $DESTDIR/mysql-test/extra
# shell scripts in the Windows packaging in any case. cp -pR mysql-test/extra/* $DESTDIR/mysql-test/extra/
mkdir -p $NOINST_NAME/scripts 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 \ for i in `cd scripts && ls`; do \
if echo $i | grep -q '\.sh'; then \ if echo $i | grep -q '\.sh'; then \
cp scripts/$i $NOINST_NAME/scripts/`echo $i | sed -e 's/\.sh$//'`; \ cp scripts/$i $DESTDIR/scripts/`echo $i | sed -e 's/\.sh$//'`; \
else if [ $i = Makefile.am -o $i = Makefile.in -o -e scripts/$i.sh ] ; then \ elif [ $i = Makefile.am -o $i = Makefile.in -o -e scripts/$i.sh ] ; then \
: ; \ : ; \
else \ else \
cp scripts/$i $NOINST_NAME/scripts/$i; \ cp scripts/$i $DESTDIR/scripts/$i; \
fi; fi; \ 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 done
cp -dpR sql/share $NOINST_NAME/ # ----------------------------------------------------------------------
cp -dpR sql-bench $NOINST_NAME/ # Finally creat the ZIP archive
rm -f $NOINST_NAME/sql-bench/*.sh $NOINST_NAME/sql-bench/Makefile* # ----------------------------------------------------------------------
zip -r $NOINST_NAME.zip $NOINST_NAME rm -f $NOINST_NAME.zip
rm -Rf $NOINST_NAME zip -r $NOINST_NAME.zip $DESTDIR
rm -Rf $DESTDIR
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment