/[gentoo-x86]/eclass/mysql.eclass
Gentoo

Diff of /eclass/mysql.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.29 Revision 1.30
1# Copyright 1999-2005 Gentoo Foundation 1# Copyright 1999-2006 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.29 2006/04/12 21:15:17 chtekk Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.30 2006/05/05 19:49:43 chtekk Exp $
4# $ID: $
5 4
6# Author: Francesco Riosa <vivo at gentoo.org> 5# Author: Francesco Riosa <vivo@gentoo.org>
7# Maintainer: Luca Longinotti <chtekk at gentoo.org> 6# Maintainer: Luca Longinotti <chtekk@gentoo.org>
8 7
8# Both MYSQL_VERSION_ID and MYSQL_PATCHSET_REV must be set in the ebuild too
9# Note that MYSQL_VERSION_ID must be empty !!!
10
9# MYSQL_VERSION_ID will be 11# MYSQL_VERSION_ID will be:
10# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo magic number, all [0..99] 12# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99]
11# this is an important piece, becouse from this variable depends many of the 13# This is an important part, because many of the choices the MySQL ebuild will do
12# choices the ebuild will do. 14# depend on this variable.
13# in particular the code below work only with PVR like "5.0.18-r3" 15# In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803"
14# the result with the previous PVR is "5001803" 16
15if [[ -z ${MYSQL_VERSION_ID} ]] ; then 17if [[ -z "${MYSQL_VERSION_ID}" ]] ; then
16 tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}" 18 tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
17 for vatom in 0 1 2 3; do 19 for vatom in 0 1 2 3 ; do
18 # pad to lenght 2 20 # pad to length 2
19 tpv[${vatom}]="00${tpv[${vatom}]}" 21 tpv[${vatom}]="00${tpv[${vatom}]}"
20 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}" 22 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
21 done 23 done
22 # strip leading "0" (otherwise it's considered an octal number from bash) 24 # strip leading "0" (otherwise it's considered an octal number by BASH)
23 MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"} 25 MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
24fi 26fi
25 27
26[[ -z ${MY_EXTRAS_VER} ]] && MY_EXTRAS_VER="20060411"
27
28DEPEND="${DEPEND} 28DEPEND="${DEPEND}
29 >=sys-libs/readline-4.1 29 >=sys-libs/readline-4.1
30 berkdb? ( sys-apps/ed ) 30 berkdb? ( sys-apps/ed )
31 ssl? ( >=dev-libs/openssl-0.9.6d ) 31 ssl? ( >=dev-libs/openssl-0.9.6d )
32 userland_GNU? ( sys-process/procps ) 32 userland_GNU? ( sys-process/procps )
33 >=sys-libs/zlib-1.2.3 33 >=sys-libs/zlib-1.2.3
34 >=sys-apps/texinfo-4.7-r1 34 >=sys-apps/texinfo-4.7-r1
35 >=sys-apps/sed-4" 35 >=sys-apps/sed-4"
36
36RDEPEND="${DEPEND} selinux? ( sec-policy/selinux-mysql )" 37RDEPEND="${DEPEND} selinux? ( sec-policy/selinux-mysql )"
38
37# dev-perl/DBD-mysql is needed by some scripts installed by MySQL 39# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
38PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" 40PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
39 41
40inherit eutils flag-o-matic gnuconfig autotools mysql_fx 42inherit eutils flag-o-matic gnuconfig autotools mysql_fx
41 43
42SLOT=0
43
44# shorten the path because the socket path length must be shorter than 107 chars 44# Shorten the path because the socket path length must be shorter than 107 chars
45# and we will run a mysql server during test phase 45# and we will run a mysql server during test phase
46S="${WORKDIR}/${PN}" 46S="${WORKDIR}/${PN}"
47 47
48# Define $MY_FIXED_PV for MySQL patchsets
49MY_FIXED_PV="${PV/_alpha/}"
50MY_FIXED_PV="${MY_FIXED_PV/_beta/}"
51MY_FIXED_PV="${MY_FIXED_PV/_rc/}"
52
53# Define correct SRC_URIs
54SRC_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/${P/_/-}.tar.gz"
55[[ -n "${MYSQL_PATCHSET_REV}" ]] && SRC_URI="${SRC_URI} http://gentoo.longitekk.com/${PN}-patchset-${MY_FIXED_PV}-r${MYSQL_PATCHSET_REV}.tar.bz2"
56
48DESCRIPTION="A fast, multi-threaded, multi-user SQL database server" 57DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
49HOMEPAGE="http://www.mysql.com/" 58HOMEPAGE="http://www.mysql.com/"
50NEWP="${P/_/-}" 59SLOT="0"
51SRC_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/${NEWP}.tar.gz
52 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
53LICENSE="GPL-2" 60LICENSE="GPL-2"
54IUSE="big-tables berkdb debug embedded minimal perl selinux srvdir ssl static" 61IUSE="big-tables berkdb debug embedded minimal perl selinux srvdir ssl static"
55RESTRICT="primaryuri confcache" 62RESTRICT="primaryuri confcache"
56 63
64mysql_version_is_at_least "4.01.00.00" \
65&& IUSE="${IUSE} latin1"
66
57mysql_version_is_at_least "4.01.03.00" \ 67mysql_version_is_at_least "4.01.03.00" \
58&& IUSE="${IUSE} cluster extraengine" 68&& IUSE="${IUSE} cluster extraengine"
59 69
60mysql_version_is_at_least "5.00.00.00" \ 70mysql_version_is_at_least "5.00.00.00" \
61|| IUSE="${IUSE} raid" 71|| IUSE="${IUSE} raid"
65 75
66mysql_version_is_at_least "5.01.00.00" \ 76mysql_version_is_at_least "5.01.00.00" \
67&& IUSE="${IUSE} innodb" 77&& IUSE="${IUSE} innodb"
68 78
69EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ 79EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
70 pkg_postinst pkg_config pkg_postrm 80 pkg_postinst pkg_config pkg_postrm
71 81
72# void mysql_init_vars() 82# void mysql_init_vars()
73# 83#
74# initialize global variables 84# Initialize global variables
75# 2005-11-19 <vivo at gentoo.org> 85# 2005-11-19 <vivo@gentoo.org>
86
76mysql_init_vars() { 87mysql_init_vars() {
77
78 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql"} 88 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"}
79 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"} 89 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
80 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"} 90 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"}
81 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"} 91 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
82 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"} 92 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"}
83 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"} 93 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"}
84 94
85 if [ -z "${DATADIR}" ]; then 95 if [[ -z "${DATADIR}" ]] ; then
86 DATADIR="" 96 DATADIR=""
87 if [ -f "${MY_SYSCONFDIR}/my.cnf" ] ; then 97 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
88 DATADIR=`"my_print_defaults" mysqld 2>/dev/null \ 98 DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
89 | sed -ne '/datadir/s|^--datadir=||p' \ 99 | sed -ne '/datadir/s|^--datadir=||p' \
90 | tail -n1` 100 | tail -n1`
91 if [ -z "${DATADIR}" ]; then 101 if [[ -z "${DATADIR}" ]] ; then
92 if useq "srvdir" ; then 102 if useq "srvdir" ; then
93 DATADIR="${ROOT}/srv/localhost/mysql/datadir" 103 DATADIR="${ROOT}/srv/localhost/mysql/datadir"
94 else 104 else
95 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ 105 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
96 | sed -e 's/.*=\s*//'` 106 | sed -e 's/.*=\s*//'`
97 fi 107 fi
98 fi 108 fi
99 fi 109 fi
100 if [ -z "${DATADIR}" ]; then 110 if [[ -z "${DATADIR}" ]] ; then
101 if useq "srvdir" ; then 111 if useq "srvdir" ; then
102 DATADIR="${ROOT}/srv/localhost/mysql/datadir" 112 DATADIR="${ROOT}/srv/localhost/mysql/datadir"
103 else 113 else
104 DATADIR="${MY_LOCALSTATEDIR}" 114 DATADIR="${MY_LOCALSTATEDIR}"
105 fi 115 fi
106 einfo "Using default DATADIR" 116 einfo "Using default DATADIR"
107 fi 117 fi
108 einfo "MySQL DATADIR is ${DATADIR}" 118 einfo "MySQL DATADIR is ${DATADIR}"
109 119
110 if [ -z "${PREVIOUS_DATADIR}" ] ; then 120 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
111 if [ -a "${DATADIR}" ] ; then 121 if [[ -e "${DATADIR}" ]] ; then
112 ewarn "Previous datadir found, it's YOUR job to change" 122 ewarn "Previous datadir found, it's YOUR job to change"
113 ewarn "ownership and have care of it" 123 ewarn "ownership and take care of it"
114 PREVIOUS_DATADIR="yes" 124 PREVIOUS_DATADIR="yes"
115 export PREVIOUS_DATADIR
116 else 125 else
117 PREVIOUS_DATADIR="no" 126 PREVIOUS_DATADIR="no"
118 export PREVIOUS_DATADIR
119 fi 127 fi
128 export PREVIOUS_DATADIR
120 fi 129 fi
121 fi 130 fi
122 131
123 export MY_SHAREDSTATEDIR MY_SYSCONFDIR 132 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
124 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 133 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
125 export MY_INCLUDEDIR 134 export MY_INCLUDEDIR
126 export DATADIR 135 export DATADIR
127} 136}
128 137
129mysql_pkg_setup() { 138mysql_pkg_setup() {
130
131 enewgroup mysql 60 || die "problem adding group mysql" 139 enewgroup mysql 60 || die "problem adding 'mysql' group"
132 enewuser mysql 60 -1 /dev/null mysql \ 140 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
133 || die "problem adding user mysql" 141
142 # Check for USE flag problems in pkg_setup
143 if useq "static" && useq "ssl" ; then
144 eerror "MySQL does not support being built statically with SSL support enabled!"
145 die "MySQL does not support being built statically with SSL support enabled!"
146 fi
147
148 if ! mysql_version_is_at_least "5.00.00.00" \
149 && useq "raid" \
150 && useq "static" ; then
151 eerror "USE flags 'raid' and 'static' conflict, you cannot build MySQL statically"
152 eerror "with RAID support enabled."
153 die "USE flags 'raid' and 'static' conflict!"
154 fi
155
156 if mysql_version_is_at_least "4.01.03.00" \
157 && ( useq "cluster" || useq "extraengine" ) \
158 && useq "minimal" ; then
159 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
160 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
161 fi
134} 162}
135 163
136mysql_src_unpack() { 164mysql_src_unpack() {
137 165 # Initialize the proper variables first
138 mysql_init_vars 166 mysql_init_vars
139 167
140 if useq "static" && useq "ssl" ; then
141 local msg="MySQL does not support building statically with SSL support"
142 eerror "${msg}"
143 die "${msg}"
144 fi
145
146 if mysql_version_is_at_least "4.01.03.00" \
147 && useq "cluster" \
148 || useq "extraengine" \
149 && useq "minimal" ; then
150 die "USEs cluster, extraengine conflicts with \"minimal\""
151 fi
152
153 unpack ${A} || die 168 unpack ${A}
154 169
155 mv -f "${WORKDIR}/${NEWP}" "${S}" 170 mv -f "${WORKDIR}/${P/_/-}" "${S}"
156 cd "${S}" 171 cd "${S}"
157 172
158 EPATCH_SUFFIX="patch" 173 # Apply the patches for this MySQL version
159 mkdir -p "${EPATCH_SOURCE}" || die "unable to create epatch directory" 174 if [[ -d "${WORKDIR}/${MY_FIXED_PV}" ]] ; then
160 mysql_mv_patches 175 EPATCH_SOURCE="${WORKDIR}/${MY_FIXED_PV}" EPATCH_SUFFIX="patch" epatch
161 epatch || die "failed to apply all patches" 176 fi
162 177
163 # additional check, remove bundled zlib 178 # Additional checks, remove bundled zlib
164 rm -f "${S}/zlib/"*.[ch] 179 rm -f "${S}/zlib/"*.[ch]
165 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" 180 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
166 rm -f scripts/mysqlbug 181 rm -f "scripts/mysqlbug"
167 182
168 # Make charsets install in the right place 183 # Make charsets install in the right place
169 find . -name 'Makefile.am' \
170 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \; 184 find . -name 'Makefile.am' -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
171 185
172 # Manage mysqlmanager 186 # Manage mysqlmanager
173 mysql_version_is_at_least "5.00.15.00" \ 187 mysql_version_is_at_least "5.00.15.00" \
174 && sed -i -e "s!@GENTOO_EXT@!!g" \ 188 && sed -i -e "s!@GENTOO_EXT@!!g" -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" "${S}/server-tools/instance-manager/Makefile.am"
175 -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" \
176 "${S}/server-tools/instance-manager/Makefile.am"
177 189
190 if mysql_version_is_at_least "4.01.00.00" ; then
178 # remove what need to be recreated, so we are sure it's actually done 191 # Remove what needs to be recreated, so we're sure it's actually done
179 find . -name Makefile \ 192 find . -name Makefile \
180 -o -name Makefile.in \ 193 -o -name Makefile.in \
181 -o -name configure \ 194 -o -name configure \
182 -exec rm -f {} \; 195 -exec rm -f {} \;
183 rm ltmain.sh 196 rm -f "ltmain.sh"
197 fi
184 198
185 local rebuilddirlist d buildstep bdbdir 199 local rebuilddirlist bdbdir d
186 200
187 if mysql_version_is_at_least "5.01.00.00" ; then 201 if mysql_version_is_at_least "5.01.00.00" ; then
188 rebuilddirlist=". storage/innobase" 202 rebuilddirlist=". storage/innobase"
189 bdbdir='storage/bdb/dist' 203 bdbdir='storage/bdb/dist'
190 else 204 else
191 rebuilddirlist=". innobase" 205 rebuilddirlist=". innobase"
192 bdbdir='bdb/dist' 206 bdbdir='bdb/dist'
193 fi 207 fi
194 208
195 for d in ${rebuilddirlist}; do 209 for d in ${rebuilddirlist} ; do
196 einfo "reconfiguring dir \"${d}\"" 210 einfo "Reconfiguring dir '${d}'"
197 pushd "${d}" &>/dev/null 211 pushd "${d}" &>/dev/null
198 AT_GNUCONF_UPDATE="yes" eautoreconf 212 AT_GNUCONF_UPDATE="yes" eautoreconf
199 popd &>/dev/null 213 popd &>/dev/null
200 done 214 done
201 215
202 #TODO berkdb in 5.1 need to be worked on 216 # TODO: berkdb in MySQL 5.1 needs to be worked on
217 if useq "berkdb" \
218 && ! mysql_check_version_range "4.00.00.00 to 4.00.99.99" \
203 if useq "berkdb" && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" 219 && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
204 then
205 [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f ltmain.sh "${bdbdir}/ltmain.sh" 220 [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f "ltmain.sh" "${bdbdir}/ltmain.sh"
206 pushd "${bdbdir}" \ 221 pushd "${bdbdir}" \
207 && sh s_all \ 222 && sh s_all \
208 || die "failed bdb reconfigure" \ 223 || die "Failed bdb reconfigure" \
209 &>/dev/null 224 &>/dev/null
210 popd &>/dev/null 225 popd &>/dev/null
211 fi 226 fi
212
213} 227}
214 228
215mysql_src_compile() { 229mysql_src_compile() {
216 230 # Make sure the vars are correctly initialized
217 mysql_init_vars 231 mysql_init_vars
232
218 local myconf 233 local myconf
219 234
220 if useq "static" ; then 235 if useq "static" ; then
221 myconf="${myconf} --with-mysqld-ldflags=-all-static" 236 myconf="${myconf} --with-mysqld-ldflags=-all-static"
222 myconf="${myconf} --with-client-ldflags=-all-static" 237 myconf="${myconf} --with-client-ldflags=-all-static"
223 myconf="${myconf} --disable-shared" 238 myconf="${myconf} --disable-shared"
224 else 239 else
225 myconf="${myconf} --enable-shared --enable-static" 240 myconf="${myconf} --enable-shared --enable-static"
226 fi 241 fi
227 242
228 #myconf="${myconf} `use_with tcpd libwrap`"
229 myconf="${myconf} --without-libwrap" 243 myconf="${myconf} --without-libwrap"
230 244
231 if useq "ssl" ; then 245 if useq "ssl" ; then
232 # --with-vio is not needed anymore, it's on by default and 246 # --with-vio is not needed anymore, it's on by default and
233 # has been removed from configure 247 # has been removed from configure
234 mysql_version_is_at_least "5.00.04.00" || myconf="${myconf} --with-vio" 248 mysql_version_is_at_least "5.00.04.00" || myconf="${myconf} --with-vio"
235 if mysql_version_is_at_least "5.00.06.00" ; then 249 if mysql_version_is_at_least "5.00.06.00" ; then
236 # yassl-0.96 is young break with gcc-4.0 || amd64 250 # yassl-0.96 is still young and breaks with GCC-4.X or amd64
237 #myconf="${myconf} --with-yassl" 251 # myconf="${myconf} --with-yassl"
238 myconf="${myconf} --with-openssl" 252 myconf="${myconf} --with-openssl"
239 else 253 else
240 myconf="${myconf} --with-openssl" 254 myconf="${myconf} --with-openssl"
241 fi 255 fi
242 else 256 else
243 myconf="${myconf} --without-openssl" 257 myconf="${myconf} --without-openssl"
244 fi 258 fi
245 259
246 if useq "debug"; then 260 if useq "debug" ; then
247 myconf="${myconf} --with-debug=full" 261 myconf="${myconf} --with-debug=full"
248 else 262 else
249 myconf="${myconf} --without-debug" 263 myconf="${myconf} --without-debug"
264
250 mysql_version_is_at_least "4.01.03.00" \ 265 mysql_version_is_at_least "4.01.03.00" && useq "cluster" \
251 && useq "cluster" \
252 && myconf="${myconf} --without-ndb-debug" 266 && myconf="${myconf} --without-ndb-debug"
253 fi 267 fi
254 268
255 # these are things we exclude from a minimal build 269 # These are things we exclude from a minimal build.
256 # note that the server actually does get built and installed 270 # Note that the server actually does get built and installed,
257 # but we then delete it before packaging. 271 # but we then delete it.
258 local minimal_exclude_list="server embedded-server extra-tools innodb bench" 272 local minimal_exclude_list="server embedded-server extra-tools innodb bench"
259 273
260 if ! useq "minimal" ; then 274 if ! useq "minimal" ; then
261 myconf="${myconf} --with-server" 275 myconf="${myconf} --with-server"
262 myconf="${myconf} --with-extra-tools" 276 myconf="${myconf} --with-extra-tools"
263 277
264 if useq "static" ; then
265 myconf="${myconf} --without-raid"
266 ewarn "disabling raid support, has problem with static"
267 else
268 if mysql_version_is_at_least "5.00.00.00" ; then 278 if ! mysql_version_is_at_least "5.00.00.00" ; then
279 if useq "raid" ; then
280 myconf="${myconf} --with-raid"
281 else
269 myconf="${myconf} --without-raid" 282 myconf="${myconf} --without-raid"
270 else
271 myconf="${myconf} `use_with raid`"
272 fi 283 fi
273 fi 284 fi
274 285
275 if mysql_version_is_at_least "4.01.00.00" ; then 286 if mysql_version_is_at_least "4.01.00.00" && ! useq "latin1" ; then
276 myconf="${myconf} --with-charset=utf8" 287 myconf="${myconf} --with-charset=utf8"
277 myconf="${myconf} --with-collation=utf8_general_ci" 288 myconf="${myconf} --with-collation=utf8_general_ci"
278 else 289 else
279 myconf="${myconf} --with-charset=latin1" 290 myconf="${myconf} --with-charset=latin1"
280 myconf="${myconf} --with-collation=latin1_swedish_ci" 291 myconf="${myconf} --with-collation=latin1_swedish_ci"
281 fi 292 fi
282 293
283 # optional again from 2005-12-05 294 # Optional again with MySQL 5.1
284 if mysql_version_is_at_least "5.01.00.00" ; then 295 if mysql_version_is_at_least "5.01.00.00" ; then
285 myconf="${myconf} $(use_with innodb)" 296 if useq "innodb" ; then
286 else
287 myconf="${myconf} --with-innodb" 297 myconf="${myconf} --with-innodb"
298 else
299 myconf="${myconf} --without-innodb"
288 fi 300 fi
301 fi
289 302
290 # lots of chars 303 # Lots of charsets
291 myconf="${myconf} --with-extra-charsets=all" 304 myconf="${myconf} --with-extra-charsets=all"
292 305
293 #The following fix is due to a bug with bdb on sparc's. See: 306 # The following fix is due to a bug with bdb on SPARC's. See:
294 #http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8 307 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
295 # it comes down to non-64-bit safety problems 308 # It comes down to non-64-bit safety problems.
296 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" \ 309 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" || useq "amd64" ; then
297 || useq "amd64" || mysql_check_version_range "5.01.00.00 to 5.01.06.99"
298 then
299 ewarn "bdb berkeley-db disabled due to arch or version" 310 ewarn "bdb berkeley-db disabled due to incompatible arch"
300 myconf="${myconf} --without-berkeley-db" 311 myconf="${myconf} --without-berkeley-db"
301 else 312 else
302 #TODO berkdb in 5.1 need to be worked on 313 # TODO: berkdb in MySQL 5.1 needs to be worked on
303 useq "berkdb" && \
304 ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" \ 314 if useq "berkdb" && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
305 && myconf="${myconf} --with-berkeley-db=./bdb" \ 315 myconf="${myconf} --with-berkeley-db=./bdb"
316 else
306 || myconf="${myconf} --without-berkeley-db" 317 myconf="${myconf} --without-berkeley-db"
318 fi
307 fi 319 fi
308 320
309 if mysql_version_is_at_least "4.01.03.00" ; then 321 if mysql_version_is_at_least "4.01.03.00" ; then
310 #myconf="${myconf} $(use_with geometry)"
311 myconf="${myconf} --with-geometry" 322 myconf="${myconf} --with-geometry"
323
324 if useq "cluster" ; then
325 myconf="${myconf} --with-ndbcluster"
326 else
312 myconf="${myconf} $(use_with cluster ndbcluster)" 327 myconf="${myconf} --without-ndbcluster"
313 fi 328 fi
329 fi
314 330
315 mysql_version_is_at_least "4.01.11.00" \ 331 if useq "big-tables" ; then
316 && myconf="${myconf} `use_with big-tables`" 332 myconf="${myconf} --with-big-tables"
333 else
334 myconf="${myconf} --without-big-tables"
335 fi
317 336
318 mysql_version_is_at_least "5.01.06.00" \ 337 mysql_version_is_at_least "5.01.06.00" \
319 && myconf="${myconf} --with-ndb-binlog" 338 && myconf="${myconf} --with-ndb-binlog"
320 339
321 if useq "embedded" ; then 340 if useq "embedded" ; then
322 #REMIND, need the privilege control enabled ?
323 myconf="${myconf} --without-embedded-privilege-control" 341 myconf="${myconf} --with-embedded-privilege-control"
324 myconf="${myconf} --with-embedded-server" 342 myconf="${myconf} --with-embedded-server"
325 else 343 else
326 myconf="${myconf} --without-embedded-privilege-control" 344 myconf="${myconf} --without-embedded-privilege-control"
327 myconf="${myconf} --without-embedded-server" 345 myconf="${myconf} --without-embedded-server"
328 fi 346 fi
329 347
330 # benchmarking stuff needs perl 348 # Benchmarking stuff needs Perl
331 if useq "perl" ; then 349 if useq "perl" ; then
332 myconf="${myconf} --with-bench" 350 myconf="${myconf} --with-bench"
333 else 351 else
334 myconf="${myconf} --without-bench" 352 myconf="${myconf} --without-bench"
335 fi 353 fi
336 else 354 else
337 for i in ${minimal_exclude_list}; do 355 for i in ${minimal_exclude_list} ; do
338 myconf="${myconf} --without-${i}" 356 myconf="${myconf} --without-${i}"
339 done 357 done
340 myconf="${myconf} --without-berkeley-db" 358 myconf="${myconf} --without-berkeley-db"
341 myconf="${myconf} --with-extra-charsets=none" 359 myconf="${myconf} --with-extra-charsets=none"
342 fi 360 fi
343 361
344 if mysql_version_is_at_least "4.01.03.00" && useq "extraengine"; then 362 if mysql_version_is_at_least "4.01.03.00" && useq "extraengine" ; then
345 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html 363 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
346 myconf="${myconf} --with-archive-storage-engine" 364 myconf="${myconf} --with-archive-storage-engine"
365
347 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html 366 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
348
349 mysql_version_is_at_least "4.01.04.00" \
350 && myconf="${myconf} --with-csv-storage-engine" 367 myconf="${myconf} --with-csv-storage-engine"
351 368
352 mysql_version_is_at_least "4.01.11.00" \ 369 # http://dev.mysql.com/doc/mysql/en/blackhole-storage-engine.html
353 && myconf="${myconf} --with-blackhole-storage-engine" 370 myconf="${myconf} --with-blackhole-storage-engine"
354 371
372 # http://dev.mysql.com/doc/mysql/en/federated-storage-engine.html
355 # http://dev.mysql.com/doc/mysql/en/federated-description.html 373 # http://dev.mysql.com/doc/mysql/en/federated-description.html
356 # http://dev.mysql.com/doc/mysql/en/federated-limitations.html 374 # http://dev.mysql.com/doc/mysql/en/federated-limitations.html
357 if mysql_version_is_at_least "5.00.03.00" ; then 375 if mysql_version_is_at_least "5.00.03.00" ; then
358 einfo "before to use federated engine be sure to read" 376 einfo "Before using the Federated storage engine, please be sure to read"
359 einfo "http://dev.mysql.com/doc/refman/5.0/en/federated-limitations.html" 377 einfo "http://dev.mysql.com/doc/mysql/en/federated-limitations.html"
360 myconf="${myconf} --with-federated-storage-engine" 378 myconf="${myconf} --with-federated-storage-engine"
379 fi
361 380
362 # http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html 381 # http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html
363 if mysql_version_is_at_least "5.01.00.00" ; then 382 if mysql_version_is_at_least "5.01.00.00" ; then
364 myconf="${myconf} --with-partition" 383 myconf="${myconf} --with-partition"
365 fi 384 fi
366 fi
367
368 fi 385 fi
369 386
370 mysql_version_is_at_least "5.00.18.00" \ 387 mysql_version_is_at_least "5.00.18.00" \
371 && useq "max-idx-128" \ 388 && useq "max-idx-128" \
372 && myconf="${myconf} --with-max-indexes=128" 389 && myconf="${myconf} --with-max-indexes=128"
373 390
374 if mysql_version_is_at_least "5.01.05.00" ; then 391 mysql_version_is_at_least "5.01.05.00" \
375 myconf="${myconf} --with-row-based-replication" 392 && myconf="${myconf} --with-row-based-replication"
376 fi
377 393
378 #TODO rechek again later, had problem with assembler enabled 394 # TODO: Rechek again later, there were problems with assembler enabled
379 # and some combination of use-flags with 5.1 395 # and some combination of USE flags with MySQL 5.1
380 if mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then 396 if mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
381 myconf="${myconf} --disable-assembler" 397 myconf="${myconf} --disable-assembler"
382 else 398 else
383 myconf="${myconf} --enable-assembler" 399 myconf="${myconf} --enable-assembler"
384 fi 400 fi
385 401
386 #Bug #114895,Bug #110149 402 # Bug #114895, bug #110149
387 filter-flags "-O" "-O[01]" 403 filter-flags "-O" "-O[01]"
404
388 #glibc-2.3.2_pre fix; bug #16496 405 # glib-2.3.2_pre fix, bug #16496
389 append-flags "-DHAVE_ERRNO_AS_DEFINE=1" 406 append-flags "-DHAVE_ERRNO_AS_DEFINE=1"
390 407
391 #the compiler flags are as per their "official" spec ;) 408 # The compiler flags are as their "official" spec says ;)
392 #CFLAGS="${CFLAGS/-O?/} -O3" \ 409 # CFLAGS="${CFLAGS/-O?/} -O3"
393 export CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-exceptions -fno-rtti" 410 export CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-exceptions -fno-rtti"
394 mysql_version_is_at_least "5.00.00.00" \ 411 mysql_version_is_at_least "5.00.00.00" \
395 && export CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 412 && export CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
396 413
397 econf \ 414 econf \
410 --with-unix-socket-path="/var/run/mysqld/mysqld.sock" \ 427 --with-unix-socket-path="/var/run/mysqld/mysqld.sock" \
411 --without-readline \ 428 --without-readline \
412 --without-docs \ 429 --without-docs \
413 ${myconf} || die "bad ./configure" 430 ${myconf} || die "bad ./configure"
414 431
415 # TODO Move this before autoreconf !!! 432 # TODO: Move this before autoreconf !!!
416 find . -type f -name Makefile -print0 \ 433 find . -type f -name Makefile -print0 \
417 | xargs -0 -n100 sed -i \ 434 | xargs -0 -n100 sed -i \
418 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|' 435 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
419 436
420 emake || die "compile problem" 437 emake || die "compile problem"
421} 438}
422 439
423mysql_src_install() { 440mysql_src_install() {
424 441 # Make sure the vars are correctly initialized
425 mysql_init_vars 442 mysql_init_vars
443
426 make install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die 444 make install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "make install error"
427 445
428 insinto "${MY_INCLUDEDIR}" 446 insinto "${MY_INCLUDEDIR}"
429 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 447 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
430 448
431 # convenience links 449 # Convenience links
432 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze" 450 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
433 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" 451 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
434 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize" 452 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
435 453
436 # various junk (my-*.cnf moved elsewhere) 454 # Various junk (my-*.cnf moved elsewhere)
437 rm -rf "${D}/usr/share/info" 455 rm -Rf "${D}/usr/share/info"
438 for removeme in "mysql-log-rotate" mysql.server* \ 456 for removeme in "mysql-log-rotate" mysql.server* binary-configure* my-*.cnf mi_test_all* ; do
439 binary-configure* my-*.cnf mi_test_all*
440 do
441 rm -f ${D}/usr/share/mysql/${removeme} 457 rm -f "${D}"/usr/share/mysql/${removeme}
442 done 458 done
443 459
444 # clean up stuff for a minimal build 460 # Clean up stuff for a minimal build
445 # this is anything server-specific
446 if useq "minimal" ; then 461 if useq "minimal" ; then
447 rm -rf ${D}${MY_SHAREDSTATEDIR}/{mysql-test,sql-bench} 462 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
448 rm -f ${D}/usr/bin/{mysql{_install_db,manager*,_secure_installation,_fix_privilege_tables,hotcopy,_convert_table_format,d_multi,_fix_extensions,_zap,_explain_log,_tableinfo,d_safe,_install,_waitpid,binlog,test},myisam*,isam*,pack_isam} 463 rm -f "${D}"/usr/bin/{mysql{_install_db,manager*,_secure_installation,_fix_privilege_tables,hotcopy,_convert_table_format,d_multi,_fix_extensions,_zap,_explain_log,_tableinfo,d_safe,_install,_waitpid,binlog,test},myisam*,isam*,pack_isam}
449 rm -f "${D}/usr/sbin/mysqld" 464 rm -f "${D}/usr/sbin/mysqld"
450 rm -f ${D}${MY_LIBDIR}/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a 465 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
451 fi 466 fi
452 467
453 # config stuff 468 # Configuration stuff
469 if mysql_version_is_at_least "4.01.00.00" ; then
470 mysql_mycnf_version="4.1"
471 else
472 mysql_mycnf_version="4.0"
473 fi
454 insinto "${MY_SYSCONFDIR}" 474 insinto "${MY_SYSCONFDIR}"
455 doins scripts/mysqlaccess.conf 475 doins "scripts/mysqlaccess.conf"
456 sed -e "s!@MY_SUFFIX@!!g" \
457 -e "s!@DATADIR@!${DATADIR}!g" \ 476 sed -e "s!@DATADIR@!${DATADIR}!g" \
458 "${FILESDIR}/my.cnf-4.1-r1" \ 477 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
459 > "${TMPDIR}/my.cnf.ok" 478 > "${TMPDIR}/my.cnf.ok"
479 if mysql_version_is_at_least "4.01.00.00" && useq "latin1" ; then
480 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
481 fi
460 newins "${TMPDIR}/my.cnf.ok" my.cnf 482 newins "${TMPDIR}/my.cnf.ok" my.cnf
461 483
462 insinto "/etc/conf.d" 484 insinto "/etc/conf.d"
463 newins "${FILESDIR}/mysql.conf.d-r1" "mysql" 485 newins "${FILESDIR}/mysql.conf.d" "mysql"
464 mysql_version_is_at_least "5.00.11.00" \ 486 mysql_version_is_at_least "5.00.11.00" \
465 && newins "${FILESDIR}/mysqlmanager.conf.d" "mysqlmanager" 487 && newins "${FILESDIR}/mysqlmanager.conf.d" "mysqlmanager"
466 488
467 # minimal builds don't have the server 489 # Minimal builds don't have the MySQL server
468 if ! useq "minimal" ; then 490 if ! useq "minimal" ; then
469 exeinto /etc/init.d 491 exeinto "/etc/init.d"
470 newexe "${FILESDIR}/mysql.rc6-r3" "mysql" 492 newexe "${FILESDIR}/mysql.rc6" "mysql"
471
472 mysql_version_is_at_least "5.00.11.00" \ 493 mysql_version_is_at_least "5.00.11.00" \
473 && newexe "${FILESDIR}/mysqlmanager.rc6" "mysqlmanager" 494 && newexe "${FILESDIR}/mysqlmanager.rc6" "mysqlmanager"
495
474 insinto /etc/logrotate.d 496 insinto "/etc/logrotate.d"
475 newins "${FILESDIR}/logrotate.mysql" "mysql" 497 newins "${FILESDIR}/logrotate.mysql" "mysql"
476 498
477 #empty dirs... 499 # Empty directories ...
478 diropts "-m0750" 500 diropts "-m0750"
479 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 501 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
480 dodir "${DATADIR}" 502 dodir "${DATADIR}"
481 keepdir "${DATADIR}" 503 keepdir "${DATADIR}"
482 chown -R mysql:mysql "${D}/${DATADIR}" 504 chown -R mysql:mysql "${D}/${DATADIR}"
488 keepdir "${folder}" 510 keepdir "${folder}"
489 chown -R mysql:mysql "${D}/${folder}" 511 chown -R mysql:mysql "${D}/${folder}"
490 done 512 done
491 fi 513 fi
492 514
493 # docs 515 # Docs
494 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE 516 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
517
495 # minimal builds don't have the server 518 # Minimal builds don't have the MySQL server
496 if ! useq "minimal" ; then 519 if ! useq "minimal" ; then
497 docinto "support-files" 520 docinto "support-files"
498 for script in \ 521 for script in \
499 support-files/my-*.cnf \ 522 support-files/my-*.cnf \
500 support-files/magic \ 523 support-files/magic \
511 534
512 ROOT="${D}" mysql_lib_symlinks 535 ROOT="${D}" mysql_lib_symlinks
513} 536}
514 537
515mysql_pkg_preinst() { 538mysql_pkg_preinst() {
516
517 enewgroup mysql 60 || die "problem adding group mysql" 539 enewgroup mysql 60 || die "problem adding 'mysql' group"
518 enewuser mysql 60 -1 /dev/null mysql \ 540 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
519 || die "problem adding user mysql"
520} 541}
521 542
522mysql_pkg_postinst() { 543mysql_pkg_postinst() {
523 544 # Make sure the vars are correctly initialized
524 mysql_init_vars 545 mysql_init_vars
525 546
526 # mind at FEATURES=collision-protect before to remove this 547 # Check FEATURES="collision-protect" before removing this
527 [ -d "${ROOT}/var/log/mysql" ] \
528 || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" 548 [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
529 549
530 #secure the logfiles... does this bother anybody? 550 # Secure the logfiles
531 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 551 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
532 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 552 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
533 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 553 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
534 554
535 if ! useq "minimal" ; then 555 if ! useq "minimal" ; then
536 # your friendly public service announcement... 556 # Your friendly public service announcement ...
537 einfo 557 einfo
538 einfo "You might want to run:" 558 einfo "You might want to run:"
539 einfo "\"emerge --config =${CATEGORY}/${PF}\"" 559 einfo "\"emerge --config =${CATEGORY}/${PF}\""
540 einfo "if this is a new install." 560 einfo "if this is a new install."
541 einfo 561 einfo
542 mysql_version_is_at_least "5.01.00.00" \ 562 mysql_version_is_at_least "5.01.00.00" \
543 || einfo "InnoDB is not optional as of MySQL-4.0.24, at the request of upstream." 563 || einfo "InnoDB is *not* optional as of MySQL-4.0.24, at the request of upstream."
544 fi 564 fi
545} 565}
546 566
547mysql_pkg_config() { 567mysql_pkg_config() {
568 # Make sure the vars are correctly initialized
548 mysql_init_vars 569 mysql_init_vars
570
549 [[ -z "${DATADIR}" ]] && die "sorry, unable to find DATADIR" 571 [[ -z "${DATADIR}" ]] && die "Sorry, unable to find DATADIR"
550 572
551 if built_with_use dev-db/mysql minimal; then 573 if built_with_use dev-db/mysql minimal ; then
552 die "Minimal builds do NOT include the MySQL server" 574 die "Minimal builds do NOT include the MySQL server"
553 fi 575 fi
554 576
555 local pwd1="a" 577 local pwd1="a"
556 local pwd2="b" 578 local pwd2="b"
562 ewarn "Please rename or delete it if you wish to replace it." 584 ewarn "Please rename or delete it if you wish to replace it."
563 die "MySQL database already exists!" 585 die "MySQL database already exists!"
564 fi 586 fi
565 587
566 einfo "Creating the mysql database and setting proper" 588 einfo "Creating the mysql database and setting proper"
567 einfo "permissions on it..." 589 einfo "permissions on it ..."
568 590
569 einfo "Insert a password for the mysql 'root' user" 591 einfo "Insert a password for the mysql 'root' user"
570 ewarn "Avoid [\"'\\_%] characters in the password" 592 ewarn "Avoid [\"'\\_%] characters in the password"
571
572 read -rsp " >" pwd1 ; echo 593 read -rsp " >" pwd1 ; echo
594
573 einfo "Check the password" 595 einfo "Retype the password"
574 read -rsp " >" pwd2 ; echo 596 read -rsp " >" pwd2 ; echo
575 597
576 if [[ "x$pwd1" != "x$pwd2" ]] ; then 598 if [[ "x$pwd1" != "x$pwd2" ]] ; then
577 die "Passwords are not the same" 599 die "Passwords are not the same"
578 fi 600 fi
579 601
580 local options="" 602 local options=""
581 local sqltmp="$(emktemp)" 603 local sqltmp="$(emktemp)"
582 604
583 local help_tables="${MY_SHAREDSTATEDIR}/fill_help_tables.sql" 605 local help_tables="${ROOT}${MY_SHAREDSTATEDIR}/fill_help_tables.sql"
584 [[ -r "${help_tables}" ]] \ 606 [[ -r "${help_tables}" ]] \
585 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \ 607 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
586 || touch "${TMPDIR}/fill_help_tables.sql" 608 || touch "${TMPDIR}/fill_help_tables.sql"
587 help_tables="${TMPDIR}/fill_help_tables.sql" 609 help_tables="${TMPDIR}/fill_help_tables.sql"
588 610
589 pushd "${TMPDIR}" &>/dev/null 611 pushd "${TMPDIR}" &>/dev/null
590 ${ROOT}/usr/bin/mysql_install_db | grep -B5 -A999 -i "ERROR" 612 "${ROOT}/usr/bin/mysql_install_db" | grep -B5 -A999 -i "ERROR"
591 popd &>/dev/null 613 popd &>/dev/null
592 [[ -f ${ROOT}/${DATADIR}/mysql/user.frm ]] \ 614 [[ -f "${ROOT}/${DATADIR}/mysql/user.frm" ]] \
593 || die "MySQL databases not installed" 615 || die "MySQL databases not installed"
594 chown -R mysql:mysql ${ROOT}/${DATADIR} 2> /dev/null 616 chown -R mysql:mysql "${ROOT}/${DATADIR}" 2> /dev/null
595 chmod 0750 ${ROOT}/${DATADIR} 2> /dev/null 617 chmod 0750 "${ROOT}/${DATADIR}" 2> /dev/null
596 618
597 if mysql_version_is_at_least "4.01.03.00" ; then 619 if mysql_version_is_at_least "4.01.03.00" ; then
598 options="--skip-ndbcluster" 620 options="--skip-ndbcluster"
599 621
600 # Filling timezones, see 622 # Filling timezones, see
601 # http://dev.mysql.com/doc/mysql/en/time-zone-support.html 623 # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
602 ${ROOT}/usr/bin/mysql_tzinfo_to_sql ${ROOT}/usr/share/zoneinfo \ 624 "${ROOT}/usr/bin/mysql_tzinfo_to_sql" "${ROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null
603 > "${sqltmp}" 2>/dev/null
604 625
605 if [[ -r "${help_tables}" ]] ; then 626 if [[ -r "${help_tables}" ]] ; then
606 cat "${help_tables}" >> "${sqltmp}" 627 cat "${help_tables}" >> "${sqltmp}"
607 fi 628 fi
608 fi 629 fi
609 630
610 local socket=${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock 631 local socket="${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock"
611 local pidfile=${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid 632 local pidfile="${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid"
612 local mysqld="${ROOT}/usr/sbin/mysqld \ 633 local mysqld="${ROOT}/usr/sbin/mysqld \
613 ${options} \ 634 ${options} \
614 --user=mysql \ 635 --user=mysql \
615 --skip-grant-tables \ 636 --skip-grant-tables \
616 --basedir=${ROOT}/usr \ 637 --basedir=${ROOT}/usr \
620 --skip-networking \ 641 --skip-networking \
621 --max_allowed_packet=8M \ 642 --max_allowed_packet=8M \
622 --net_buffer_length=16K \ 643 --net_buffer_length=16K \
623 --socket=${socket} \ 644 --socket=${socket} \
624 --pid-file=${pidfile}" 645 --pid-file=${pidfile}"
625 $mysqld & 646 ${mysqld} &
626 while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do 647 while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
627 maxtry=$(($maxtry-1)) 648 maxtry=$((${maxtry}-1))
628 echo -n "." 649 echo -n "."
629 sleep 1 650 sleep 1
630 done 651 done
631 652
632 # do this from memory we don't want clear text password in temp files 653 # Do this from memory, as we don't want clear text passwords in temp files
633 local sql="UPDATE mysql.user SET Password = PASSWORD('${pwd1}') WHERE USER='root'" 654 local sql="UPDATE mysql.user SET Password = PASSWORD('${pwd1}') WHERE USER='root'"
634 ${ROOT}/usr/bin/mysql \ 655 "${ROOT}/usr/bin/mysql" \
635 --socket=${socket} \ 656 --socket=${socket} \
636 -hlocalhost \ 657 -hlocalhost \
637 -e "${sql}" 658 -e "${sql}"
638 659
639 einfo "Loading \"zoneinfo\" this step may require few seconds" 660 einfo "Loading \"zoneinfo\", this step may require a few seconds ..."
640 661
641 ${ROOT}/usr/bin/mysql \ 662 "${ROOT}/usr/bin/mysql" \
642 --socket=${socket} \ 663 --socket=${socket} \
643 -hlocalhost \ 664 -hlocalhost \
644 -uroot \ 665 -uroot \
645 -p"${pwd1}" \ 666 -p"${pwd1}" \
646 mysql < "${sqltmp}" 667 mysql < "${sqltmp}"
647 668
648 # server stop and cleanup 669 # Stop the server and cleanup
649 kill $(< "${pidfile}" ) 670 kill $(< "${pidfile}" )
650 rm "${sqltmp}" 671 rm -f "${sqltmp}"
651 einfo "stopping the server," 672 einfo "Stopping the server ..."
652 wait %1 673 wait %1
653 einfo "done" 674 einfo "Done"
654} 675}
655 676
656mysql_pkg_postrm() { 677mysql_pkg_postrm() {
657 mysql_lib_symlinks 678 mysql_lib_symlinks
658} 679}

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.30

  ViewVC Help
Powered by ViewVC 1.1.20