2 # Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
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/
190 if [ -f COPYING
] ; then
192 cp COPYING
$DESTDIR/Docs
/
195 # ----------------------------------------------------------------------
196 # These will be filled in when we enable embedded. Note that if no
197 # argument is given, it is copied if exists, else a check is done.
198 # ----------------------------------------------------------------------
202 mkdir
-p $DESTDIR/Embedded
/DLL
/release \
203 $DESTDIR/Embedded
/static
/release \
205 cp libmysqld
/libmysqld.def
$DESTDIR/include
/
206 cp libmysqld
/$TARGET/mysqlserver.lib
$DESTDIR/Embedded
/static
/release
/
207 cp libmysqld
/$TARGET/libmysqld.dll
$DESTDIR/Embedded
/DLL
/release
/
208 cp libmysqld
/$TARGET/libmysqld.exp
$DESTDIR/Embedded
/DLL
/release
/
209 cp libmysqld
/$TARGET/libmysqld.lib
$DESTDIR/Embedded
/DLL
/release
/
210 if [ x
"$TARGET" != x
"release" ] ; then
211 cp libmysqld
/$TARGET/mysqlserver.pdb
$DESTDIR/Embedded
/static
/release
/
212 cp libmysqld
/$TARGET/libmysqld.pdb
$DESTDIR/Embedded
/DLL
/release
/
215 if [ x
"$PACK_DEBUG" = x
"" -a -f "libmysqld/debug/libmysqld.lib" -o \
216 x
"$PACK_DEBUG" = x
"yes" ] ; then
217 mkdir
-p $DESTDIR/Embedded
/DLL
/debug \
218 $DESTDIR/Embedded
/static
/debug
219 cp libmysqld
/debug
/mysqlserver.lib
$DESTDIR/Embedded
/static
/debug
/
220 cp libmysqld
/debug
/mysqlserver.pdb
$DESTDIR/Embedded
/static
/debug
/
221 cp libmysqld
/debug
/libmysqld.dll
$DESTDIR/Embedded
/DLL
/debug
/
222 cp libmysqld
/debug
/libmysqld.exp
$DESTDIR/Embedded
/DLL
/debug
/
223 cp libmysqld
/debug
/libmysqld.lib
$DESTDIR/Embedded
/DLL
/debug
/
224 cp libmysqld
/debug
/libmysqld.pdb
$DESTDIR/Embedded
/DLL
/debug
/
228 if [ x
"$PACK_EMBEDDED" = x
"" -a \
229 -f "libmysqld/$TARGET/mysqlserver.lib" -a \
230 -f "libmysqld/$TARGET/libmysqld.lib" -o \
231 x
"$PACK_EMBEDDED" = x
"yes" ] ; then
235 # ----------------------------------------------------------------------
236 # Note: Make sure to sync with include/Makefile.am and WiX installer
238 # ----------------------------------------------------------------------
240 mkdir
-p $DESTDIR/include
242 include
/mysql_com.h \
243 include
/mysql_time.h \
251 include
/mysql_embed.h \
252 include
/my_pthread.h \
253 include
/my_no_pthread.h \
256 include
/my_global.h \
258 include
/my_getopt.h \
259 include
/sslopt-longopts.h \
261 include
/sslopt-vars.h \
262 include
/sslopt-case.h \
263 include
/sql_common.h \
266 include
/my_attribute.h \
267 include
/my_compiler.h \
268 include
/mysqld_error.h \
269 include
/sql_state.h \
270 include
/mysqld_ername.h \
271 include
/mysql_version.h \
272 include
/config-win.h \
273 libmysql
/libmysql.def \
276 mkdir
-p $DESTDIR/include
/mysql
277 cp include
/mysql
/plugin.h
$DESTDIR/include
/mysql
/
279 # ----------------------------------------------------------------------
280 # Client libraries, and other libraries
281 # ----------------------------------------------------------------------
283 mkdir
-p $DESTDIR/lib
/opt
284 mkdir
-p $DESTDIR/lib
/plugin
285 cp sql
/$TARGET/mysqld.lib
$DESTDIR/lib
/
286 cp libmysql
/$TARGET/libmysql.dll \
287 libmysql
/$TARGET/libmysql.lib \
288 libmysql
/$TARGET/mysqlclient.lib \
289 mysys
/$TARGET/mysys.lib \
290 regex
/$TARGET/regex.lib \
291 strings
/$TARGET/strings.lib \
292 zlib
/$TARGET/zlib.lib
$DESTDIR/lib
/opt
/
293 if [ -d storage
/innodb_plugin
]; then
294 cp storage
/innodb_plugin
/$TARGET/ha_innodb_plugin.dll \
298 if [ x
"$TARGET" != x
"release" ] ; then
299 cp libmysql
/$TARGET/libmysql.pdb \
300 libmysql
/$TARGET/mysqlclient.pdb \
301 mysys
/$TARGET/mysys.pdb \
302 regex
/$TARGET/regex.pdb \
303 strings
/$TARGET/strings.pdb \
304 zlib
/$TARGET/zlib.pdb
$DESTDIR/lib
/opt
/
305 if [ -d storage
/innodb_plugin
]; then
306 cp storage
/innodb_plugin
/$TARGET/ha_innodb_plugin.pdb \
312 if [ x
"$PACK_DEBUG" = x
"" -a -f "libmysql/debug/libmysql.lib" -o \
313 x
"$PACK_DEBUG" = x
"yes" ] ; then
314 mkdir
-p $DESTDIR/lib
/debug
315 mkdir
-p $DESTDIR/lib
/plugin
/debug
316 cp libmysql
/debug
/libmysql.dll \
317 libmysql
/debug
/libmysql.lib \
318 libmysql
/debug
/libmysql.pdb \
319 libmysql
/debug
/mysqlclient.lib \
320 libmysql
/debug
/mysqlclient.pdb \
321 mysys
/debug
/mysys.lib \
322 mysys
/debug
/mysys.pdb \
323 regex
/debug
/regex.lib \
324 regex
/debug
/regex.pdb \
325 strings
/debug
/strings.lib \
326 strings
/debug
/strings.pdb \
327 zlib
/debug
/zlib.lib \
328 zlib
/debug
/zlib.pdb
$DESTDIR/lib
/debug
/
329 if [ -d storage
/innodb_plugin
]; then
330 cp storage
/innodb_plugin
/debug
/ha_innodb_plugin.dll \
331 storage
/innodb_plugin
/debug
/ha_innodb_plugin.lib \
332 storage
/innodb_plugin
/debug
/ha_innodb_plugin.pdb \
333 $DESTDIR/lib
/plugin
/debug
/
337 # ----------------------------------------------------------------------
338 # Copy the test directory
339 # ----------------------------------------------------------------------
341 mkdir
$DESTDIR/mysql-test
342 cp mysql-test
/mysql-test-run.pl
$DESTDIR/mysql-test
/
343 cp mysql-test
/mysql-stress-test.pl
$DESTDIR/mysql-test
/
344 cp mysql-test
/README
$DESTDIR/mysql-test
/
345 cp -R mysql-test
/{t
,r
,include
,suite
,std_data
,lib
,collections
} $DESTDIR/mysql-test
/
347 # Note that this will not copy "extra" if a soft link
348 if [ -d mysql-test
/extra
] ; then
349 mkdir
$DESTDIR/mysql-test
/extra
350 cp -pR mysql-test
/extra
/* $DESTDIR/mysql-test
/extra
/
353 # ----------------------------------------------------------------------
354 # Copy what could be usable in the "scripts" directory
355 # ----------------------------------------------------------------------
359 mysql_convert_table_format.pl \
360 mysql_install_db.pl \
361 mysql_secure_installation.pl \
367 mkdir
-p $DESTDIR/scripts
369 for i
in $mysql_scripts
371 cp scripts
/$i $DESTDIR/scripts
/$i
374 cp -pR sql
/share
$DESTDIR/
375 cp -pR sql-bench
$DESTDIR/
376 rm -f $DESTDIR/sql-bench
/*.sh
$DESTDIR/sql-bench
/Makefile
*
378 # The SQL initialisation code is to be in "share"
379 cp scripts
/*.sql
$DESTDIR/share
/
381 # ----------------------------------------------------------------------
382 # Clean up from possibly copied SCCS directories
383 # ----------------------------------------------------------------------
385 rm -rf `find $DISTDIR -type d -name SCCS -print`
387 # ----------------------------------------------------------------------
388 # Copy other files specified on command line DEST=SOURCE
389 # ----------------------------------------------------------------------
392 dst
=`echo $arg | sed 's/=.*$//'`
393 src
=`echo $arg | sed 's/^.*=//'`
395 if [ x
"$dst" = x
"" -o x
"$src" = x
"" ] ; then
396 echo "Invalid specification of what to copy"
400 mkdir
-p `dirname $DESTDIR/$dst`
401 cp -pR "$src" $DESTDIR/$dst
404 # ----------------------------------------------------------------------
405 # Finally create the ZIP archive
406 # ----------------------------------------------------------------------
408 rm -f $NOINST_NAME.
zip
409 zip -r $NOINST_NAME.
zip $DESTDIR