1
by brian
clean slate |
1 |
#!/bin/sh
|
2 |
# Copyright (C) 2006 MySQL AB
|
|
3 |
#
|
|
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.
|
|
7 |
#
|
|
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.
|
|
12 |
#
|
|
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
|
|
16 |
||
17 |
# Exit if failing to copy, we want exact specifications, not
|
|
18 |
# just "what happen to be built".
|
|
19 |
set -e
|
|
20 |
||
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.
|
|
24 |
#
|
|
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 |
# ----------------------------------------------------------------------
|
|
28 |
||
29 |
# FIXME why "libmysql.dll" installed both in "bin" and "lib/opt"?
|
|
30 |
||
31 |
usage()
|
|
32 |
{
|
|
33 |
echo <<EOF |
|
34 |
Usage: make_win_bin_dist [ options ] package-base-name [ copy-defs... ]
|
|
35 |
||
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
|
|
38 |
||
39 |
mysql-noinstall-5.0.25-win32 (or winx64)
|
|
40 |
||
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.
|
|
44 |
||
45 |
Options are
|
|
46 |
||
47 |
--embedded Pack the embedded server and give error if not built.
|
|
48 |
The default is to pack it if it is built.
|
|
49 |
||
50 |
--no-embedded Don't pack the embedded server even if built
|
|
51 |
||
52 |
--debug Pack the debug binaries and give error if not built.
|
|
53 |
The default is to pack them if they are built.
|
|
54 |
||
55 |
--no-debug Don't pack the debug binaries even if built
|
|
56 |
||
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.
|
|
60 |
||
61 |
--exe-suffix=SUF Add a suffix to the filename part of the "mysqld" binary.
|
|
62 |
||
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
|
|
66 |
form
|
|
67 |
||
68 |
relative-dest-name=source-name .....
|
|
69 |
||
70 |
i.e. can be something like
|
|
71 |
||
72 |
bin/mysqld-max.exe=../my-max-build/sql/release/mysqld.exe
|
|
73 |
||
74 |
If you specify a directory the whole directory will be copied.
|
|
75 |
||
76 |
EOF
|
|
77 |
exit 1 |
|
78 |
}
|
|
79 |
||
80 |
# ----------------------------------------------------------------------
|
|
81 |
# We need to be at the top of a source tree, check that we are
|
|
82 |
# ----------------------------------------------------------------------
|
|
83 |
||
84 |
if [ ! -d "sql" ] ; then |
|
85 |
echo "You need to run this script from inside the source tree" |
|
86 |
usage |
|
87 |
fi
|
|
88 |
||
89 |
# ----------------------------------------------------------------------
|
|
90 |
# Actual argument processing, first part
|
|
91 |
# ----------------------------------------------------------------------
|
|
92 |
||
93 |
NOINST_NAME="" |
|
94 |
TARGET="release" |
|
95 |
PACK_EMBEDDED="" # Could be "no", "yes" or empty |
|
96 |
PACK_DEBUG="" # Could be "no", "yes" or empty |
|
97 |
EXE_SUFFIX="" |
|
98 |
||
99 |
for arg do |
|
100 |
shift
|
|
101 |
case "$arg" in |
|
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=,,"` ;; |
|
108 |
-*)
|
|
109 |
echo "Unknown argument '$arg'" |
|
110 |
usage |
|
111 |
;;
|
|
112 |
*)
|
|
113 |
NOINST_NAME="$arg" |
|
114 |
break
|
|
115 |
esac
|
|
116 |
done
|
|
117 |
||
118 |
if [ x"$NOINST_NAME" = x"" ] ; then |
|
119 |
echo "No base package name given" |
|
120 |
usage |
|
121 |
fi
|
|
122 |
DESTDIR=`echo $NOINST_NAME | sed 's/-noinstall-/-/'` |
|
123 |
||
124 |
if [ -e $DESTDIR ] ; then |
|
125 |
echo "Please remove the old $DESTDIR before running this script" |
|
126 |
usage |
|
127 |
fi
|
|
128 |
||
129 |
trap 'echo "Clearning up and exiting..." ; rm -fr $DESTDIR; exit 1' ERR |
|
130 |
||
131 |
# ----------------------------------------------------------------------
|
|
132 |
# Adjust target name if needed, release with debug info has another name
|
|
133 |
# ----------------------------------------------------------------------
|
|
134 |
||
135 |
if [ x"$TARGET" = x"release" -a -f "client/relwithdebinfo/mysql.exe" ] |
|
136 |
then
|
|
137 |
TARGET="relwithdebinfo" |
|
138 |
fi
|
|
139 |
||
140 |
# ----------------------------------------------------------------------
|
|
141 |
# Copy executables, and client DLL
|
|
142 |
# ----------------------------------------------------------------------
|
|
143 |
||
144 |
mkdir $DESTDIR
|
|
145 |
mkdir $DESTDIR/bin
|
|
146 |
cp client/$TARGET/*.exe $DESTDIR/bin/ |
|
147 |
cp extra/$TARGET/*.exe $DESTDIR/bin/ |
|
148 |
cp storage/myisam/$TARGET/*.exe $DESTDIR/bin/ |
|
149 |
if [ x"$TARGET" != x"release" ] ; then |
|
150 |
cp client/$TARGET/mysql.pdb $DESTDIR/bin/ |
|
151 |
cp client/$TARGET/mysqladmin.pdb $DESTDIR/bin/ |
|
152 |
cp client/$TARGET/mysqlbinlog.pdb $DESTDIR/bin/ |
|
153 |
cp client/$TARGET/mysqldump.pdb $DESTDIR/bin/ |
|
154 |
cp client/$TARGET/mysqlimport.pdb $DESTDIR/bin/ |
|
155 |
cp client/$TARGET/mysqlshow.pdb $DESTDIR/bin/ |
|
156 |
fi
|
|
157 |
cp tests/$TARGET/*.exe $DESTDIR/bin/ |
|
158 |
cp libmysql/$TARGET/libmysql.dll $DESTDIR/bin/ |
|
159 |
||
160 |
cp sql/$TARGET/mysqld.exe $DESTDIR/bin/mysqld$EXE_SUFFIX.exe |
|
161 |
cp sql/$TARGET/mysqld.map $DESTDIR/bin/mysqld$EXE_SUFFIX.map |
|
162 |
if [ x"$TARGET" != x"release" ] ; then |
|
163 |
cp sql/$TARGET/mysqld.pdb $DESTDIR/bin/mysqld$EXE_SUFFIX.pdb |
|
164 |
fi
|
|
165 |
||
166 |
if [ x"$PACK_DEBUG" = x"" -a -f "sql/debug/mysqld.exe" -o \ |
|
167 |
x"$PACK_DEBUG" = x"yes" ] ; then |
|
168 |
cp sql/debug/mysqld.exe $DESTDIR/bin/mysqld-debug.exe
|
|
169 |
cp sql/debug/mysqld.pdb $DESTDIR/bin/mysqld-debug.pdb
|
|
170 |
cp sql/debug/mysqld.map $DESTDIR/bin/mysqld-debug.map
|
|
171 |
fi
|
|
172 |
||
173 |
# ----------------------------------------------------------------------
|
|
174 |
# Copy data directory, readme files etc
|
|
175 |
# ----------------------------------------------------------------------
|
|
176 |
||
177 |
if [ -d win/data ] ; then |
|
178 |
cp -pR win/data $DESTDIR/
|
|
179 |
fi
|
|
180 |
||
181 |
mkdir $DESTDIR/Docs
|
|
182 |
cp Docs/INSTALL-BINARY $DESTDIR/Docs/
|
|
183 |
cp Docs/manual.chm $DESTDIR/Docs/ || /bin/true |
|
184 |
cp ChangeLog $DESTDIR/Docs/ || /bin/true |
|
185 |
cp support-files/my-*.ini $DESTDIR/
|
|
186 |
||
187 |
if [ -f COPYING ] ; then |
|
188 |
cp COPYING EXCEPTIONS-CLIENT $DESTDIR/
|
|
189 |
cp COPYING $DESTDIR/Docs/
|
|
190 |
fi
|
|
191 |
||
192 |
# ----------------------------------------------------------------------
|
|
193 |
# These will be filled in when we enable embedded. Note that if no
|
|
194 |
# argument is given, it is copied if exists, else a check is done.
|
|
195 |
# ----------------------------------------------------------------------
|
|
196 |
||
197 |
copy_embedded()
|
|
198 |
{
|
|
199 |
mkdir -p $DESTDIR/Embedded/DLL/release \ |
|
200 |
$DESTDIR/Embedded/static/release \ |
|
201 |
$DESTDIR/include
|
|
202 |
cp libmysqld/libmysqld.def $DESTDIR/include/
|
|
203 |
cp libmysqld/$TARGET/mysqlserver.lib $DESTDIR/Embedded/static/release/ |
|
204 |
cp libmysqld/$TARGET/libmysqld.dll $DESTDIR/Embedded/DLL/release/ |
|
205 |
cp libmysqld/$TARGET/libmysqld.exp $DESTDIR/Embedded/DLL/release/ |
|
206 |
cp libmysqld/$TARGET/libmysqld.lib $DESTDIR/Embedded/DLL/release/ |
|
207 |
if [ x"$TARGET" != x"release" ] ; then |
|
208 |
cp libmysqld/$TARGET/mysqlserver.pdb $DESTDIR/Embedded/static/release/ |
|
209 |
cp libmysqld/$TARGET/libmysqld.pdb $DESTDIR/Embedded/DLL/release/ |
|
210 |
fi
|
|
211 |
||
212 |
if [ x"$PACK_DEBUG" = x"" -a -f "libmysqld/debug/libmysqld.lib" -o \ |
|
213 |
x"$PACK_DEBUG" = x"yes" ] ; then |
|
214 |
mkdir -p $DESTDIR/Embedded/DLL/debug \ |
|
215 |
$DESTDIR/Embedded/static/debug
|
|
216 |
cp libmysqld/debug/mysqlserver.lib $DESTDIR/Embedded/static/debug/
|
|
217 |
cp libmysqld/debug/mysqlserver.pdb $DESTDIR/Embedded/static/debug/
|
|
218 |
cp libmysqld/debug/libmysqld.dll $DESTDIR/Embedded/DLL/debug/
|
|
219 |
cp libmysqld/debug/libmysqld.exp $DESTDIR/Embedded/DLL/debug/
|
|
220 |
cp libmysqld/debug/libmysqld.lib $DESTDIR/Embedded/DLL/debug/
|
|
221 |
cp libmysqld/debug/libmysqld.pdb $DESTDIR/Embedded/DLL/debug/
|
|
222 |
fi
|
|
223 |
}
|
|
224 |
||
225 |
if [ x"$PACK_EMBEDDED" = x"" -a \ |
|
226 |
-f "libmysqld/$TARGET/mysqlserver.lib" -a \ |
|
227 |
-f "libmysqld/$TARGET/libmysqld.lib" -o \ |
|
228 |
x"$PACK_EMBEDDED" = x"yes" ] ; then |
|
229 |
copy_embedded |
|
230 |
fi
|
|
231 |
||
232 |
# ----------------------------------------------------------------------
|
|
233 |
# Note: Make sure to sync with include/Makefile.am and WiX installer
|
|
234 |
# XML specifications
|
|
235 |
# ----------------------------------------------------------------------
|
|
236 |
||
237 |
mkdir -p $DESTDIR/include
|
|
238 |
cp include/mysql.h \
|
|
239 |
include/mysql_com.h \
|
|
240 |
include/mysql_time.h \
|
|
241 |
include/my_list.h \
|
|
242 |
include/my_alloc.h \
|
|
243 |
include/typelib.h \
|
|
244 |
include/my_dbug.h \
|
|
245 |
include/m_string.h \
|
|
246 |
include/my_sys.h \
|
|
247 |
include/my_xml.h \
|
|
248 |
include/mysql_embed.h \
|
|
249 |
include/my_pthread.h \
|
|
250 |
include/my_no_pthread.h \
|
|
251 |
include/decimal.h \
|
|
252 |
include/errmsg.h \
|
|
253 |
include/my_global.h \
|
|
254 |
include/my_net.h \
|
|
255 |
include/my_getopt.h \
|
|
256 |
include/sslopt-longopts.h \
|
|
257 |
include/my_dir.h \
|
|
258 |
include/sslopt-vars.h \
|
|
259 |
include/sslopt-case.h \
|
|
260 |
include/sql_common.h \
|
|
261 |
include/keycache.h \
|
|
262 |
include/m_ctype.h \
|
|
263 |
include/my_attribute.h \
|
|
264 |
include/mysqld_error.h \
|
|
265 |
include/sql_state.h \
|
|
266 |
include/mysqld_ername.h \
|
|
267 |
include/mysql_version.h \
|
|
268 |
include/config-win.h \
|
|
269 |
libmysql/libmysql.def \
|
|
270 |
$DESTDIR/include/
|
|
271 |
||
272 |
mkdir -p $DESTDIR/include/mysql
|
|
273 |
cp include/mysql/plugin.h $DESTDIR/include/mysql/
|
|
274 |
||
275 |
# ----------------------------------------------------------------------
|
|
276 |
# Client libraries, and other libraries
|
|
277 |
# ----------------------------------------------------------------------
|
|
278 |
||
279 |
mkdir -p $DESTDIR/lib/opt
|
|
280 |
cp libmysql/$TARGET/libmysql.dll \ |
|
281 |
libmysql/$TARGET/libmysql.lib \ |
|
282 |
libmysql/$TARGET/mysqlclient.lib \ |
|
283 |
mysys/$TARGET/mysys.lib \ |
|
284 |
regex/$TARGET/regex.lib \ |
|
285 |
strings/$TARGET/strings.lib \ |
|
286 |
zlib/$TARGET/zlib.lib $DESTDIR/lib/opt/ |
|
287 |
||
288 |
if [ x"$TARGET" != x"release" ] ; then |
|
289 |
cp libmysql/$TARGET/libmysql.pdb \ |
|
290 |
libmysql/$TARGET/mysqlclient.pdb \ |
|
291 |
mysys/$TARGET/mysys.pdb \ |
|
292 |
regex/$TARGET/regex.pdb \ |
|
293 |
strings/$TARGET/strings.pdb \ |
|
294 |
zlib/$TARGET/zlib.pdb $DESTDIR/lib/opt/ |
|
295 |
fi
|
|
296 |
||
297 |
if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \ |
|
298 |
x"$PACK_DEBUG" = x"yes" ] ; then |
|
299 |
mkdir -p $DESTDIR/lib/debug
|
|
300 |
cp libmysql/debug/libmysql.dll \
|
|
301 |
libmysql/debug/libmysql.lib \
|
|
302 |
libmysql/debug/libmysql.pdb \
|
|
303 |
libmysql/debug/mysqlclient.lib \
|
|
304 |
libmysql/debug/mysqlclient.pdb \
|
|
305 |
mysys/debug/mysys.lib \
|
|
306 |
mysys/debug/mysys.pdb \
|
|
307 |
regex/debug/regex.lib \
|
|
308 |
regex/debug/regex.pdb \
|
|
309 |
strings/debug/strings.lib \
|
|
310 |
strings/debug/strings.pdb \
|
|
311 |
zlib/debug/zlib.lib \
|
|
312 |
zlib/debug/zlib.pdb $DESTDIR/lib/debug/
|
|
313 |
fi
|
|
314 |
||
315 |
# ----------------------------------------------------------------------
|
|
316 |
# Copy the test directory
|
|
317 |
# ----------------------------------------------------------------------
|
|
318 |
||
319 |
mkdir $DESTDIR/mysql-test
|
|
320 |
cp mysql-test/mysql-test-run.pl $DESTDIR/mysql-test/
|
|
321 |
cp mysql-test/README $DESTDIR/mysql-test/
|
|
322 |
cp -R mysql-test/{t,r,include,suite,std_data,lib} $DESTDIR/mysql-test/ |
|
323 |
||
324 |
# Note that this will not copy "extra" if a soft link
|
|
325 |
if [ -d mysql-test/extra ] ; then |
|
326 |
mkdir $DESTDIR/mysql-test/extra
|
|
327 |
cp -pR mysql-test/extra/* $DESTDIR/mysql-test/extra/
|
|
328 |
fi
|
|
329 |
||
330 |
# ----------------------------------------------------------------------
|
|
331 |
# Copy what could be usable in the "scripts" directory
|
|
332 |
# ----------------------------------------------------------------------
|
|
333 |
||
334 |
mysql_scripts="\ |
|
335 |
mysql_config.pl \
|
|
336 |
mysql_convert_table_format.pl \
|
|
337 |
mysql_install_db.pl \
|
|
338 |
mysql_secure_installation.pl \
|
|
339 |
mysqld_multi.pl \
|
|
340 |
mysqldumpslow.pl \
|
|
341 |
mysqlhotcopy.pl \
|
|
342 |
"
|
|
343 |
||
344 |
mkdir -p $DESTDIR/scripts
|
|
345 |
||
346 |
for i in $mysql_scripts |
|
347 |
do
|
|
348 |
cp scripts/$i $DESTDIR/scripts/$i |
|
349 |
done
|
|
350 |
||
351 |
cp -pR sql/share $DESTDIR/
|
|
352 |
cp -pR sql-bench $DESTDIR/
|
|
353 |
rm -f $DESTDIR/sql-bench/*.sh $DESTDIR/sql-bench/Makefile* |
|
354 |
||
355 |
# The SQL initialisation code is to be in "share"
|
|
356 |
cp scripts/*.sql $DESTDIR/share/
|
|
357 |
||
358 |
# ----------------------------------------------------------------------
|
|
359 |
# Clean up from possibly copied SCCS directories
|
|
360 |
# ----------------------------------------------------------------------
|
|
361 |
||
362 |
rm -rf `find $DISTDIR -type d -name SCCS -print` |
|
363 |
||
364 |
# ----------------------------------------------------------------------
|
|
365 |
# Copy other files specified on command line DEST=SOURCE
|
|
366 |
# ----------------------------------------------------------------------
|
|
367 |
||
368 |
for arg do |
|
369 |
dst=`echo $arg | sed 's/=.*$//'` |
|
370 |
src=`echo $arg | sed 's/^.*=//'` |
|
371 |
||
372 |
if [ x"$dst" = x"" -o x"$src" = x"" ] ; then |
|
373 |
echo "Invalid specification of what to copy" |
|
374 |
usage |
|
375 |
fi
|
|
376 |
||
377 |
mkdir -p `dirname $DESTDIR/$dst` |
|
378 |
cp -pR "$src" $DESTDIR/$dst |
|
379 |
done
|
|
380 |
||
381 |
# ----------------------------------------------------------------------
|
|
382 |
# Finally create the ZIP archive
|
|
383 |
# ----------------------------------------------------------------------
|
|
384 |
||
385 |
rm -f $NOINST_NAME.zip
|
|
386 |
zip -r $NOINST_NAME.zip $DESTDIR |
|
387 |
rm -Rf $DESTDIR
|