2
# Copyright (C) 2006 MySQL AB
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; version 2 of the License.
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
# GNU General Public License for more details.
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
# Exit if failing to copy, we want exact specifications, not
18
# just "what happen to be built".
21
# ----------------------------------------------------------------------
22
# Read first argument that is the base name of the resulting TAR file.
23
# See usage() function below for a description on the arguments.
25
# NOTE: We will read the rest of the command line later on.
26
# NOTE: Pattern matching with "{..,..}" can't be used, not portable.
27
# ----------------------------------------------------------------------
29
# FIXME why "libmysql.dll" installed both in "bin" and "lib/opt"?
34
Usage: make_win_bin_dist [ options ] package-base-name [ copy-defs... ]
36
This is a script to run from the top of a source tree built on Windows.
37
The "package-base-name" argument should be something like
39
mysql-noinstall-5.0.25-win32 (or winx64)
41
and will become the name of the directory of the unpacked ZIP (stripping
42
away the "noinstall" part of the ZIP file name if any) and the base
43
for the resulting package name.
47
--embedded Pack the embedded server and give error if not built.
48
The default is to pack it if it is built.
50
--no-embedded Don't pack the embedded server even if built
52
--debug Pack the debug binaries and give error if not built.
53
The default is to pack them if they are built.
55
--no-debug Don't pack the debug binaries even if built
57
--only-debug The target for this build was "Debug", and we just
58
want to replace the normal binaries with debug
59
versions, i.e. no separate "debug" directories.
61
--exe-suffix=SUF Add a suffix to the filename part of the "mysqld" binary.
63
As you might want to include files of directories from other builds
64
(like a "mysqld-max.exe" server), you can instruct this script to copy
65
them in for you. This is the "copy-def" arguments, and they are of the
68
relative-dest-name=source-name .....
70
i.e. can be something like
72
bin/mysqld-max.exe=../my-max-build/sql/release/mysqld.exe
74
If you specify a directory the whole directory will be copied.
80
# ----------------------------------------------------------------------
81
# We need to be at the top of a source tree, check that we are
82
# ----------------------------------------------------------------------
84
if [ ! -d "sql" ] ; then
85
echo "You need to run this script from inside the source tree"
89
# ----------------------------------------------------------------------
90
# Actual argument processing, first part
91
# ----------------------------------------------------------------------
95
PACK_EMBEDDED="" # Could be "no", "yes" or empty
96
PACK_DEBUG="" # Could be "no", "yes" or empty
102
--embedded) PACK_EMBEDDED="yes" ;;
103
--no-embedded) PACK_EMBEDDED="no" ;;
104
--debug) PACK_DEBUG="yes" ;;
105
--no-debug) PACK_DEBUG="no" ;;
106
--only-debug) TARGET="debug" ; PACK_DEBUG="no" ;;
107
--exe-suffix=*) EXE_SUFFIX=`echo "$arg" | sed -e "s,--exe-suffix=,,"` ;;
109
echo "Unknown argument '$arg'"
118
if [ x"$NOINST_NAME" = x"" ] ; then
119
echo "No base package name given"
122
DESTDIR=`echo $NOINST_NAME | sed 's/-noinstall-/-/'`
124
if [ -e $DESTDIR ] ; then
125
echo "Please remove the old $DESTDIR before running this script"
129
trap 'echo "Cleaning up and exiting..." ; rm -fr $DESTDIR; exit 1' ERR
131
# ----------------------------------------------------------------------
132
# Adjust target name if needed, release with debug info has another name
133
# ----------------------------------------------------------------------
135
if [ x"$TARGET" = x"release" -a -f "client/relwithdebinfo/mysql.exe" ]
137
TARGET="relwithdebinfo"
140
# ----------------------------------------------------------------------
141
# Copy executables, and client DLL
142
# ----------------------------------------------------------------------
146
cp client/$TARGET/*.exe $DESTDIR/bin/
147
cp extra/$TARGET/*.exe $DESTDIR/bin/
148
cp storage/myisam/$TARGET/*.exe $DESTDIR/bin/
149
cp server-tools/instance-manager/$TARGET/*.{exe,map} $DESTDIR/bin/
150
if [ x"$TARGET" != x"release" ] ; then
151
cp server-tools/instance-manager/$TARGET/*.pdb $DESTDIR/bin/
152
cp client/$TARGET/mysql.pdb $DESTDIR/bin/
153
cp client/$TARGET/mysqladmin.pdb $DESTDIR/bin/
154
cp client/$TARGET/mysqlbinlog.pdb $DESTDIR/bin/
155
cp client/$TARGET/mysqldump.pdb $DESTDIR/bin/
156
cp client/$TARGET/mysqlimport.pdb $DESTDIR/bin/
157
cp client/$TARGET/mysqlshow.pdb $DESTDIR/bin/
159
cp tests/$TARGET/*.exe $DESTDIR/bin/
160
cp libmysql/$TARGET/libmysql.dll $DESTDIR/bin/
162
cp sql/$TARGET/mysqld.exe $DESTDIR/bin/mysqld$EXE_SUFFIX.exe
163
cp sql/$TARGET/mysqld.map $DESTDIR/bin/mysqld$EXE_SUFFIX.map
164
if [ x"$TARGET" != x"release" ] ; then
165
cp sql/$TARGET/mysqld.pdb $DESTDIR/bin/mysqld$EXE_SUFFIX.pdb
168
if [ x"$PACK_DEBUG" = x"" -a -f "sql/debug/mysqld.exe" -o \
169
x"$PACK_DEBUG" = x"yes" ] ; then
170
cp sql/debug/mysqld.exe $DESTDIR/bin/mysqld-debug.exe
171
cp sql/debug/mysqld.pdb $DESTDIR/bin/mysqld-debug.pdb
172
cp sql/debug/mysqld.map $DESTDIR/bin/mysqld-debug.map
175
# ----------------------------------------------------------------------
176
# Copy data directory, readme files etc
177
# ----------------------------------------------------------------------
179
if [ -d win/data ] ; then
180
cp -pR win/data $DESTDIR/
184
cp Docs/INSTALL-BINARY $DESTDIR/Docs/
185
cp Docs/manual.chm $DESTDIR/Docs/ || /bin/true
186
cp ChangeLog $DESTDIR/Docs/ || /bin/true
187
cp support-files/my-*.ini $DESTDIR/
189
if [ -f COPYING ] ; then
190
cp COPYING EXCEPTIONS-CLIENT $DESTDIR/
191
cp COPYING $DESTDIR/Docs/
194
# ----------------------------------------------------------------------
195
# These will be filled in when we enable embedded. Note that if no
196
# argument is given, it is copied if exists, else a check is done.
197
# ----------------------------------------------------------------------
201
mkdir -p $DESTDIR/Embedded/DLL/release \
202
$DESTDIR/Embedded/static/release \
204
cp libmysqld/libmysqld.def $DESTDIR/include/
205
cp libmysqld/$TARGET/mysqlserver.lib $DESTDIR/Embedded/static/release/
206
cp libmysqld/$TARGET/libmysqld.dll $DESTDIR/Embedded/DLL/release/
207
cp libmysqld/$TARGET/libmysqld.exp $DESTDIR/Embedded/DLL/release/
208
cp libmysqld/$TARGET/libmysqld.lib $DESTDIR/Embedded/DLL/release/
209
if [ x"$TARGET" != x"release" ] ; then
210
cp libmysqld/$TARGET/mysqlserver.pdb $DESTDIR/Embedded/static/release/
211
cp libmysqld/$TARGET/libmysqld.pdb $DESTDIR/Embedded/DLL/release/
214
if [ x"$PACK_DEBUG" = x"" -a -f "libmysqld/debug/libmysqld.lib" -o \
215
x"$PACK_DEBUG" = x"yes" ] ; then
216
mkdir -p $DESTDIR/Embedded/DLL/debug \
217
$DESTDIR/Embedded/static/debug
218
cp libmysqld/debug/mysqlserver.lib $DESTDIR/Embedded/static/debug/
219
cp libmysqld/debug/mysqlserver.pdb $DESTDIR/Embedded/static/debug/
220
cp libmysqld/debug/libmysqld.dll $DESTDIR/Embedded/DLL/debug/
221
cp libmysqld/debug/libmysqld.exp $DESTDIR/Embedded/DLL/debug/
222
cp libmysqld/debug/libmysqld.lib $DESTDIR/Embedded/DLL/debug/
223
cp libmysqld/debug/libmysqld.pdb $DESTDIR/Embedded/DLL/debug/
227
if [ x"$PACK_EMBEDDED" = x"" -a \
228
-f "libmysqld/$TARGET/mysqlserver.lib" -a \
229
-f "libmysqld/$TARGET/libmysqld.lib" -o \
230
x"$PACK_EMBEDDED" = x"yes" ] ; then
234
# ----------------------------------------------------------------------
235
# Note: Make sure to sync with include/Makefile.am and WiX installer
237
# ----------------------------------------------------------------------
239
mkdir -p $DESTDIR/include
241
include/mysql_com.h \
242
include/mysql_time.h \
250
include/mysql_embed.h \
251
include/my_pthread.h \
252
include/my_no_pthread.h \
255
include/my_global.h \
257
include/my_getopt.h \
258
include/sslopt-longopts.h \
260
include/sslopt-vars.h \
261
include/sslopt-case.h \
262
include/sql_common.h \
265
include/my_attribute.h \
266
include/mysqld_error.h \
267
include/sql_state.h \
268
include/mysqld_ername.h \
269
include/mysql_version.h \
270
include/config-win.h \
271
libmysql/libmysql.def \
274
mkdir -p $DESTDIR/include/mysql
275
cp include/mysql/plugin.h $DESTDIR/include/mysql/
277
# ----------------------------------------------------------------------
278
# Client libraries, and other libraries
279
# ----------------------------------------------------------------------
281
mkdir -p $DESTDIR/lib/opt
282
mkdir -p $DESTDIR/lib/plugin
283
cp sql/$TARGET/mysqld.lib $DESTDIR/lib/
284
cp libmysql/$TARGET/libmysql.dll \
285
libmysql/$TARGET/libmysql.lib \
286
libmysql/$TARGET/mysqlclient.lib \
287
mysys/$TARGET/mysys.lib \
288
regex/$TARGET/regex.lib \
289
strings/$TARGET/strings.lib \
290
zlib/$TARGET/zlib.lib $DESTDIR/lib/opt/
291
if [ -d storage/innodb_plugin ]; then
292
cp storage/innodb_plugin/$TARGET/ha_innodb_plugin.dll \
296
if [ x"$TARGET" != x"release" ] ; then
297
cp libmysql/$TARGET/libmysql.pdb \
298
libmysql/$TARGET/mysqlclient.pdb \
299
mysys/$TARGET/mysys.pdb \
300
regex/$TARGET/regex.pdb \
301
strings/$TARGET/strings.pdb \
302
zlib/$TARGET/zlib.pdb $DESTDIR/lib/opt/
303
if [ -d storage/innodb_plugin ]; then
304
cp storage/innodb_plugin/$TARGET/ha_innodb_plugin.pdb \
310
if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \
311
x"$PACK_DEBUG" = x"yes" ] ; then
312
mkdir -p $DESTDIR/lib/debug
313
mkdir -p $DESTDIR/lib/plugin/debug
314
cp libmysql/debug/libmysql.dll \
315
libmysql/debug/libmysql.lib \
316
libmysql/debug/libmysql.pdb \
317
libmysql/debug/mysqlclient.lib \
318
libmysql/debug/mysqlclient.pdb \
319
mysys/debug/mysys.lib \
320
mysys/debug/mysys.pdb \
321
regex/debug/regex.lib \
322
regex/debug/regex.pdb \
323
strings/debug/strings.lib \
324
strings/debug/strings.pdb \
325
zlib/debug/zlib.lib \
326
zlib/debug/zlib.pdb $DESTDIR/lib/debug/
327
if [ -d storage/innodb_plugin ]; then
328
cp storage/innodb_plugin/debug/ha_innodb_plugin.dll \
329
storage/innodb_plugin/debug/ha_innodb_plugin.lib \
330
storage/innodb_plugin/debug/ha_innodb_plugin.pdb \
331
$DESTDIR/lib/plugin/debug/
335
# ----------------------------------------------------------------------
336
# Copy the test directory
337
# ----------------------------------------------------------------------
339
mkdir $DESTDIR/mysql-test
340
cp mysql-test/mysql-test-run.pl $DESTDIR/mysql-test/
341
cp mysql-test/mysql-stress-test.pl $DESTDIR/mysql-test/
342
cp mysql-test/README $DESTDIR/mysql-test/
343
cp -R mysql-test/{t,r,include,suite,std_data,lib,collections} $DESTDIR/mysql-test/
345
# Note that this will not copy "extra" if a soft link
346
if [ -d mysql-test/extra ] ; then
347
mkdir $DESTDIR/mysql-test/extra
348
cp -pR mysql-test/extra/* $DESTDIR/mysql-test/extra/
351
# ----------------------------------------------------------------------
352
# Copy what could be usable in the "scripts" directory
353
# ----------------------------------------------------------------------
357
mysql_convert_table_format.pl \
358
mysql_install_db.pl \
359
mysql_secure_installation.pl \
365
mkdir -p $DESTDIR/scripts
367
for i in $mysql_scripts
369
cp scripts/$i $DESTDIR/scripts/$i
372
cp -pR sql/share $DESTDIR/
373
cp -pR sql-bench $DESTDIR/
374
rm -f $DESTDIR/sql-bench/*.sh $DESTDIR/sql-bench/Makefile*
376
# The SQL initialisation code is to be in "share"
377
cp scripts/*.sql $DESTDIR/share/
379
# ----------------------------------------------------------------------
380
# Clean up from possibly copied SCCS directories
381
# ----------------------------------------------------------------------
383
rm -rf `find $DISTDIR -type d -name SCCS -print`
385
# ----------------------------------------------------------------------
386
# Copy other files specified on command line DEST=SOURCE
387
# ----------------------------------------------------------------------
390
dst=`echo $arg | sed 's/=.*$//'`
391
src=`echo $arg | sed 's/^.*=//'`
393
if [ x"$dst" = x"" -o x"$src" = x"" ] ; then
394
echo "Invalid specification of what to copy"
398
mkdir -p `dirname $DESTDIR/$dst`
399
cp -pR "$src" $DESTDIR/$dst
402
# ----------------------------------------------------------------------
403
# Finally create the ZIP archive
404
# ----------------------------------------------------------------------
406
rm -f $NOINST_NAME.zip
407
zip -r $NOINST_NAME.zip $DESTDIR