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

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

  ViewVC Help
Powered by ViewVC 1.1.20