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

Diff of /eclass/mysql.eclass

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

Revision 1.28 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.28 2006/04/11 17:23:42 vivo 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
282 if ! mysql_version_is_at_least "5.00.00.00" ; then
264 if useq "static" ; then 283 if useq "raid" ; then
284 myconf="${myconf} --with-raid"
285 else
265 myconf="${myconf} --without-raid" 286 myconf="${myconf} --without-raid"
266 ewarn "disabling raid support, has problem with static" 287 fi
288 fi
289
290 if mysql_version_is_at_least "4.01.00.00" && ! useq "latin1" ; then
291 myconf="${myconf} --with-charset=utf8"
292 myconf="${myconf} --with-collation=utf8_general_ci"
267 else 293 else
294 myconf="${myconf} --with-charset=latin1"
295 myconf="${myconf} --with-collation=latin1_swedish_ci"
296 fi
297
298 # Optional again with MySQL 5.1
268 if mysql_version_is_at_least "5.00.00.00" ; then 299 if mysql_version_is_at_least "5.01.00.00" ; then
300 if useq "innodb" ; then
269 myconf="${myconf} --without-raid" 301 myconf="${myconf} --with-innodb"
270 else 302 else
271 myconf="${myconf} `use_with raid`" 303 myconf="${myconf} --without-innodb"
272 fi 304 fi
273 fi 305 fi
274 306
275 if ! mysql_version_is_at_least "5.00.00.00" ; then
276 if mysql_version_is_at_least "4.01.00.00" ; then
277 myconf="${myconf} --with-charset=utf8"
278 myconf="${myconf} --with-collation=utf8_general_ci"
279 else
280 myconf="${myconf} --with-charset=latin1"
281 myconf="${myconf} --with-collation=latin1_swedish_ci"
282 fi
283 fi
284
285 # optional again from 2005-12-05
286 if mysql_version_is_at_least "5.01.00.00" ; then
287 myconf="${myconf} $(use_with innodb)"
288 else
289 myconf="${myconf} --with-innodb"
290 fi
291
292 # lots of chars 307 # Lots of charsets
293 myconf="${myconf} --with-extra-charsets=all" 308 myconf="${myconf} --with-extra-charsets=all"
294 309
295 #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:
296 #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
297 # it comes down to non-64-bit safety problems 312 # It comes down to non-64-bit safety problems.
298 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" \ 313 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" || useq "amd64" ; then
299 || useq "amd64" || mysql_check_version_range "5.01.00.00 to 5.01.06.99"
300 then
301 ewarn "bdb berkeley-db disabled due to arch or version" 314 ewarn "bdb berkeley-db disabled due to incompatible arch"
302 myconf="${myconf} --without-berkeley-db" 315 myconf="${myconf} --without-berkeley-db"
303 else 316 else
304 #TODO berkdb in 5.1 need to be worked on 317 # TODO: berkdb in MySQL 5.1 needs to be worked on
305 useq "berkdb" && \
306 ! 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
307 && myconf="${myconf} --with-berkeley-db=./bdb" \ 319 myconf="${myconf} --with-berkeley-db=./bdb"
320 else
308 || myconf="${myconf} --without-berkeley-db" 321 myconf="${myconf} --without-berkeley-db"
322 fi
309 fi 323 fi
310 324
311 if mysql_version_is_at_least "4.01.03.00" ; then 325 if mysql_version_is_at_least "4.01.03.00" ; then
312 #myconf="${myconf} $(use_with geometry)"
313 myconf="${myconf} --with-geometry" 326 myconf="${myconf} --with-geometry"
327
328 if useq "cluster" ; then
329 myconf="${myconf} --with-ndbcluster"
330 else
314 myconf="${myconf} $(use_with cluster ndbcluster)" 331 myconf="${myconf} --without-ndbcluster"
315 fi 332 fi
333 fi
316 334
317 mysql_version_is_at_least "4.01.11.00" \ 335 if useq "big-tables" ; then
318 && myconf="${myconf} `use_with big-tables`" 336 myconf="${myconf} --with-big-tables"
337 else
338 myconf="${myconf} --without-big-tables"
339 fi
319 340
320 mysql_version_is_at_least "5.01.06.00" \ 341 mysql_version_is_at_least "5.01.06.00" \
321 && myconf="${myconf} --with-ndb-binlog" 342 && myconf="${myconf} --with-ndb-binlog"
322 343
323 if useq "embedded" ; then 344 if useq "embedded" ; then
324 #REMIND, need the privilege control enabled ?
325 myconf="${myconf} --without-embedded-privilege-control" 345 myconf="${myconf} --with-embedded-privilege-control"
326 myconf="${myconf} --with-embedded-server" 346 myconf="${myconf} --with-embedded-server"
327 else 347 else
328 myconf="${myconf} --without-embedded-privilege-control" 348 myconf="${myconf} --without-embedded-privilege-control"
329 myconf="${myconf} --without-embedded-server" 349 myconf="${myconf} --without-embedded-server"
330 fi 350 fi
331 351
332 # benchmarking stuff needs perl 352 # Benchmarking stuff needs Perl
333 if useq "perl" ; then 353 if useq "perl" ; then
334 myconf="${myconf} --with-bench" 354 myconf="${myconf} --with-bench"
335 else 355 else
336 myconf="${myconf} --without-bench" 356 myconf="${myconf} --without-bench"
337 fi 357 fi
338 else 358 else
339 for i in ${minimal_exclude_list}; do 359 for i in ${minimal_exclude_list} ; do
340 myconf="${myconf} --without-${i}" 360 myconf="${myconf} --without-${i}"
341 done 361 done
342 myconf="${myconf} --without-berkeley-db" 362 myconf="${myconf} --without-berkeley-db"
343 myconf="${myconf} --with-extra-charsets=none" 363 myconf="${myconf} --with-extra-charsets=none"
344 fi 364 fi
345 365
346 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
347 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html 367 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
348 myconf="${myconf} --with-archive-storage-engine" 368 myconf="${myconf} --with-archive-storage-engine"
369
349 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html 370 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
350
351 mysql_version_is_at_least "4.01.04.00" \
352 && myconf="${myconf} --with-csv-storage-engine" 371 myconf="${myconf} --with-csv-storage-engine"
353 372
354 mysql_version_is_at_least "4.01.11.00" \ 373 # http://dev.mysql.com/doc/mysql/en/blackhole-storage-engine.html
355 && myconf="${myconf} --with-blackhole-storage-engine" 374 myconf="${myconf} --with-blackhole-storage-engine"
356 375
376 # http://dev.mysql.com/doc/mysql/en/federated-storage-engine.html
357 # http://dev.mysql.com/doc/mysql/en/federated-description.html 377 # http://dev.mysql.com/doc/mysql/en/federated-description.html
358 # http://dev.mysql.com/doc/mysql/en/federated-limitations.html 378 # http://dev.mysql.com/doc/mysql/en/federated-limitations.html
359 if mysql_version_is_at_least "5.00.03.00" ; then 379 if mysql_version_is_at_least "5.00.03.00" ; then
360 einfo "before to use federated engine be sure to read" 380 einfo "Before using the Federated storage engine, please be sure to read"
361 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"
362 myconf="${myconf} --with-federated-storage-engine" 382 myconf="${myconf} --with-federated-storage-engine"
383 fi
363 384
364 # 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
365 if mysql_version_is_at_least "5.01.00.00" ; then 386 if mysql_version_is_at_least "5.01.00.00" ; then
366 myconf="${myconf} --with-partition" 387 myconf="${myconf} --with-partition"
367 fi 388 fi
368 fi
369
370 fi 389 fi
371 390
372 mysql_version_is_at_least "5.00.18.00" \ 391 mysql_version_is_at_least "5.00.18.00" \
373 && useq "max-idx-128" \ 392 && useq "max-idx-128" \
374 && myconf="${myconf} --with-max-indexes=128" 393 && myconf="${myconf} --with-max-indexes=128"
375 394
376 if mysql_version_is_at_least "5.01.05.00" ; then 395 mysql_version_is_at_least "5.01.05.00" \
377 myconf="${myconf} --with-row-based-replication" 396 && myconf="${myconf} --with-row-based-replication"
378 fi
379 397
380 #TODO rechek again later, had problem with assembler enabled 398 # TODO: Rechek again later, there were problems with assembler enabled
381 # and some combination of use-flags with 5.1 399 # and some combination of USE flags with MySQL 5.1
382 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
383 myconf="${myconf} --disable-assembler" 401 myconf="${myconf} --disable-assembler"
384 else 402 else
385 myconf="${myconf} --enable-assembler" 403 myconf="${myconf} --enable-assembler"
386 fi 404 fi
387 405
388 #Bug #114895,Bug #110149 406 # Bug #114895, bug #110149
389 filter-flags "-O" "-O[01]" 407 filter-flags "-O" "-O[01]"
408
390 #glibc-2.3.2_pre fix; bug #16496 409 # glib-2.3.2_pre fix, bug #16496
391 append-flags "-DHAVE_ERRNO_AS_DEFINE=1" 410 append-flags "-DHAVE_ERRNO_AS_DEFINE=1"
392 411
393 #the compiler flags are as per their "official" spec ;) 412 # The compiler flags are as their "official" spec says ;)
394 #CFLAGS="${CFLAGS/-O?/} -O3" \ 413 # CFLAGS="${CFLAGS/-O?/} -O3"
395 export CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-exceptions -fno-rtti" 414 export CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-exceptions -fno-rtti"
396 mysql_version_is_at_least "5.00.00.00" \ 415 mysql_version_is_at_least "5.00.00.00" \
397 && export CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 416 && export CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
398 417
399 econf \ 418 econf \
412 --with-unix-socket-path="/var/run/mysqld/mysqld.sock" \ 431 --with-unix-socket-path="/var/run/mysqld/mysqld.sock" \
413 --without-readline \ 432 --without-readline \
414 --without-docs \ 433 --without-docs \
415 ${myconf} || die "bad ./configure" 434 ${myconf} || die "bad ./configure"
416 435
417 # TODO Move this before autoreconf !!! 436 # TODO: Move this before autoreconf !!!
418 find . -type f -name Makefile -print0 \ 437 find . -type f -name Makefile -print0 \
419 | xargs -0 -n100 sed -i \ 438 | xargs -0 -n100 sed -i \
420 -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)|'
421 440
422 emake || die "compile problem" 441 emake || die "compile problem"
423} 442}
424 443
425mysql_src_install() { 444mysql_src_install() {
426 445 # Make sure the vars are correctly initialized
427 mysql_init_vars 446 mysql_init_vars
447
428 make install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die 448 make install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "make install error"
429 449
430 insinto "${MY_INCLUDEDIR}" 450 insinto "${MY_INCLUDEDIR}"
431 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 451 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
432 452
433 # convenience links 453 # Convenience links
434 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze" 454 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
435 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" 455 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
436 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize" 456 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
437 457
438 # various junk (my-*.cnf moved elsewhere) 458 # Various junk (my-*.cnf moved elsewhere)
439 rm -rf "${D}/usr/share/info" 459 rm -Rf "${D}/usr/share/info"
440 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
441 binary-configure* my-*.cnf mi_test_all*
442 do
443 rm -f ${D}/usr/share/mysql/${removeme} 461 rm -f "${D}"/usr/share/mysql/${removeme}
444 done 462 done
445 463
446 # clean up stuff for a minimal build 464 # Clean up stuff for a minimal build
447 # this is anything server-specific
448 if useq "minimal" ; then 465 if useq "minimal" ; then
449 rm -rf ${D}${MY_SHAREDSTATEDIR}/{mysql-test,sql-bench} 466 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
450 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}
451 rm -f "${D}/usr/sbin/mysqld" 468 rm -f "${D}/usr/sbin/mysqld"
452 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
453 fi 470 fi
454 471
455 # 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
456 insinto "${MY_SYSCONFDIR}" 478 insinto "${MY_SYSCONFDIR}"
457 doins scripts/mysqlaccess.conf 479 doins "scripts/mysqlaccess.conf"
458 sed -e "s!@MY_SUFFIX@!!g" \
459 -e "s!@DATADIR@!${DATADIR}!g" \ 480 sed -e "s!@DATADIR@!${DATADIR}!g" \
460 "${FILESDIR}/my.cnf-4.1-r1" \ 481 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
461 > "${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
462 newins "${TMPDIR}/my.cnf.ok" my.cnf 486 newins "${TMPDIR}/my.cnf.ok" my.cnf
463 487
464 insinto "/etc/conf.d" 488 insinto "/etc/conf.d"
465 newins "${FILESDIR}/mysql.conf.d-r1" "mysql" 489 newins "${FILESDIR}/mysql.conf.d" "mysql"
466 mysql_version_is_at_least "5.00.11.00" \ 490 mysql_version_is_at_least "5.00.11.00" \
467 && newins "${FILESDIR}/mysqlmanager.conf.d" "mysqlmanager" 491 && newins "${FILESDIR}/mysqlmanager.conf.d" "mysqlmanager"
468 492
469 # minimal builds don't have the server 493 # Minimal builds don't have the MySQL server
470 if ! useq "minimal" ; then 494 if ! useq "minimal" ; then
471 exeinto /etc/init.d 495 exeinto "/etc/init.d"
472 newexe "${FILESDIR}/mysql.rc6-r3" "mysql" 496 newexe "${FILESDIR}/mysql.rc6" "mysql"
473
474 mysql_version_is_at_least "5.00.11.00" \ 497 mysql_version_is_at_least "5.00.11.00" \
475 && newexe "${FILESDIR}/mysqlmanager.rc6" "mysqlmanager" 498 && newexe "${FILESDIR}/mysqlmanager.rc6" "mysqlmanager"
499
476 insinto /etc/logrotate.d 500 insinto "/etc/logrotate.d"
477 newins "${FILESDIR}/logrotate.mysql" "mysql" 501 newins "${FILESDIR}/logrotate.mysql" "mysql"
478 502
479 #empty dirs... 503 # Empty directories ...
480 diropts "-m0750" 504 diropts "-m0750"
481 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 505 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
482 dodir "${DATADIR}" 506 dodir "${DATADIR}"
483 keepdir "${DATADIR}" 507 keepdir "${DATADIR}"
484 chown -R mysql:mysql "${D}/${DATADIR}" 508 chown -R mysql:mysql "${D}/${DATADIR}"
490 keepdir "${folder}" 514 keepdir "${folder}"
491 chown -R mysql:mysql "${D}/${folder}" 515 chown -R mysql:mysql "${D}/${folder}"
492 done 516 done
493 fi 517 fi
494 518
495 # docs 519 # Docs
496 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE 520 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
521
497 # minimal builds don't have the server 522 # Minimal builds don't have the MySQL server
498 if ! useq "minimal" ; then 523 if ! useq "minimal" ; then
499 docinto "support-files" 524 docinto "support-files"
500 for script in \ 525 for script in \
501 support-files/my-*.cnf \ 526 support-files/my-*.cnf \
502 support-files/magic \ 527 support-files/magic \
513 538
514 ROOT="${D}" mysql_lib_symlinks 539 ROOT="${D}" mysql_lib_symlinks
515} 540}
516 541
517mysql_pkg_preinst() { 542mysql_pkg_preinst() {
518
519 enewgroup mysql 60 || die "problem adding group mysql" 543 enewgroup mysql 60 || die "problem adding 'mysql' group"
520 enewuser mysql 60 -1 /dev/null mysql \ 544 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
521 || die "problem adding user mysql"
522} 545}
523 546
524mysql_pkg_postinst() { 547mysql_pkg_postinst() {
525 548 # Make sure the vars are correctly initialized
526 mysql_init_vars 549 mysql_init_vars
527 550
528 # mind at FEATURES=collision-protect before to remove this 551 # Check FEATURES="collision-protect" before removing this
529 [ -d "${ROOT}/var/log/mysql" ] \
530 || 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}"
531 553
532 #secure the logfiles... does this bother anybody? 554 # Secure the logfiles
533 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 555 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
534 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 556 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
535 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 557 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
536 558
537 if ! useq "minimal" ; then 559 if ! useq "minimal" ; then
538 # your friendly public service announcement... 560 # Your friendly public service announcement ...
539 einfo 561 einfo
540 einfo "You might want to run:" 562 einfo "You might want to run:"
541 einfo "\"emerge --config =${CATEGORY}/${PF}\"" 563 einfo "\"emerge --config =${CATEGORY}/${PF}\""
542 einfo "if this is a new install." 564 einfo "if this is a new install."
543 einfo 565 einfo
544 mysql_version_is_at_least "5.01.00.00" \ 566 mysql_version_is_at_least "5.01.00.00" \
545 || 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."
546 fi 568 fi
547} 569}
548 570
549mysql_pkg_config() { 571mysql_pkg_config() {
572 # Make sure the vars are correctly initialized
550 mysql_init_vars 573 mysql_init_vars
574
551 [[ -z "${DATADIR}" ]] && die "sorry, unable to find DATADIR" 575 [[ -z "${DATADIR}" ]] && die "Sorry, unable to find DATADIR"
552 576
553 if built_with_use dev-db/mysql minimal; then 577 if built_with_use dev-db/mysql minimal ; then
554 die "Minimal builds do NOT include the MySQL server" 578 die "Minimal builds do NOT include the MySQL server"
555 fi 579 fi
556 580
557 local pwd1="a" 581 local pwd1="a"
558 local pwd2="b" 582 local pwd2="b"
564 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."
565 die "MySQL database already exists!" 589 die "MySQL database already exists!"
566 fi 590 fi
567 591
568 einfo "Creating the mysql database and setting proper" 592 einfo "Creating the mysql database and setting proper"
569 einfo "permissions on it..." 593 einfo "permissions on it ..."
570 594
571 einfo "Insert a password for the mysql 'root' user" 595 einfo "Insert a password for the mysql 'root' user"
572 ewarn "Avoid [\"'\\_%] characters in the password" 596 ewarn "Avoid [\"'\\_%] characters in the password"
573
574 read -rsp " >" pwd1 ; echo 597 read -rsp " >" pwd1 ; echo
598
575 einfo "Check the password" 599 einfo "Retype the password"
576 read -rsp " >" pwd2 ; echo 600 read -rsp " >" pwd2 ; echo
577 601
578 if [[ "x$pwd1" != "x$pwd2" ]] ; then 602 if [[ "x$pwd1" != "x$pwd2" ]] ; then
579 die "Passwords are not the same" 603 die "Passwords are not the same"
580 fi 604 fi
581 605
582 local options="" 606 local options=""
583 local sqltmp="$(emktemp)" 607 local sqltmp="$(emktemp)"
584 608
585 local help_tables="${MY_SHAREDSTATEDIR}/fill_help_tables.sql" 609 local help_tables="${ROOT}${MY_SHAREDSTATEDIR}/fill_help_tables.sql"
586 [[ -r "${help_tables}" ]] \ 610 [[ -r "${help_tables}" ]] \
587 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \ 611 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
588 || touch "${TMPDIR}/fill_help_tables.sql" 612 || touch "${TMPDIR}/fill_help_tables.sql"
589 help_tables="${TMPDIR}/fill_help_tables.sql" 613 help_tables="${TMPDIR}/fill_help_tables.sql"
590 614
591 pushd "${TMPDIR}" &>/dev/null 615 pushd "${TMPDIR}" &>/dev/null
592 ${ROOT}/usr/bin/mysql_install_db | grep -B5 -A999 -i "ERROR" 616 "${ROOT}/usr/bin/mysql_install_db" | grep -B5 -A999 -i "ERROR"
593 popd &>/dev/null 617 popd &>/dev/null
594 [[ -f ${ROOT}/${DATADIR}/mysql/user.frm ]] \ 618 [[ -f "${ROOT}/${DATADIR}/mysql/user.frm" ]] \
595 || die "MySQL databases not installed" 619 || die "MySQL databases not installed"
596 chown -R mysql:mysql ${ROOT}/${DATADIR} 2> /dev/null 620 chown -R mysql:mysql "${ROOT}/${DATADIR}" 2> /dev/null
597 chmod 0750 ${ROOT}/${DATADIR} 2> /dev/null 621 chmod 0750 "${ROOT}/${DATADIR}" 2> /dev/null
598 622
599 if mysql_version_is_at_least "4.01.03.00" ; then 623 if mysql_version_is_at_least "4.01.03.00" ; then
600 options="--skip-ndbcluster" 624 options="--skip-ndbcluster"
601 625
602 # Filling timezones, see 626 # Filling timezones, see
603 # http://dev.mysql.com/doc/mysql/en/time-zone-support.html 627 # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
604 ${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
605 > "${sqltmp}" 2>/dev/null
606 629
607 if [[ -r "${help_tables}" ]] ; then 630 if [[ -r "${help_tables}" ]] ; then
608 cat "${help_tables}" >> "${sqltmp}" 631 cat "${help_tables}" >> "${sqltmp}"
609 fi 632 fi
610 fi 633 fi
611 634
612 local socket=${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock 635 local socket="${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock"
613 local pidfile=${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid 636 local pidfile="${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid"
614 local mysqld="${ROOT}/usr/sbin/mysqld \ 637 local mysqld="${ROOT}/usr/sbin/mysqld \
615 ${options} \ 638 ${options} \
616 --user=mysql \ 639 --user=mysql \
617 --skip-grant-tables \ 640 --skip-grant-tables \
618 --basedir=${ROOT}/usr \ 641 --basedir=${ROOT}/usr \
622 --skip-networking \ 645 --skip-networking \
623 --max_allowed_packet=8M \ 646 --max_allowed_packet=8M \
624 --net_buffer_length=16K \ 647 --net_buffer_length=16K \
625 --socket=${socket} \ 648 --socket=${socket} \
626 --pid-file=${pidfile}" 649 --pid-file=${pidfile}"
627 $mysqld & 650 ${mysqld} &
628 while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do 651 while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
629 maxtry=$(($maxtry-1)) 652 maxtry=$((${maxtry}-1))
630 echo -n "." 653 echo -n "."
631 sleep 1 654 sleep 1
632 done 655 done
633 656
634 # 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
635 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'"
636 ${ROOT}/usr/bin/mysql \ 659 "${ROOT}/usr/bin/mysql" \
637 --socket=${socket} \ 660 --socket=${socket} \
638 -hlocalhost \ 661 -hlocalhost \
639 -e "${sql}" 662 -e "${sql}"
640 663
641 einfo "Loading \"zoneinfo\" this step may require few seconds" 664 einfo "Loading \"zoneinfo\", this step may require a few seconds ..."
642 665
643 ${ROOT}/usr/bin/mysql \ 666 "${ROOT}/usr/bin/mysql" \
644 --socket=${socket} \ 667 --socket=${socket} \
645 -hlocalhost \ 668 -hlocalhost \
646 -uroot \ 669 -uroot \
647 -p"${pwd1}" \ 670 -p"${pwd1}" \
648 mysql < "${sqltmp}" 671 mysql < "${sqltmp}"
649 672
650 # server stop and cleanup 673 # Stop the server and cleanup
651 kill $(< "${pidfile}" ) 674 kill $(< "${pidfile}" )
652 rm "${sqltmp}" 675 rm -f "${sqltmp}"
653 einfo "stopping the server," 676 einfo "Stopping the server ..."
654 wait %1 677 wait %1
655 einfo "done" 678 einfo "Done"
656} 679}
657 680
658mysql_pkg_postrm() { 681mysql_pkg_postrm() {
659 mysql_lib_symlinks 682 mysql_lib_symlinks
660} 683}

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

  ViewVC Help
Powered by ViewVC 1.1.20