summaryrefslogtreecommitdiff
path: root/scripts/make_win_binary_distribution.sh
blob: e5893c1eb1e826f36937fa1905c869f044bee040 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#!/bin/sh

#
# Script to create a Windows binary package
#
# This is intended to be used under Cygwin, and will generate
# an archive named in the form mysql<suffix>-<version>-noinstall.zip

version=@VERSION@

DEBUG=0
SUFFIX=""
DIRNAME=""
EXTRA=""

#
# This script must run from MySQL top directory
#

if [ ! -f scripts/make_win_binary_distribution ]; then
  echo "ERROR : You must run this script from the MySQL top-level directory"
  exit 1
fi

#
# Debug print of the status
#

print_debug()
{
  for statement
  do
    if [ "$DEBUG" = "1" ] ; then
      echo $statement
    fi
  done
}

#
# Usage of the script
#

show_usage()
{
  echo "MySQL utility script to create a Windows binary package"
  echo ""
  echo "This is intended to be used under Cygwin, and will generate"
  echo "an archive named in the form mysql<suffix>-<version>-noinstall.zip"
  echo "Takes the following arguments:"
  echo ""
  echo "  --dirname  Directory to use for copying files"
  echo "  --extra    Directory to get extra files from"
  echo "  --suffix   Name to append to 'mysql' for this binary"
  echo "  --help     Show this help message"
  exit 0
}

#
# Parse the input arguments
#

parse_arguments() {
  for arg do
    case "$arg" in
      --debug)    DEBUG=1;;
      --extra=*) EXTRA=`echo "$arg" | sed -e "s;--extra=;;"` ;;
      --suffix=*) SUFFIX=`echo "$arg" | sed -e "s;--suffix=;;"` ;;
      --dirname=*) DIRNAME=`echo "$arg" | sed -e "s;--dirname=;;"` ;;
      --help)     show_usage ;;
      *)
  echo "Unknown argument '$arg'"
  exit 1
      ;;
    esac
  done
}

parse_arguments "$@"

if [ -z "$DIRNAME" ]; then
  $DIRNAME="dist"
fi

print_debug "Making directories"
mkdir $DIRNAME
$DIRNAME="$DIRNAME/mysql-$version"
mkdir $DIRNAME

for dir in bin lib lib/opt lib/debug Embedded Embedded/DLL Embedded/DLL/debug Embedded/DLL/release Embedded/static Embedded/static/release examples examples/libmysqltest
do
  mkdir $DIRNAME/$dir
done

if [ $EXTRA ]; then
  print_debug "Copying extra files"
  cp -fr $EXTRA/* $DIRNAME
fi

# Dirs to be copied as-is
for dir in data Docs include scripts share
do
  print_debug "Copying $dir to $DIRNAME/"
  cp -fr $dir $DIRNAME
done

print_debug "Copying tests to $DIRNAME/examples/"
cp -fr tests $DIRNAME/examples

print_debug "Copying sql-bench to $DIRNAME/bench"
mkdir $DIRNAME/bench
cp -fr sql-bench/* $DIRNAME/bench

# Files for bin
for i in client_release/* client_debug/mysqld.exe lib_release/libmySQL.dll
do
  print_debug "Copying $i to $DIRNAME/bin"
  cp $i $DIRNAME/bin
done

# Files for include
for i in libmysql/libmysql.def libmysqld/libmysqld.def
do
  print_debug "Copying $i to $DIRNAME/include"
  cp $i $DIRNAME/include
done

# Windows users are used to having dbug.h
cp include/my_dbug.h $DIRNAME/include/dbug.h

# Libraries found in lib_release and lib_debug
for i in libmySQL.dll libmysql.lib zlib.lib mysqlclient.lib mysys.lib regex.lib strings.lib
do
  print_debug "Copying lib_release/$i to $DIRNAME/lib/opt"
  cp lib_release/$i $DIRNAME/lib/opt
  print_debug "Copying lib_debug/$i to $DIRNAME/lib/debug"
  cp lib_debug/$i $DIRNAME/lib/debug
done

print_debug "Copying lib_release/mysys-max.lib to $DIRNAME/lib/opt"
cp lib_release/mysys-max.lib $DIRNAME/lib/opt

# Embedded server
for i in libmysqld.dll libmysqld.lib libmysqld.exp
do
  print_debug "Copying lib_release/$i to $DIRNAME/Embedded/DLL/release"
  cp lib_release/$i $DIRNAME/Embedded/DLL/release
  print_debug "Copying lib_debug/$i to $DIRNAME/Embedded/DLL/debug"
  cp lib_debug/$i $DIRNAME/Embedded/DLL/debug
done

# Static embedded
print_debug "Copying lib_release/mysqlserver.lib to $DIRNAME/Embedded/static/release"
cp lib_release/mysqlserver.lib $DIRNAME/Embedded/static/release

# libmysqltest
for i in mytest.c mytest.dsp mytest.dsw mytest.exe
do
  print_debug "Copying libmysqltest/release/$i to $DIRNAME/examples/libmysqltest"
  cp libmysqltest/release/$i $DIRNAME/examples/libmysqltest
done

print_debug "Copying README.txt"
cp README.txt $DIRNAME

if [ -f MySQLEULA.txt ]; then
  print_debug "Commercial version: copying MySQLEULA.txt"
  cp MySQLEULA.txt $DIRNAME
  rm $DIRNAME/Docs/COPYING
else
  print_debug "GPL version: copying COPYING"
  cp Docs/COPYING $DIRNAME
fi

print_debug "Invoking zip to package the binary"
zip -r mysql$SUFFIX-$version-win-noinstall.zip $DIRNAME

print_debug "Deleting intermediate directory"
rm -rf $DIRNAME