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

Diff of /eclass/mysql.eclass

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

Revision 1.55 Revision 1.72
1# Copyright 1999-2006 Gentoo Foundation 1# Copyright 1999-2007 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.55 2007/01/03 15:27:13 vivo Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.72 2007/03/16 22:47:29 chtekk Exp $
4# kate: encoding utf-8; eol unix;
5# kate: indent-width 4; mixedindent off; remove-trailing-space on; space-indent off;
6# kate: word-wrap-column 80; word-wrap off;
7 4
8# Author: Francesco Riosa (Retired) <vivo@gentoo.org> 5# Author: Francesco Riosa (Retired) <vivo@gentoo.org>
9# Maintainer: Luca Longinotti <chtekk@gentoo.org> 6# Maintainer: Luca Longinotti <chtekk@gentoo.org>
10 7
8# Both MYSQL_VERSION_ID and MYSQL_PATCHSET_REV must be set in the ebuild too!
11# Note that MYSQL_VERSION_ID must be empty !!! 9# Note that MYSQL_VERSION_ID must be empty!
12 10
13ECLASS="mysql" 11WANT_AUTOCONF="latest"
14INHERITED="$INHERITED $ECLASS" 12WANT_AUTOMAKE="latest"
13
15inherit eutils flag-o-matic gnuconfig autotools mysql_fx 14inherit eutils flag-o-matic gnuconfig autotools mysql_fx
16 15
17# avoid running userspace code 8 times per ebuild :( 16# Shorten the path because the socket path length must be shorter than 107 chars
18if [[ "${_MYPVR}" != "${PVR}" ]] || [[ -z "${MYSQL_VERSION_ID}" ]] 17# and we will run a mysql server during test phase
19then 18S="${WORKDIR}/mysql"
20 _MYPVR=${PVR}
21 19
22 [[ -z ${MY_EXTRAS_VER} ]] && MY_EXTRAS_VER="20070103" 20[[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20070108"
23 21
24 if [[ ${PR#r} -lt 60 ]] ; then 22if [[ ${PR#r} -lt 60 ]] ; then
25 IS_BITKEEPER=0 23 IS_BITKEEPER=0
26 elif [[ ${PR#r} -lt 90 ]] ; then 24elif [[ ${PR#r} -lt 90 ]] ; then
27 IS_BITKEEPER=60 25 IS_BITKEEPER=60
28 else 26else
29 IS_BITKEEPER=90 27 IS_BITKEEPER=90
30 fi 28fi
31 29
32 # MYSQL_VERSION_ID will be: 30# MYSQL_VERSION_ID will be:
33 # major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99] 31# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99]
34 # This is an important part, because many of the choices the MySQL ebuild will do 32# This is an important part, because many of the choices the MySQL ebuild will do
35 # depend on this variable. 33# depend on this variable.
36 # In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803" 34# In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803"
35
37 MYSQL_VERSION_ID="" 36MYSQL_VERSION_ID=""
38 tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}" 37tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
39 for vatom in 0 1 2 3 ; do 38for vatom in 0 1 2 3 ; do
40 # pad to length 2 39 # pad to length 2
41 tpv[${vatom}]="00${tpv[${vatom}]}" 40 tpv[${vatom}]="00${tpv[${vatom}]}"
42 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}" 41 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
43 done 42done
44 # strip leading "0" (otherwise it's considered an octal number by BASH) 43# strip leading "0" (otherwise it's considered an octal number by BASH)
45 MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"} 44MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
46 45
47 # Be warned, *DEPEND are version-dependant 46# Be warned, *DEPEND are version-dependant
48 DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d ) 47DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d )
49 userland_GNU? ( sys-process/procps ) 48 userland_GNU? ( sys-process/procps )
50 >=sys-apps/sed-4 49 >=sys-apps/sed-4
51 >=sys-apps/texinfo-4.7-r1 50 >=sys-apps/texinfo-4.7-r1
52 >=sys-libs/readline-4.1 51 >=sys-libs/readline-4.1
53 >=sys-libs/zlib-1.2.3" 52 >=sys-libs/zlib-1.2.3"
54 53
55 # having different flavours at the same time is not a good idea 54# Having different flavours at the same time is not a good idea
56 for i in "" "-community" "-slotted" ; do 55for i in "" "-community" ; do
57 [[ "${i}" == ${PN#mysql} ]] || 56 [[ "${i}" == ${PN#mysql} ]] ||
58 DEPEND="${DEPEND} !dev-db/mysql${i}" 57 DEPEND="${DEPEND} !dev-db/mysql${i}"
59 done 58done
60 59
61 mysql_version_is_at_least "5.1" \ 60mysql_version_is_at_least "5.1" \
62 || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )" 61|| DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
63 62
63mysql_version_is_at_least "5.1.12" \
64&& DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )"
65
64 # dev-perl/DBD-mysql is needed by some scripts installed by MySQL 66# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
65 PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" 67PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
66 68
67 if mysql_version_is_at_least "5.1.12" ; then
68 DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )"
69 fi
70
71 # Shorten the path because the socket path length must be shorter than 107 chars
72 # and we will run a mysql server during test phase
73 S="${WORKDIR}/mysql"
74
75 # BitKeeper dependency, compile-time only 69# BitKeeper dependency, compile-time only
76 [[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client" 70[[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client"
77 71
78 if [[ ${PN} == "mysql-slotted" ]] ; then
79 DEPEND="${DEPEND} app-admin/eselect-mysql"
80 fi
81
82 if [[ ${PN} == "mysql-slotted" ]] ; then
83 SLOT=""
84 tpv=( ${PV//[-._]/ } )
85 for vatom in 0 1 2 ; do
86 SLOT="${SLOT}${tpv[${vatom}]}_"
87 done
88 #finally SLOT=5_0_24
89 SLOT=${SLOT:0:${#SLOT}-1}
90 else
91 SLOT="0"
92 fi
93
94 # Define correct SRC_URIs 72# Define correct SRC_URIs
95 SRC_URI=" 73SRC_URI="${SERVER_URI}
96 ${SERVER_URI}
97 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 74 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
98 "
99 mysql_version_is_at_least "5.1.12" \ 75mysql_version_is_at_least "5.1.12" \
100 && [[ -n "${PBXT_VERSION}" ]] \ 76&& [[ -n "${PBXT_VERSION}" ]] \
101 && SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )" 77&& SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )"
102 78
103 DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 79DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
104 HOMEPAGE="http://www.mysql.com/" 80HOMEPAGE="http://www.mysql.com/"
105 LICENSE="GPL-2" 81LICENSE="GPL-2"
82SLOT="0"
106 IUSE="big-tables debug embedded minimal perl selinux ssl static" 83IUSE="big-tables debug embedded minimal perl selinux ssl static"
107 RESTRICT="confcache" 84RESTRICT="confcache"
108 85
109 mysql_version_is_at_least "4.1" \ 86mysql_version_is_at_least "4.1" \
110 && IUSE="${IUSE} latin1" 87&& IUSE="${IUSE} latin1"
111 88
112 mysql_version_is_at_least "4.1.3" \ 89mysql_version_is_at_least "4.1.3" \
113 && IUSE="${IUSE} cluster extraengine" 90&& IUSE="${IUSE} cluster extraengine"
114 91
115 mysql_version_is_at_least "5.0" \ 92mysql_version_is_at_least "5.0" \
116 || IUSE="${IUSE} raid" 93|| IUSE="${IUSE} raid"
117 94
118 mysql_version_is_at_least "5.0.18" \ 95mysql_version_is_at_least "5.0.18" \
119 && IUSE="${IUSE} max-idx-128" 96&& IUSE="${IUSE} max-idx-128"
120 97
121 mysql_version_is_at_least "5.1" \ 98mysql_version_is_at_least "5.1" \
122 && IUSE="${IUSE} innodb" 99&& IUSE="${IUSE} innodb"
123 100
124 mysql_version_is_at_least "5.1" \ 101mysql_version_is_at_least "5.1" \
125 || IUSE="${IUSE} berkdb" 102|| IUSE="${IUSE} berkdb"
126 103
127 mysql_version_is_at_least "5.1.12" \ 104mysql_version_is_at_least "5.1.12" \
128 && IUSE="${IUSE} pbxt" 105&& IUSE="${IUSE} pbxt"
129 106
107RDEPEND="${DEPEND}
108 !minimal? ( dev-db/mysql-init-scripts )
130 RDEPEND="${DEPEND} selinux? ( sec-policy/selinux-mysql )" 109 selinux? ( sec-policy/selinux-mysql )"
131
132fi # if [[ "${_MYPVR}" != "${PVR}" ]]
133 110
134EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ 111EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
135 pkg_postinst pkg_config pkg_postrm 112 pkg_postinst pkg_config pkg_postrm
136 113
137# 114#
138# HELPER FUNCTIONS: 115# HELPER FUNCTIONS:
139# 116#
140 117
141bitkeeper_fetch() { 118bitkeeper_fetch() {
142 119 local reposuf
120 if [[ -z "${1}" ]] ; then
121 local tpv
143 local tpv=( ${PV//[-._]/ } ) 122 tpv=( ${PV//[-._]/ } )
144 local reposuf="${tpv[0]}.${tpv[1]}" 123 reposuf="mysql-${tpv[0]}.${tpv[1]}"
145 useq "cluster" && reposuf="${reposuf}-ndb" 124 else
125 reposuf="${1}"
126 fi
127 einfo "Using '${reposuf}' repository."
146 local repo_uri="bk://mysql.bkbits.net/mysql-${reposuf}" 128 local repo_uri="bk://mysql.bkbits.net/${reposuf}"
147 ## -- ebk_store_dir: bitkeeper sources store directory 129 ## -- ebk_store_dir: bitkeeper sources store directory
148 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src" 130 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src"
149 ## -- ebk_fetch_cmd: bitkeeper fetch command 131 ## -- ebk_fetch_cmd: bitkeeper fetch command
150 # always fetch the latest revision, use -r<revision> if a specified revision is wanted 132 # always fetch the latest revision, use -r<revision> if a specified revision is wanted
151 # hint: does not work 133 # hint: does not work
152 local ebk_fetch_cmd="sfioball" 134 local ebk_fetch_cmd="sfioball"
153 ## -- ebk_update_cmd: bitkeeper update command 135 ## -- ebk_update_cmd: bitkeeper update command
154 local ebk_update_cmd="update" 136 local ebk_update_cmd="update"
155 137
156 #addread "/etc/bitkeeper" 138 # addread "/etc/bitkeeper"
157 addwrite "${ebk_store_dir}" 139 addwrite "${ebk_store_dir}"
158 140
159 if [[ ! -d "${ebk_store_dir}" ]]; then 141 if [[ ! -d "${ebk_store_dir}" ]] ; then
160 debug-print "${FUNCNAME}: initial checkout. creating bitkeeper directory" 142 debug-print "${FUNCNAME}: initial checkout, creating bitkeeper directory ..."
161 mkdir -p "${ebk_store_dir}" || die "${EBK}: can't mkdir ${ebk_store_dir}." 143 mkdir -p "${ebk_store_dir}" || die "BK: couldn't mkdir ${ebk_store_dir}"
162 fi 144 fi
163 145
164 pushd "${ebk_store_dir}" || die "${EBK}: can't chdir to ${ebk_store_dir}" 146 pushd "${ebk_store_dir}" || die "BK: couldn't chdir to ${ebk_store_dir}"
165 147
166 local wc_path=mysql-${reposuf} 148 local wc_path=${reposuf}
167 149
168 if [[ ! -d "${wc_path}" ]]; then 150 if [[ ! -d "${wc_path}" ]] ; then
169 local options="-r+" 151 local options="-r+"
152
170 # first check out 153 # first checkout
171 einfo "bitkeeper check out start -->" 154 einfo "bitkeeper checkout start -->"
172 einfo " repository: ${repo_uri}" 155 einfo " repository: ${repo_uri}"
156
173 ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \ 157 ${ebk_fetch_cmd} ${options} "${repo_uri}" "${wc_path}" \
174 || die "${EBK}: can't fetch from ${repo_uri}." 158 || die "BK: couldn't fetch from ${repo_uri}"
175 else 159 else
176 if [[ ! -d "${wc_path}/BK" ]]; then 160 if [[ ! -d "${wc_path}/BK" ]] ; then
177 popd 161 popd
178 die "Look like ${wc_path} is not a bitkeeper path." 162 die "Looks like ${wc_path} is not a bitkeeper path"
179 fi 163 fi
180 164
181 # update working copy 165 # update working copy
182 einfo "bitkeeper update start -->" 166 einfo "bitkeeper update start -->"
183 einfo " repository: ${repo_uri}" 167 einfo " repository: ${repo_uri}"
184 168
185 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \ 169 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \
186 || die "BK: can't update from ${repo_uri} to ${wc_path}." 170 || die "BK: couldn't update from ${repo_uri} to ${wc_path}"
187
188 fi 171 fi
189 172
190 einfo " working copy: ${wc_path}" 173 einfo " working copy: ${wc_path}"
191 cd "${wc_path}" 174 cd "${wc_path}"
192 rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: can't export to ${S}." 175 rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: couldn't export to ${S}"
193 176
194 echo 177 echo
195 popd 178 popd
196
197} 179}
198 180
199mysql_disable_test() { 181mysql_disable_test() {
200 local testname="${1}" ; shift 182 local testname="${1}" ; shift
201 local reason="${@}" 183 local reason="${@}"
202 local mysql_disable_file="${S}/mysql-test/t/disabled.def" 184 local mysql_disable_file="${S}/mysql-test/t/disabled.def"
203 echo ${testname} : ${reason} >> "${mysql_disable_file}" 185 echo ${testname} : ${reason} >> "${mysql_disable_file}"
204 ewarn "test \"${testname}\" disabled because: \"${reason}\"" 186 ewarn "test '${testname}' disabled: '${reason}'"
205} 187}
206 188
207# void mysql_init_vars() 189# void mysql_init_vars()
208# 190#
209# Initialize global variables 191# Initialize global variables
210# 2005-11-19 <vivo@gentoo.org> 192# 2005-11-19 <vivo@gentoo.org>
211 193
212mysql_init_vars() { 194mysql_init_vars() {
213 if [[ ${SLOT} == "0" ]] ; then
214 MY_SUFFIX=""
215 else
216 MY_SUFFIX=${MY_SUFFIX:-"-${SLOT}"}
217 fi
218 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql${MY_SUFFIX}"} 195 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"}
219 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql${MY_SUFFIX}"} 196 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
220 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql${MY_SUFFIX}"} 197 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"}
221 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql${MY_SUFFIX}"} 198 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
222 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql${MY_SUFFIX}"} 199 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"}
223 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql${MY_SUFFIX}"} 200 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"}
224 201
225 if [[ -z "${DATADIR}" ]] ; then 202 if [[ -z "${DATADIR}" ]] ; then
226 DATADIR="" 203 DATADIR=""
227 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then 204 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
228 DATADIR=`"my_print_defaults${MY_SUFFIX}" mysqld 2>/dev/null \ 205 DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
229 | sed -ne '/datadir/s|^--datadir=||p' \ 206 | sed -ne '/datadir/s|^--datadir=||p' \
230 | tail -n1` 207 | tail -n1`
231 if [[ -z "${DATADIR}" ]] ; then 208 if [[ -z "${DATADIR}" ]] ; then
232 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ 209 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
233 | sed -e 's/.*=\s*//'` 210 | sed -e 's/.*=\s*//'`
252 fi 229 fi
253 230
254 MY_SOURCEDIR=${SERVER_URI##*/} 231 MY_SOURCEDIR=${SERVER_URI##*/}
255 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*} 232 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
256 233
257 export MY_SUFFIX MY_SHAREDSTATEDIR MY_SYSCONFDIR 234 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
258 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 235 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
259 export MY_INCLUDEDIR DATADIR MY_SOURCEDIR 236 export MY_INCLUDEDIR DATADIR MY_SOURCEDIR
260} 237}
261 238
262configure_minimal() { 239configure_minimal() {
269 myconf="${myconf} --without-${i}" 246 myconf="${myconf} --without-${i}"
270 done 247 done
271 myconf="${myconf} --with-extra-charsets=none" 248 myconf="${myconf} --with-extra-charsets=none"
272 myconf="${myconf} --enable-local-infile" 249 myconf="${myconf} --enable-local-infile"
273 250
274 if useq "static" ; then 251 if use static ; then
275 myconf="${myconf} --with-client-ldflags=-all-static" 252 myconf="${myconf} --with-client-ldflags=-all-static"
276 myconf="${myconf} --disable-shared" 253 myconf="${myconf} --disable-shared"
277 else 254 else
278 myconf="${myconf} --enable-shared --enable-static" 255 myconf="${myconf} --enable-shared --enable-static"
279 fi 256 fi
280 257
281 if mysql_version_is_at_least "4.01.00.00" && ! useq "latin1" ; then 258 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
282 myconf="${myconf} --with-charset=utf8" 259 myconf="${myconf} --with-charset=utf8"
283 myconf="${myconf} --with-collation=utf8_general_ci" 260 myconf="${myconf} --with-collation=utf8_general_ci"
284 else 261 else
285 myconf="${myconf} --with-charset=latin1" 262 myconf="${myconf} --with-charset=latin1"
286 myconf="${myconf} --with-collation=latin1_swedish_ci" 263 myconf="${myconf} --with-collation=latin1_swedish_ci"
294 myconf="${myconf} --with-mysqld-user=mysql" 271 myconf="${myconf} --with-mysqld-user=mysql"
295 myconf="${myconf} --with-server" 272 myconf="${myconf} --with-server"
296 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock" 273 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock"
297 myconf="${myconf} --without-libwrap" 274 myconf="${myconf} --without-libwrap"
298 275
299 if useq "static" ; then 276 if use static ; then
300 myconf="${myconf} --with-mysqld-ldflags=-all-static" 277 myconf="${myconf} --with-mysqld-ldflags=-all-static"
301 myconf="${myconf} --with-client-ldflags=-all-static" 278 myconf="${myconf} --with-client-ldflags=-all-static"
302 myconf="${myconf} --disable-shared" 279 myconf="${myconf} --disable-shared"
303 else 280 else
304 myconf="${myconf} --enable-shared --enable-static" 281 myconf="${myconf} --enable-shared --enable-static"
305 fi 282 fi
306 283
307 if useq "debug" ; then 284 if use debug ; then
308 myconf="${myconf} --with-debug=full" 285 myconf="${myconf} --with-debug=full"
309 else 286 else
310 myconf="${myconf} --without-debug" 287 myconf="${myconf} --without-debug"
311 mysql_version_is_at_least "4.1.3" \ 288 mysql_version_is_at_least "4.1.3" \
312 && useq "cluster" \ 289 && use cluster \
313 && myconf="${myconf} --without-ndb-debug" 290 && myconf="${myconf} --without-ndb-debug"
314 fi 291 fi
315 292
316 if mysql_version_is_at_least "4.1" && ! useq "latin1" ; then 293 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
317 myconf="${myconf} --with-charset=utf8" 294 myconf="${myconf} --with-charset=utf8"
318 myconf="${myconf} --with-collation=utf8_general_ci" 295 myconf="${myconf} --with-collation=utf8_general_ci"
319 else 296 else
320 myconf="${myconf} --with-charset=latin1" 297 myconf="${myconf} --with-charset=latin1"
321 myconf="${myconf} --with-collation=latin1_swedish_ci" 298 myconf="${myconf} --with-collation=latin1_swedish_ci"
322 fi 299 fi
323 300
324 if useq "embedded" ; then 301 if use embedded ; then
325 myconf="${myconf} --with-embedded-privilege-control" 302 myconf="${myconf} --with-embedded-privilege-control"
326 myconf="${myconf} --with-embedded-server" 303 myconf="${myconf} --with-embedded-server"
327 else 304 else
328 myconf="${myconf} --without-embedded-privilege-control" 305 myconf="${myconf} --without-embedded-privilege-control"
329 myconf="${myconf} --without-embedded-server" 306 myconf="${myconf} --without-embedded-server"
337 myconf="${myconf} --with-extra-tools" 314 myconf="${myconf} --with-extra-tools"
338 myconf="${myconf} --with-innodb" 315 myconf="${myconf} --with-innodb"
339 myconf="${myconf} --without-readline" 316 myconf="${myconf} --without-readline"
340 mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)" 317 mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)"
341 318
342 if useq "ssl" ; then
343 # --with-vio is not needed anymore, it's on by default and 319 # --with-vio is not needed anymore, it's on by default and
344 # has been removed from configure 320 # has been removed from configure
321 if use ssl ; then
345 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio" 322 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio"
323 fi
324
346 if mysql_version_is_at_least "5.0.6" ; then 325 if mysql_version_is_at_least "5.1.11" ; then
347 # myconf="${myconf} --with-yassl" 326 myconf="${myconf} $(use_with ssl)"
348 myconf="${myconf} --with-openssl"
349 else 327 else
350 myconf="${myconf} --with-openssl" 328 myconf="${myconf} $(use_with ssl openssl)"
351 fi
352 else
353 myconf="${myconf} --without-openssl"
354 fi 329 fi
355 330
356 # The following fix is due to a bug with bdb on SPARC's. See: 331 # The following fix is due to a bug with bdb on SPARC's. See:
357 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8 332 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
358 # It comes down to non-64-bit safety problems. 333 # It comes down to non-64-bit safety problems.
359 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" || useq "amd64" ; then 334 if use alpha || use amd64 || use hppa || use mips || use sparc ; then
360 elog "Berkeley DB support was disabled due to incompatible arch" 335 elog "Berkeley DB support was disabled due to incompatible arch"
361 myconf="${myconf} --without-berkeley-db" 336 myconf="${myconf} --without-berkeley-db"
362 else 337 else
363 if useq "berkdb" ; then 338 if use berkdb ; then
364 myconf="${myconf} --with-berkeley-db=./bdb" 339 myconf="${myconf} --with-berkeley-db=./bdb"
365 else 340 else
366 myconf="${myconf} --without-berkeley-db" 341 myconf="${myconf} --without-berkeley-db"
367 fi 342 fi
368 fi 343 fi
370 if mysql_version_is_at_least "4.1.3" ; then 345 if mysql_version_is_at_least "4.1.3" ; then
371 myconf="${myconf} --with-geometry" 346 myconf="${myconf} --with-geometry"
372 myconf="${myconf} $(use_with cluster ndbcluster)" 347 myconf="${myconf} $(use_with cluster ndbcluster)"
373 fi 348 fi
374 349
375 if mysql_version_is_at_least "4.1.3" && useq "extraengine" ; then 350 if mysql_version_is_at_least "4.1.3" && use extraengine ; then
376 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html 351 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
377 myconf="${myconf} --with-archive-storage-engine" 352 myconf="${myconf} --with-archive-storage-engine"
378 353
379 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html 354 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
380 myconf="${myconf} --with-csv-storage-engine" 355 myconf="${myconf} --with-csv-storage-engine"
391 myconf="${myconf} --with-federated-storage-engine" 366 myconf="${myconf} --with-federated-storage-engine"
392 fi 367 fi
393 fi 368 fi
394 369
395 mysql_version_is_at_least "5.0.18" \ 370 mysql_version_is_at_least "5.0.18" \
396 && useq "max-idx-128" \ 371 && use max-idx-128 \
397 && myconf="${myconf} --with-max-indexes=128" 372 && myconf="${myconf} --with-max-indexes=128"
398} 373}
399 374
400configure_51() { 375configure_51() {
401 # TODO: !!!! readd --without-readline 376 # TODO: !!!! readd --without-readline
406 myconf="${myconf} --with-geometry" 381 myconf="${myconf} --with-geometry"
407 myconf="${myconf} --with-readline" 382 myconf="${myconf} --with-readline"
408 myconf="${myconf} --with-row-based-replication" 383 myconf="${myconf} --with-row-based-replication"
409 myconf="${myconf} --with-zlib=/usr/$(get_libdir)" 384 myconf="${myconf} --with-zlib=/usr/$(get_libdir)"
410 myconf="${myconf} --without-pstack" 385 myconf="${myconf} --without-pstack"
411 useq "max-idx-128" && myconf="${myconf} --with-max-indexes=128" 386 use max-idx-128 && myconf="${myconf} --with-max-indexes=128"
412 387
413 # 5.1 introduces a new way to manage storage engines (plugins) 388 # 5.1 introduces a new way to manage storage engines (plugins)
414 # like configuration=none 389 # like configuration=none
415 local plugins="csv,myisam,myisammrg,heap" 390 local plugins="csv,myisam,myisammrg,heap"
416 if useq "extraengine" ; then 391 if use extraengine ; then
417 # like configuration=max-no-ndb, archive and example removed in 5.1.11 392 # like configuration=max-no-ndb, archive and example removed in 5.1.11
418 plugins="${plugins},archive,blackhole,example,federated,partition" 393 plugins="${plugins},archive,blackhole,example,federated,partition"
419 394
420 elog "Before using the Federated storage engine, please be sure to read" 395 elog "Before using the Federated storage engine, please be sure to read"
421 elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html" 396 elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html"
422 fi 397 fi
423 398
424 if useq "innodb" ; then 399 if use innodb ; then
425 plugins="${plugins},innobase" 400 plugins="${plugins},innobase"
426 fi 401 fi
427 402
428 # like configuration=max-no-ndb 403 # like configuration=max-no-ndb
429 if useq "cluster" ; then 404 if use cluster ; then
430 plugins="${plugins},ndbcluster" 405 plugins="${plugins},ndbcluster"
431 myconf="${myconf} --with-ndb-binlog" 406 myconf="${myconf} --with-ndb-binlog"
432 fi 407 fi
433 408
409 if mysql_version_is_at_least "5.2" ; then
410 plugins="${plugins},falcon"
411 fi
412
434 myconf="${myconf} --with-plugins=${plugins}" 413 myconf="${myconf} --with-plugins=${plugins}"
435} 414}
436 415
437pbxt_src_compile() { 416pbxt_src_compile() {
438 mysql_init_vars 417 mysql_init_vars
440 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null 419 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
441 420
442 einfo "Reconfiguring dir '${PWD}'" 421 einfo "Reconfiguring dir '${PWD}'"
443 AT_GNUCONF_UPDATE="yes" eautoreconf 422 AT_GNUCONF_UPDATE="yes" eautoreconf
444 423
445 local myconf 424 local myconf=""
446 myconf="${myconf} --with-mysql=${S}"
447 mkdir -p ${T}/lib
448 myconf="${myconf} --libdir=${D}/${MY_LIBDIR}" 425 myconf="${myconf} --with-mysql=${S} --libdir=${D}/${MY_LIBDIR}"
449 useq "debug" && myconf="${myconf} --with-debug=full" 426 use debug && myconf="${myconf} --with-debug=full"
450 # TODO is safe/needed to use econf here ? 427 # TODO: is it safe/needed to use econf here ?
451 ./configure ${myconf} || die "problem configuring pbxt storage engine" 428 ./configure ${myconf} || die "Problem configuring PBXT storage engine"
452 # TODO is safe/needed to use emake here ? 429 # TODO: is it safe/needed to use emake here ?
453 make || die "problem making pbxt storage engine (${myconf})" 430 make || die "Problem making PBXT storage engine (${myconf})"
454 431
455 popd 432 popd
456 # TODO: modify test suite 433 # TODO: modify test suite for PBXT
457} 434}
458 435
459pbxt_src_install() { 436pbxt_src_install() {
460 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null 437 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
461 make install || die "failed pbxt install" 438 make install || die "Failed to install PBXT"
462 popd 439 popd
463} 440}
464 441
465# 442#
466# EBUILD FUNCTIONS 443# EBUILD FUNCTIONS
469mysql_pkg_setup() { 446mysql_pkg_setup() {
470 enewgroup mysql 60 || die "problem adding 'mysql' group" 447 enewgroup mysql 60 || die "problem adding 'mysql' group"
471 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" 448 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
472 449
473 # Check for USE flag problems in pkg_setup 450 # Check for USE flag problems in pkg_setup
474 if useq "static" && useq "ssl" ; then 451 if use static && use ssl ; then
475 eerror "MySQL does not support being built statically with SSL support enabled!" 452 eerror "MySQL does not support being built statically with SSL support enabled!"
476 die "MySQL does not support being built statically with SSL support enabled!" 453 die "MySQL does not support being built statically with SSL support enabled!"
477 fi 454 fi
478 455
479 if ! mysql_version_is_at_least "5.0" \ 456 if ! mysql_version_is_at_least "5.0" \
480 && useq "raid" \ 457 && use raid \
481 && useq "static" ; then 458 && use static ; then
482 eerror "USE flags 'raid' and 'static' conflict, you cannot build MySQL statically" 459 eerror "USE flags 'raid' and 'static' conflict, you cannot build MySQL statically"
483 eerror "with RAID support enabled." 460 eerror "with RAID support enabled."
484 die "USE flags 'raid' and 'static' conflict!" 461 die "USE flags 'raid' and 'static' conflict!"
485 fi 462 fi
486 463
487 if mysql_version_is_at_least "4.1.3" \ 464 if mysql_version_is_at_least "4.1.3" \
488 && ( useq "cluster" || useq "extraengine" ) \ 465 && ( use cluster || use extraengine ) \
489 && useq "minimal" ; then 466 && use minimal ; then
490 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 467 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
491 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 468 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
492 fi 469 fi
493 470
494 mysql_check_version_range "4.0 to 5.0.99.99" \ 471 mysql_check_version_range "4.0 to 5.0.99.99" \
495 && useq "berkdb" \ 472 && use berkdb \
496 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 473 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
497} 474}
498 475
499mysql_src_unpack() { 476mysql_src_unpack() {
500 # Initialize the proper variables first 477 # Initialize the proper variables first
501 mysql_init_vars 478 mysql_init_vars
502 479
503 unpack ${A} 480 unpack ${A}
504 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then 481 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then
482 if mysql_check_version_range "5.1 to 5.1.99" ; then
483 bitkeeper_fetch "mysql-5.1-ndb"
484 elif mysql_check_version_range "5.2 to 5.2.99" ; then
485 bitkeeper_fetch "mysql-5.2-falcon"
486 else
505 bitkeeper_fetch 487 bitkeeper_fetch
488 fi
506 cd "${S}" 489 cd "${S}"
507 einfo "running upstream autorun on bk sources" 490 einfo "Running upstream autorun over BK sources ..."
508 BUILD/autorun.sh 491 BUILD/autorun.sh
509 else 492 else
510 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}" 493 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
511 cd "${S}" 494 cd "${S}"
512 fi 495 fi
513 496
514 # Apply the patches for this MySQL version 497 # Apply the patches for this MySQL version
515 EPATCH_SUFFIX="patch" 498 EPATCH_SUFFIX="patch"
516 mkdir -p "${EPATCH_SOURCE}" || die "unable to create epatch directory" 499 mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory"
517 mysql_mv_patches 500 mysql_mv_patches
518 epatch || die "failed to apply all patches" 501 epatch
519 502
520 # Additional checks, remove bundled zlib 503 # Additional checks, remove bundled zlib
521 rm -f "${S}/zlib/"*.[ch] 504 rm -f "${S}/zlib/"*.[ch]
522 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" 505 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
523 rm -f "scripts/mysqlbug" 506 rm -f "scripts/mysqlbug"
538 521
539 local rebuilddirlist d 522 local rebuilddirlist d
540 523
541 if mysql_version_is_at_least "5.1.12" ; then 524 if mysql_version_is_at_least "5.1.12" ; then
542 rebuilddirlist="." 525 rebuilddirlist="."
543 # TODO IMPO! Check this with a cmake expert 526 # TODO: check this with a cmake expert
544 useq "innodb" \ 527 use innodb \
545 && cmake \ 528 && cmake \
546 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \ 529 -DCMAKE_C_COMPILER=$(type -P $(tc-getCC)) \
547 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \ 530 -DCMAKE_CXX_COMPILER=$(type -P $(tc-getCC)) \
548 "storage/innobase" 531 "storage/innobase"
549 else 532 else
550 rebuilddirlist=". innobase" 533 rebuilddirlist=". innobase"
551 fi 534 fi
552 535
556 AT_GNUCONF_UPDATE="yes" eautoreconf 539 AT_GNUCONF_UPDATE="yes" eautoreconf
557 popd &>/dev/null 540 popd &>/dev/null
558 done 541 done
559 542
560 if mysql_check_version_range "4.1 to 5.0.99.99" \ 543 if mysql_check_version_range "4.1 to 5.0.99.99" \
561 && useq "berkdb" ; then 544 && use berkdb ; then
562 [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh" 545 [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh"
546 cp -f "/usr/share/aclocal/libtool.m4" "bdb/dist/aclocal/libtool.ac" \
547 || die "Could not copy libtool.m4 to bdb/dist/"
563 pushd "bdb/dist" \ 548 pushd "bdb/dist" &>/dev/null
564 && sh s_all \ 549 sh s_all \
565 || die "Failed bdb reconfigure" \ 550 || die "Failed bdb reconfigure"
566 &>/dev/null
567 popd &>/dev/null 551 popd &>/dev/null
568 fi 552 fi
569} 553}
570 554
571mysql_src_compile() { 555mysql_src_compile() {
573 mysql_init_vars 557 mysql_init_vars
574 558
575 # $myconf is modified by the configure_* functions 559 # $myconf is modified by the configure_* functions
576 local myconf="" 560 local myconf=""
577 561
578 if useq "minimal" ; then 562 if use minimal ; then
579 configure_minimal 563 configure_minimal
580 else 564 else
581 configure_common 565 configure_common
582 if mysql_version_is_at_least "5.1.10" ; then 566 if mysql_version_is_at_least "5.1.10" ; then
583 configure_51 567 configure_51
597 mysql_version_is_at_least "5.0" \ 581 mysql_version_is_at_least "5.0" \
598 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 582 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
599 export CXXFLAGS 583 export CXXFLAGS
600 584
601 econf \ 585 econf \
602 --program-suffix="${MY_SUFFIX}" \
603 --libexecdir="/usr/sbin" \ 586 --libexecdir="/usr/sbin" \
604 --sysconfdir="${MY_SYSCONFDIR}" \ 587 --sysconfdir="${MY_SYSCONFDIR}" \
605 --localstatedir="${MY_LOCALSTATEDIR}" \ 588 --localstatedir="${MY_LOCALSTATEDIR}" \
606 --sharedstatedir="${MY_SHAREDSTATEDIR}" \ 589 --sharedstatedir="${MY_SHAREDSTATEDIR}" \
607 --libdir="${MY_LIBDIR}" \ 590 --libdir="${MY_LIBDIR}" \
618 | xargs -0 -n100 sed -i \ 601 | xargs -0 -n100 sed -i \
619 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|' 602 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
620 603
621 emake || die "emake failed" 604 emake || die "emake failed"
622 605
623 mysql_version_is_at_least "5.1.1" && useq "pbxt" && pbxt_src_compile 606 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_compile
624} 607}
625 608
626mysql_src_install() { 609mysql_src_install() {
627 # Make sure the vars are correctly initialized 610 # Make sure the vars are correctly initialized
628 mysql_init_vars 611 mysql_init_vars
629 612
630 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die 613 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
631 614
632 mysql_version_is_at_least "5.1.12" && useq "pbxt" && pbxt_src_install 615 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_install
633 616
634 insinto "${MY_INCLUDEDIR}" 617 insinto "${MY_INCLUDEDIR}"
635 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 618 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
636 619
637 # Convenience links 620 # Convenience links
638 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlanalyze${MY_SUFFIX}" 621 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
639 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlrepair${MY_SUFFIX}" 622 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
640 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqloptimize${MY_SUFFIX}" 623 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
641 624
642 # Various junk (my-*.cnf moved elsewhere) 625 # Various junk (my-*.cnf moved elsewhere)
643 rm -Rf "${D}/usr/share/info" 626 rm -Rf "${D}/usr/share/info"
644 for removeme in "mysql-log-rotate" mysql.server* \ 627 for removeme in "mysql-log-rotate" mysql.server* \
645 binary-configure* my-*.cnf mi_test_all* 628 binary-configure* my-*.cnf mi_test_all*
646 do 629 do
647 rm -f "${D}"/usr/share/mysql/${removeme} 630 rm -f "${D}"/usr/share/mysql/${removeme}
648 done 631 done
649 632
650 # TODO change at Makefile-am level
651 if [[ ${PN} == "mysql-slotted" ]] ; then
652 for moveme in "mysql_fix_privilege_tables.sql" \
653 "fill_help_tables.sql" "ndb-config-2-node.ini"
654 do
655 mv -f "${D}/usr/share/mysql/${moveme}" "${D}/usr/share/mysql${MY_SUFFIX}/" 2>/dev/null
656 done
657 fi
658
659 # clean up stuff for a minimal build 633 # Clean up stuff for a minimal build
660 if useq "minimal" ; then 634 if use minimal ; then
661 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} 635 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
662 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} 636 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}
663 rm -f "${D}/usr/sbin/mysqld" 637 rm -f "${D}/usr/sbin/mysqld"
664 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a 638 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
665 fi 639 fi
666 640
667 if [[ ${PN} == "mysql-slotted" ]] ; then
668 local notcatched=$(ls "${D}/usr/share/mysql"/*)
669 if [[ -n "${notcatched}" ]] ; then
670 ewarn "QA notice"
671 ewarn "${notcatched} files in /usr/share/mysql"
672 ewarn "bug mysql-herd to manage them"
673 fi
674 rm -Rf "${D}/usr/share/mysql"
675 fi
676
677 # Configuration stuff 641 # Configuration stuff
678 if mysql_version_is_at_least "4.1" ; then 642 if mysql_version_is_at_least "4.1" ; then
679 mysql_mycnf_version="4.1" 643 mysql_mycnf_version="4.1"
680 else 644 else
681 mysql_mycnf_version="4.0" 645 mysql_mycnf_version="4.0"
682 fi 646 fi
683 insinto "${MY_SYSCONFDIR}" 647 insinto "${MY_SYSCONFDIR}"
684 doins scripts/mysqlaccess.conf 648 doins scripts/mysqlaccess.conf
685 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \
686 -e "s!@DATADIR@!${DATADIR}!g" \ 649 sed -e "s!@DATADIR@!${DATADIR}!g" \
687 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 650 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
688 > "${TMPDIR}/my.cnf.ok" 651 > "${TMPDIR}/my.cnf.ok"
689 if mysql_version_is_at_least "4.1" && useq "latin1" ; then 652 if mysql_version_is_at_least "4.1" && use latin1 ; then
690 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok" 653 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
691 fi 654 fi
692 newins "${TMPDIR}/my.cnf.ok" my.cnf 655 newins "${TMPDIR}/my.cnf.ok" my.cnf
693 656
694 # Minimal builds don't have the MySQL server 657 # Minimal builds don't have the MySQL server
695 if ! useq "minimal" ; then 658 if ! use minimal ; then
696 # Empty directories ... 659 # Empty directories ...
697 diropts "-m0750" 660 diropts "-m0750"
698 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 661 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
699 dodir "${DATADIR}" 662 dodir "${DATADIR}"
700 keepdir "${DATADIR}" 663 keepdir "${DATADIR}"
711 674
712 # Docs 675 # Docs
713 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE 676 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
714 677
715 # Minimal builds don't have the MySQL server 678 # Minimal builds don't have the MySQL server
716 if ! useq "minimal" ; then 679 if ! use minimal ; then
717 docinto "support-files" 680 docinto "support-files"
718 for script in \ 681 for script in \
719 support-files/my-*.cnf \ 682 support-files/my-*.cnf \
720 support-files/magic \ 683 support-files/magic \
721 support-files/ndb-config-2-node.ini 684 support-files/ndb-config-2-node.ini
727 for script in scripts/mysql* ; do 690 for script in scripts/mysql* ; do
728 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 691 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
729 done 692 done
730 fi 693 fi
731 694
732 if [[ ${PN} == "mysql-slotted" ]] ; then 695 mysql_lib_symlinks "${D}"
733 # MOVED HERE DUE TO BUG #121445
734 # create a list of files, to be used
735 # by external utilities
736 mkdir -p "${D}/var/lib/eselect/mysql/"
737 local filelist="${D}/var/lib/eselect/mysql/mysql${MY_SUFFIX}.filelist"
738 pushd "${D}/" &>/dev/null
739 find usr/bin/ usr/sbin/ \
740 -type f -name "*${MY_SUFFIX}*" \
741 -and -not -name "mysql_config${MY_SUFFIX}" \
742 > "${filelist}"
743 find usr/share/man \
744 -type f -name "*${MY_SUFFIX}*" \
745 | sed -e 's/$/.gz/' \
746 >> "${filelist}"
747 echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}"
748 echo "${MY_LIBDIR#"/"}" >> "${filelist}"
749 echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}"
750 popd &>/dev/null
751 fi
752} 696}
753 697
754mysql_pkg_preinst() { 698mysql_pkg_preinst() {
755 enewgroup mysql 60 || die "problem adding 'mysql' group" 699 enewgroup mysql 60 || die "problem adding 'mysql' group"
756 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" 700 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
759mysql_pkg_postinst() { 703mysql_pkg_postinst() {
760 # Make sure the vars are correctly initialized 704 # Make sure the vars are correctly initialized
761 mysql_init_vars 705 mysql_init_vars
762 706
763 # Check FEATURES="collision-protect" before removing this 707 # Check FEATURES="collision-protect" before removing this
764 [[ -d "${ROOT}/var/log/mysql" ]] \
765 || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" 708 [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
766 709
767 # Secure the logfiles 710 # Secure the logfiles
768 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 711 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
769 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 712 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
770 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 713 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
771 714
772 # Minimal builds don't have the MySQL server 715 # Minimal builds don't have the MySQL server
773 if ! useq "minimal" ; then 716 if ! use minimal ; then
774 docinto "support-files" 717 docinto "support-files"
775 for script in \ 718 for script in \
776 support-files/my-*.cnf \ 719 support-files/my-*.cnf \
777 support-files/magic \ 720 support-files/magic \
778 support-files/ndb-config-2-node.ini 721 support-files/ndb-config-2-node.ini
782 725
783 docinto "scripts" 726 docinto "scripts"
784 for script in scripts/mysql* ; do 727 for script in scripts/mysql* ; do
785 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 728 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
786 done 729 done
787 fi
788 730
789 einfo "you may want to read slotting upgrade documents in the overlay" 731 einfo
790 if useq "pbxt" && mysql_version_is_at_least "5.1" ; then 732 elog "You might want to run:"
791 # TODO tell it better ;-) 733 elog "\"emerge --config =${CATEGORY}/${PF}\""
734 elog "if this is a new install."
735 einfo
736 fi
737
738 if mysql_version_is_at_least "5.1.12" && use pbxt ; then
739 # TODO: explain it better
792 einfo "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';" 740 elog " mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
793 einfo "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;" 741 elog " mysql> CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
794 einfo "if, after that you cannot start the mysql server" 742 elog "if, after that, you cannot start the MySQL server,"
795 einfo "remove the ${MY_DATADIR}/mysql/plugin.* files, then" 743 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
796 einfo "use the mysql upgrade script to restore the table" 744 elog "use the MySQL upgrade script to restore the table"
797 einfo " or " 745 elog "or execute the following SQL command:"
798 einfo "CREATE TABLE IF NOT EXISTS plugin (" 746 elog " CREATE TABLE IF NOT EXISTS plugin ("
799 einfo " name char(64) binary DEFAULT '' NOT NULL," 747 elog " name char(64) binary DEFAULT '' NOT NULL,"
800 einfo " dl char(128) DEFAULT '' NOT NULL," 748 elog " dl char(128) DEFAULT '' NOT NULL,"
801 einfo " PRIMARY KEY (name)" 749 elog " PRIMARY KEY (name)"
802 einfo ") CHARACTER SET utf8 COLLATE utf8_bin;" 750 elog " ) CHARACTER SET utf8 COLLATE utf8_bin;"
803 fi 751 fi
752
804 mysql_check_version_range "4.0 to 5.0.99.99" \ 753 mysql_check_version_range "4.0 to 5.0.99.99" \
805 && useq "berkdb" \ 754 && use berkdb \
806 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 755 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
807} 756}
808 757
809mysql_pkg_config() { 758mysql_pkg_config() {
810 # Make sure the vars are correctly initialized 759 # Make sure the vars are correctly initialized
915 wait %1 864 wait %1
916 einfo "Done" 865 einfo "Done"
917} 866}
918 867
919mysql_pkg_postrm() { 868mysql_pkg_postrm() {
920 if [[ ${PN} == "mysql-slotted" ]] ; then
921 mysql_lib_symlinks 869 : # mysql_lib_symlinks "${D}"
922 fi
923} 870}

Legend:
Removed from v.1.55  
changed lines
  Added in v.1.72

  ViewVC Help
Powered by ViewVC 1.1.20