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

Diff of /eclass/mysql.eclass

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

Revision 1.57 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.57 2007/01/04 11:17:05 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
143 local reposuf 119 local reposuf
144 if [[ -z "${1}" ]] ; then 120 if [[ -z "${1}" ]] ; then
145 local tpv 121 local tpv
146 tpv=( ${PV//[-._]/ } ) 122 tpv=( ${PV//[-._]/ } )
147 reposuf="mysql-${tpv[0]}.${tpv[1]}" 123 reposuf="mysql-${tpv[0]}.${tpv[1]}"
148 else 124 else
149 reposuf="${1}" 125 reposuf="${1}"
150 fi 126 fi
151 einfo "using \"${reposuf}\" repository." 127 einfo "Using '${reposuf}' repository."
152 local repo_uri="bk://mysql.bkbits.net/${reposuf}" 128 local repo_uri="bk://mysql.bkbits.net/${reposuf}"
153 ## -- ebk_store_dir: bitkeeper sources store directory 129 ## -- ebk_store_dir: bitkeeper sources store directory
154 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src" 130 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src"
155 ## -- ebk_fetch_cmd: bitkeeper fetch command 131 ## -- ebk_fetch_cmd: bitkeeper fetch command
156 # 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
157 # hint: does not work 133 # hint: does not work
158 local ebk_fetch_cmd="sfioball" 134 local ebk_fetch_cmd="sfioball"
159 ## -- ebk_update_cmd: bitkeeper update command 135 ## -- ebk_update_cmd: bitkeeper update command
160 local ebk_update_cmd="update" 136 local ebk_update_cmd="update"
161 137
162 #addread "/etc/bitkeeper" 138 # addread "/etc/bitkeeper"
163 addwrite "${ebk_store_dir}" 139 addwrite "${ebk_store_dir}"
164 140
165 if [[ ! -d "${ebk_store_dir}" ]]; then 141 if [[ ! -d "${ebk_store_dir}" ]] ; then
166 debug-print "${FUNCNAME}: initial checkout. creating bitkeeper directory" 142 debug-print "${FUNCNAME}: initial checkout, creating bitkeeper directory ..."
167 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}"
168 fi 144 fi
169 145
170 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}"
171 147
172 local wc_path=${reposuf} 148 local wc_path=${reposuf}
173 149
174 if [[ ! -d "${wc_path}" ]]; then 150 if [[ ! -d "${wc_path}" ]] ; then
175 local options="-r+" 151 local options="-r+"
152
176 # first check out 153 # first checkout
177 einfo "bitkeeper check out start -->" 154 einfo "bitkeeper checkout start -->"
178 einfo " repository: ${repo_uri}" 155 einfo " repository: ${repo_uri}"
156
179 ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \ 157 ${ebk_fetch_cmd} ${options} "${repo_uri}" "${wc_path}" \
180 || die "${EBK}: can't fetch from ${repo_uri}." 158 || die "BK: couldn't fetch from ${repo_uri}"
181 else 159 else
182 if [[ ! -d "${wc_path}/BK" ]]; then 160 if [[ ! -d "${wc_path}/BK" ]] ; then
183 popd 161 popd
184 die "Look like ${wc_path} is not a bitkeeper path." 162 die "Looks like ${wc_path} is not a bitkeeper path"
185 fi 163 fi
186 164
187 # update working copy 165 # update working copy
188 einfo "bitkeeper update start -->" 166 einfo "bitkeeper update start -->"
189 einfo " repository: ${repo_uri}" 167 einfo " repository: ${repo_uri}"
190 168
191 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \ 169 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \
192 || die "BK: can't update from ${repo_uri} to ${wc_path}." 170 || die "BK: couldn't update from ${repo_uri} to ${wc_path}"
193 fi 171 fi
194 172
195 einfo " working copy: ${wc_path}" 173 einfo " working copy: ${wc_path}"
196 cd "${wc_path}" 174 cd "${wc_path}"
197 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}"
198 176
199 echo 177 echo
200 popd 178 popd
201
202} 179}
203 180
204mysql_disable_test() { 181mysql_disable_test() {
205 local testname="${1}" ; shift 182 local testname="${1}" ; shift
206 local reason="${@}" 183 local reason="${@}"
207 local mysql_disable_file="${S}/mysql-test/t/disabled.def" 184 local mysql_disable_file="${S}/mysql-test/t/disabled.def"
208 echo ${testname} : ${reason} >> "${mysql_disable_file}" 185 echo ${testname} : ${reason} >> "${mysql_disable_file}"
209 ewarn "test \"${testname}\" disabled because: \"${reason}\"" 186 ewarn "test '${testname}' disabled: '${reason}'"
210} 187}
211 188
212# void mysql_init_vars() 189# void mysql_init_vars()
213# 190#
214# Initialize global variables 191# Initialize global variables
215# 2005-11-19 <vivo@gentoo.org> 192# 2005-11-19 <vivo@gentoo.org>
216 193
217mysql_init_vars() { 194mysql_init_vars() {
218 if [[ ${SLOT} == "0" ]] ; then
219 MY_SUFFIX=""
220 else
221 MY_SUFFIX=${MY_SUFFIX:-"-${SLOT}"}
222 fi
223 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql${MY_SUFFIX}"} 195 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"}
224 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql${MY_SUFFIX}"} 196 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
225 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql${MY_SUFFIX}"} 197 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"}
226 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql${MY_SUFFIX}"} 198 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
227 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql${MY_SUFFIX}"} 199 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"}
228 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql${MY_SUFFIX}"} 200 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"}
229 201
230 if [[ -z "${DATADIR}" ]] ; then 202 if [[ -z "${DATADIR}" ]] ; then
231 DATADIR="" 203 DATADIR=""
232 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then 204 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
233 DATADIR=`"my_print_defaults${MY_SUFFIX}" mysqld 2>/dev/null \ 205 DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
234 | sed -ne '/datadir/s|^--datadir=||p' \ 206 | sed -ne '/datadir/s|^--datadir=||p' \
235 | tail -n1` 207 | tail -n1`
236 if [[ -z "${DATADIR}" ]] ; then 208 if [[ -z "${DATADIR}" ]] ; then
237 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ 209 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
238 | sed -e 's/.*=\s*//'` 210 | sed -e 's/.*=\s*//'`
257 fi 229 fi
258 230
259 MY_SOURCEDIR=${SERVER_URI##*/} 231 MY_SOURCEDIR=${SERVER_URI##*/}
260 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*} 232 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
261 233
262 export MY_SUFFIX MY_SHAREDSTATEDIR MY_SYSCONFDIR 234 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
263 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 235 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
264 export MY_INCLUDEDIR DATADIR MY_SOURCEDIR 236 export MY_INCLUDEDIR DATADIR MY_SOURCEDIR
265} 237}
266 238
267configure_minimal() { 239configure_minimal() {
274 myconf="${myconf} --without-${i}" 246 myconf="${myconf} --without-${i}"
275 done 247 done
276 myconf="${myconf} --with-extra-charsets=none" 248 myconf="${myconf} --with-extra-charsets=none"
277 myconf="${myconf} --enable-local-infile" 249 myconf="${myconf} --enable-local-infile"
278 250
279 if useq "static" ; then 251 if use static ; then
280 myconf="${myconf} --with-client-ldflags=-all-static" 252 myconf="${myconf} --with-client-ldflags=-all-static"
281 myconf="${myconf} --disable-shared" 253 myconf="${myconf} --disable-shared"
282 else 254 else
283 myconf="${myconf} --enable-shared --enable-static" 255 myconf="${myconf} --enable-shared --enable-static"
284 fi 256 fi
285 257
286 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
287 myconf="${myconf} --with-charset=utf8" 259 myconf="${myconf} --with-charset=utf8"
288 myconf="${myconf} --with-collation=utf8_general_ci" 260 myconf="${myconf} --with-collation=utf8_general_ci"
289 else 261 else
290 myconf="${myconf} --with-charset=latin1" 262 myconf="${myconf} --with-charset=latin1"
291 myconf="${myconf} --with-collation=latin1_swedish_ci" 263 myconf="${myconf} --with-collation=latin1_swedish_ci"
299 myconf="${myconf} --with-mysqld-user=mysql" 271 myconf="${myconf} --with-mysqld-user=mysql"
300 myconf="${myconf} --with-server" 272 myconf="${myconf} --with-server"
301 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock" 273 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock"
302 myconf="${myconf} --without-libwrap" 274 myconf="${myconf} --without-libwrap"
303 275
304 if useq "static" ; then 276 if use static ; then
305 myconf="${myconf} --with-mysqld-ldflags=-all-static" 277 myconf="${myconf} --with-mysqld-ldflags=-all-static"
306 myconf="${myconf} --with-client-ldflags=-all-static" 278 myconf="${myconf} --with-client-ldflags=-all-static"
307 myconf="${myconf} --disable-shared" 279 myconf="${myconf} --disable-shared"
308 else 280 else
309 myconf="${myconf} --enable-shared --enable-static" 281 myconf="${myconf} --enable-shared --enable-static"
310 fi 282 fi
311 283
312 if useq "debug" ; then 284 if use debug ; then
313 myconf="${myconf} --with-debug=full" 285 myconf="${myconf} --with-debug=full"
314 else 286 else
315 myconf="${myconf} --without-debug" 287 myconf="${myconf} --without-debug"
316 mysql_version_is_at_least "4.1.3" \ 288 mysql_version_is_at_least "4.1.3" \
317 && useq "cluster" \ 289 && use cluster \
318 && myconf="${myconf} --without-ndb-debug" 290 && myconf="${myconf} --without-ndb-debug"
319 fi 291 fi
320 292
321 if mysql_version_is_at_least "4.1" && ! useq "latin1" ; then 293 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
322 myconf="${myconf} --with-charset=utf8" 294 myconf="${myconf} --with-charset=utf8"
323 myconf="${myconf} --with-collation=utf8_general_ci" 295 myconf="${myconf} --with-collation=utf8_general_ci"
324 else 296 else
325 myconf="${myconf} --with-charset=latin1" 297 myconf="${myconf} --with-charset=latin1"
326 myconf="${myconf} --with-collation=latin1_swedish_ci" 298 myconf="${myconf} --with-collation=latin1_swedish_ci"
327 fi 299 fi
328 300
329 if useq "embedded" ; then 301 if use embedded ; then
330 myconf="${myconf} --with-embedded-privilege-control" 302 myconf="${myconf} --with-embedded-privilege-control"
331 myconf="${myconf} --with-embedded-server" 303 myconf="${myconf} --with-embedded-server"
332 else 304 else
333 myconf="${myconf} --without-embedded-privilege-control" 305 myconf="${myconf} --without-embedded-privilege-control"
334 myconf="${myconf} --without-embedded-server" 306 myconf="${myconf} --without-embedded-server"
342 myconf="${myconf} --with-extra-tools" 314 myconf="${myconf} --with-extra-tools"
343 myconf="${myconf} --with-innodb" 315 myconf="${myconf} --with-innodb"
344 myconf="${myconf} --without-readline" 316 myconf="${myconf} --without-readline"
345 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)"
346 318
347 if useq "ssl" ; then
348 # --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
349 # has been removed from configure 320 # has been removed from configure
321 if use ssl ; then
350 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
351 if mysql_version_is_at_least "5.0.6" ; then 325 if mysql_version_is_at_least "5.1.11" ; then
352 # myconf="${myconf} --with-yassl" 326 myconf="${myconf} $(use_with ssl)"
353 myconf="${myconf} --with-openssl"
354 else 327 else
355 myconf="${myconf} --with-openssl" 328 myconf="${myconf} $(use_with ssl openssl)"
356 fi
357 else
358 myconf="${myconf} --without-openssl"
359 fi 329 fi
360 330
361 # 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:
362 # 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
363 # It comes down to non-64-bit safety problems. 333 # It comes down to non-64-bit safety problems.
364 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
365 elog "Berkeley DB support was disabled due to incompatible arch" 335 elog "Berkeley DB support was disabled due to incompatible arch"
366 myconf="${myconf} --without-berkeley-db" 336 myconf="${myconf} --without-berkeley-db"
367 else 337 else
368 if useq "berkdb" ; then 338 if use berkdb ; then
369 myconf="${myconf} --with-berkeley-db=./bdb" 339 myconf="${myconf} --with-berkeley-db=./bdb"
370 else 340 else
371 myconf="${myconf} --without-berkeley-db" 341 myconf="${myconf} --without-berkeley-db"
372 fi 342 fi
373 fi 343 fi
375 if mysql_version_is_at_least "4.1.3" ; then 345 if mysql_version_is_at_least "4.1.3" ; then
376 myconf="${myconf} --with-geometry" 346 myconf="${myconf} --with-geometry"
377 myconf="${myconf} $(use_with cluster ndbcluster)" 347 myconf="${myconf} $(use_with cluster ndbcluster)"
378 fi 348 fi
379 349
380 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
381 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html 351 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
382 myconf="${myconf} --with-archive-storage-engine" 352 myconf="${myconf} --with-archive-storage-engine"
383 353
384 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html 354 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
385 myconf="${myconf} --with-csv-storage-engine" 355 myconf="${myconf} --with-csv-storage-engine"
396 myconf="${myconf} --with-federated-storage-engine" 366 myconf="${myconf} --with-federated-storage-engine"
397 fi 367 fi
398 fi 368 fi
399 369
400 mysql_version_is_at_least "5.0.18" \ 370 mysql_version_is_at_least "5.0.18" \
401 && useq "max-idx-128" \ 371 && use max-idx-128 \
402 && myconf="${myconf} --with-max-indexes=128" 372 && myconf="${myconf} --with-max-indexes=128"
403} 373}
404 374
405configure_51() { 375configure_51() {
406 # TODO: !!!! readd --without-readline 376 # TODO: !!!! readd --without-readline
411 myconf="${myconf} --with-geometry" 381 myconf="${myconf} --with-geometry"
412 myconf="${myconf} --with-readline" 382 myconf="${myconf} --with-readline"
413 myconf="${myconf} --with-row-based-replication" 383 myconf="${myconf} --with-row-based-replication"
414 myconf="${myconf} --with-zlib=/usr/$(get_libdir)" 384 myconf="${myconf} --with-zlib=/usr/$(get_libdir)"
415 myconf="${myconf} --without-pstack" 385 myconf="${myconf} --without-pstack"
416 useq "max-idx-128" && myconf="${myconf} --with-max-indexes=128" 386 use max-idx-128 && myconf="${myconf} --with-max-indexes=128"
417 387
418 # 5.1 introduces a new way to manage storage engines (plugins) 388 # 5.1 introduces a new way to manage storage engines (plugins)
419 # like configuration=none 389 # like configuration=none
420 local plugins="csv,myisam,myisammrg,heap" 390 local plugins="csv,myisam,myisammrg,heap"
421 if useq "extraengine" ; then 391 if use extraengine ; then
422 # 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
423 plugins="${plugins},archive,blackhole,example,federated,partition" 393 plugins="${plugins},archive,blackhole,example,federated,partition"
424 394
425 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"
426 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"
427 fi 397 fi
428 398
429 if useq "innodb" ; then 399 if use innodb ; then
430 plugins="${plugins},innobase" 400 plugins="${plugins},innobase"
431 fi 401 fi
432 402
433 # like configuration=max-no-ndb 403 # like configuration=max-no-ndb
434 if useq "cluster" ; then 404 if use cluster ; then
435 plugins="${plugins},ndbcluster" 405 plugins="${plugins},ndbcluster"
436 myconf="${myconf} --with-ndb-binlog" 406 myconf="${myconf} --with-ndb-binlog"
437 fi 407 fi
438 408
409 if mysql_version_is_at_least "5.2" ; then
410 plugins="${plugins},falcon"
411 fi
412
439 myconf="${myconf} --with-plugins=${plugins}" 413 myconf="${myconf} --with-plugins=${plugins}"
440} 414}
441 415
442pbxt_src_compile() { 416pbxt_src_compile() {
443 mysql_init_vars 417 mysql_init_vars
445 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null 419 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
446 420
447 einfo "Reconfiguring dir '${PWD}'" 421 einfo "Reconfiguring dir '${PWD}'"
448 AT_GNUCONF_UPDATE="yes" eautoreconf 422 AT_GNUCONF_UPDATE="yes" eautoreconf
449 423
450 local myconf 424 local myconf=""
451 myconf="${myconf} --with-mysql=${S}"
452 mkdir -p ${T}/lib
453 myconf="${myconf} --libdir=${D}/${MY_LIBDIR}" 425 myconf="${myconf} --with-mysql=${S} --libdir=${D}/${MY_LIBDIR}"
454 useq "debug" && myconf="${myconf} --with-debug=full" 426 use debug && myconf="${myconf} --with-debug=full"
455 # TODO is safe/needed to use econf here ? 427 # TODO: is it safe/needed to use econf here ?
456 ./configure ${myconf} || die "problem configuring pbxt storage engine" 428 ./configure ${myconf} || die "Problem configuring PBXT storage engine"
457 # TODO is safe/needed to use emake here ? 429 # TODO: is it safe/needed to use emake here ?
458 make || die "problem making pbxt storage engine (${myconf})" 430 make || die "Problem making PBXT storage engine (${myconf})"
459 431
460 popd 432 popd
461 # TODO: modify test suite 433 # TODO: modify test suite for PBXT
462} 434}
463 435
464pbxt_src_install() { 436pbxt_src_install() {
465 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null 437 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
466 make install || die "failed pbxt install" 438 make install || die "Failed to install PBXT"
467 popd 439 popd
468} 440}
469 441
470# 442#
471# EBUILD FUNCTIONS 443# EBUILD FUNCTIONS
474mysql_pkg_setup() { 446mysql_pkg_setup() {
475 enewgroup mysql 60 || die "problem adding 'mysql' group" 447 enewgroup mysql 60 || die "problem adding 'mysql' group"
476 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"
477 449
478 # Check for USE flag problems in pkg_setup 450 # Check for USE flag problems in pkg_setup
479 if useq "static" && useq "ssl" ; then 451 if use static && use ssl ; then
480 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!"
481 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!"
482 fi 454 fi
483 455
484 if ! mysql_version_is_at_least "5.0" \ 456 if ! mysql_version_is_at_least "5.0" \
485 && useq "raid" \ 457 && use raid \
486 && useq "static" ; then 458 && use static ; then
487 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"
488 eerror "with RAID support enabled." 460 eerror "with RAID support enabled."
489 die "USE flags 'raid' and 'static' conflict!" 461 die "USE flags 'raid' and 'static' conflict!"
490 fi 462 fi
491 463
492 if mysql_version_is_at_least "4.1.3" \ 464 if mysql_version_is_at_least "4.1.3" \
493 && ( useq "cluster" || useq "extraengine" ) \ 465 && ( use cluster || use extraengine ) \
494 && useq "minimal" ; then 466 && use minimal ; then
495 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 467 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
496 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 468 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
497 fi 469 fi
498 470
499 mysql_check_version_range "4.0 to 5.0.99.99" \ 471 mysql_check_version_range "4.0 to 5.0.99.99" \
500 && useq "berkdb" \ 472 && use berkdb \
501 && 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!"
502} 474}
503 475
504mysql_src_unpack() { 476mysql_src_unpack() {
505 # Initialize the proper variables first 477 # Initialize the proper variables first
513 bitkeeper_fetch "mysql-5.2-falcon" 485 bitkeeper_fetch "mysql-5.2-falcon"
514 else 486 else
515 bitkeeper_fetch 487 bitkeeper_fetch
516 fi 488 fi
517 cd "${S}" 489 cd "${S}"
518 einfo "running upstream autorun on bk sources" 490 einfo "Running upstream autorun over BK sources ..."
519 BUILD/autorun.sh 491 BUILD/autorun.sh
520 else 492 else
521 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}" 493 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
522 cd "${S}" 494 cd "${S}"
523 fi 495 fi
524 496
525 # Apply the patches for this MySQL version 497 # Apply the patches for this MySQL version
526 EPATCH_SUFFIX="patch" 498 EPATCH_SUFFIX="patch"
527 mkdir -p "${EPATCH_SOURCE}" || die "unable to create epatch directory" 499 mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory"
528 mysql_mv_patches 500 mysql_mv_patches
529 epatch || die "failed to apply all patches" 501 epatch
530 502
531 # Additional checks, remove bundled zlib 503 # Additional checks, remove bundled zlib
532 rm -f "${S}/zlib/"*.[ch] 504 rm -f "${S}/zlib/"*.[ch]
533 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"
534 rm -f "scripts/mysqlbug" 506 rm -f "scripts/mysqlbug"
549 521
550 local rebuilddirlist d 522 local rebuilddirlist d
551 523
552 if mysql_version_is_at_least "5.1.12" ; then 524 if mysql_version_is_at_least "5.1.12" ; then
553 rebuilddirlist="." 525 rebuilddirlist="."
554 # TODO IMPO! Check this with a cmake expert 526 # TODO: check this with a cmake expert
555 useq "innodb" \ 527 use innodb \
556 && cmake \ 528 && cmake \
557 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \ 529 -DCMAKE_C_COMPILER=$(type -P $(tc-getCC)) \
558 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \ 530 -DCMAKE_CXX_COMPILER=$(type -P $(tc-getCC)) \
559 "storage/innobase" 531 "storage/innobase"
560 else 532 else
561 rebuilddirlist=". innobase" 533 rebuilddirlist=". innobase"
562 fi 534 fi
563 535
567 AT_GNUCONF_UPDATE="yes" eautoreconf 539 AT_GNUCONF_UPDATE="yes" eautoreconf
568 popd &>/dev/null 540 popd &>/dev/null
569 done 541 done
570 542
571 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" \
572 && useq "berkdb" ; then 544 && use berkdb ; then
573 [[ -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/"
574 pushd "bdb/dist" \ 548 pushd "bdb/dist" &>/dev/null
575 && sh s_all \ 549 sh s_all \
576 || die "Failed bdb reconfigure" \ 550 || die "Failed bdb reconfigure"
577 &>/dev/null
578 popd &>/dev/null 551 popd &>/dev/null
579 fi 552 fi
580} 553}
581 554
582mysql_src_compile() { 555mysql_src_compile() {
584 mysql_init_vars 557 mysql_init_vars
585 558
586 # $myconf is modified by the configure_* functions 559 # $myconf is modified by the configure_* functions
587 local myconf="" 560 local myconf=""
588 561
589 if useq "minimal" ; then 562 if use minimal ; then
590 configure_minimal 563 configure_minimal
591 else 564 else
592 configure_common 565 configure_common
593 if mysql_version_is_at_least "5.1.10" ; then 566 if mysql_version_is_at_least "5.1.10" ; then
594 configure_51 567 configure_51
608 mysql_version_is_at_least "5.0" \ 581 mysql_version_is_at_least "5.0" \
609 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 582 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
610 export CXXFLAGS 583 export CXXFLAGS
611 584
612 econf \ 585 econf \
613 --program-suffix="${MY_SUFFIX}" \
614 --libexecdir="/usr/sbin" \ 586 --libexecdir="/usr/sbin" \
615 --sysconfdir="${MY_SYSCONFDIR}" \ 587 --sysconfdir="${MY_SYSCONFDIR}" \
616 --localstatedir="${MY_LOCALSTATEDIR}" \ 588 --localstatedir="${MY_LOCALSTATEDIR}" \
617 --sharedstatedir="${MY_SHAREDSTATEDIR}" \ 589 --sharedstatedir="${MY_SHAREDSTATEDIR}" \
618 --libdir="${MY_LIBDIR}" \ 590 --libdir="${MY_LIBDIR}" \
629 | xargs -0 -n100 sed -i \ 601 | xargs -0 -n100 sed -i \
630 -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)|'
631 603
632 emake || die "emake failed" 604 emake || die "emake failed"
633 605
634 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
635} 607}
636 608
637mysql_src_install() { 609mysql_src_install() {
638 # Make sure the vars are correctly initialized 610 # Make sure the vars are correctly initialized
639 mysql_init_vars 611 mysql_init_vars
640 612
641 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die 613 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
642 614
643 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
644 616
645 insinto "${MY_INCLUDEDIR}" 617 insinto "${MY_INCLUDEDIR}"
646 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 618 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
647 619
648 # Convenience links 620 # Convenience links
649 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlanalyze${MY_SUFFIX}" 621 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
650 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlrepair${MY_SUFFIX}" 622 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
651 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqloptimize${MY_SUFFIX}" 623 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
652 624
653 # Various junk (my-*.cnf moved elsewhere) 625 # Various junk (my-*.cnf moved elsewhere)
654 rm -Rf "${D}/usr/share/info" 626 rm -Rf "${D}/usr/share/info"
655 for removeme in "mysql-log-rotate" mysql.server* \ 627 for removeme in "mysql-log-rotate" mysql.server* \
656 binary-configure* my-*.cnf mi_test_all* 628 binary-configure* my-*.cnf mi_test_all*
657 do 629 do
658 rm -f "${D}"/usr/share/mysql/${removeme} 630 rm -f "${D}"/usr/share/mysql/${removeme}
659 done 631 done
660 632
661 # TODO change at Makefile-am level
662 if [[ ${PN} == "mysql-slotted" ]] ; then
663 for moveme in "mysql_fix_privilege_tables.sql" \
664 "fill_help_tables.sql" "ndb-config-2-node.ini"
665 do
666 mv -f "${D}/usr/share/mysql/${moveme}" "${D}/usr/share/mysql${MY_SUFFIX}/" 2>/dev/null
667 done
668 fi
669
670 # clean up stuff for a minimal build 633 # Clean up stuff for a minimal build
671 if useq "minimal" ; then 634 if use minimal ; then
672 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} 635 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
673 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}
674 rm -f "${D}/usr/sbin/mysqld" 637 rm -f "${D}/usr/sbin/mysqld"
675 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
676 fi 639 fi
677 640
678 if [[ ${PN} == "mysql-slotted" ]] ; then
679 local notcatched=$(ls "${D}/usr/share/mysql"/*)
680 if [[ -n "${notcatched}" ]] ; then
681 ewarn "QA notice"
682 ewarn "${notcatched} files in /usr/share/mysql"
683 ewarn "bug mysql-herd to manage them"
684 fi
685 rm -Rf "${D}/usr/share/mysql"
686 fi
687
688 # Configuration stuff 641 # Configuration stuff
689 if mysql_version_is_at_least "4.1" ; then 642 if mysql_version_is_at_least "4.1" ; then
690 mysql_mycnf_version="4.1" 643 mysql_mycnf_version="4.1"
691 else 644 else
692 mysql_mycnf_version="4.0" 645 mysql_mycnf_version="4.0"
693 fi 646 fi
694 insinto "${MY_SYSCONFDIR}" 647 insinto "${MY_SYSCONFDIR}"
695 doins scripts/mysqlaccess.conf 648 doins scripts/mysqlaccess.conf
696 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \
697 -e "s!@DATADIR@!${DATADIR}!g" \ 649 sed -e "s!@DATADIR@!${DATADIR}!g" \
698 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 650 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
699 > "${TMPDIR}/my.cnf.ok" 651 > "${TMPDIR}/my.cnf.ok"
700 if mysql_version_is_at_least "4.1" && useq "latin1" ; then 652 if mysql_version_is_at_least "4.1" && use latin1 ; then
701 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok" 653 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
702 fi 654 fi
703 newins "${TMPDIR}/my.cnf.ok" my.cnf 655 newins "${TMPDIR}/my.cnf.ok" my.cnf
704 656
705 # Minimal builds don't have the MySQL server 657 # Minimal builds don't have the MySQL server
706 if ! useq "minimal" ; then 658 if ! use minimal ; then
707 # Empty directories ... 659 # Empty directories ...
708 diropts "-m0750" 660 diropts "-m0750"
709 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 661 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
710 dodir "${DATADIR}" 662 dodir "${DATADIR}"
711 keepdir "${DATADIR}" 663 keepdir "${DATADIR}"
722 674
723 # Docs 675 # Docs
724 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE 676 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
725 677
726 # Minimal builds don't have the MySQL server 678 # Minimal builds don't have the MySQL server
727 if ! useq "minimal" ; then 679 if ! use minimal ; then
728 docinto "support-files" 680 docinto "support-files"
729 for script in \ 681 for script in \
730 support-files/my-*.cnf \ 682 support-files/my-*.cnf \
731 support-files/magic \ 683 support-files/magic \
732 support-files/ndb-config-2-node.ini 684 support-files/ndb-config-2-node.ini
738 for script in scripts/mysql* ; do 690 for script in scripts/mysql* ; do
739 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 691 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
740 done 692 done
741 fi 693 fi
742 694
743 if [[ ${PN} == "mysql-slotted" ]] ; then 695 mysql_lib_symlinks "${D}"
744 # MOVED HERE DUE TO BUG #121445
745 # create a list of files, to be used
746 # by external utilities
747 mkdir -p "${D}/var/lib/eselect/mysql/"
748 local filelist="${D}/var/lib/eselect/mysql/mysql${MY_SUFFIX}.filelist"
749 pushd "${D}/" &>/dev/null
750 find usr/bin/ usr/sbin/ \
751 -type f -name "*${MY_SUFFIX}*" \
752 -and -not -name "mysql_config${MY_SUFFIX}" \
753 > "${filelist}"
754 find usr/share/man \
755 -type f -name "*${MY_SUFFIX}*" \
756 | sed -e 's/$/.gz/' \
757 >> "${filelist}"
758 echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}"
759 echo "${MY_LIBDIR#"/"}" >> "${filelist}"
760 echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}"
761 popd &>/dev/null
762 fi
763} 696}
764 697
765mysql_pkg_preinst() { 698mysql_pkg_preinst() {
766 enewgroup mysql 60 || die "problem adding 'mysql' group" 699 enewgroup mysql 60 || die "problem adding 'mysql' group"
767 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"
770mysql_pkg_postinst() { 703mysql_pkg_postinst() {
771 # Make sure the vars are correctly initialized 704 # Make sure the vars are correctly initialized
772 mysql_init_vars 705 mysql_init_vars
773 706
774 # Check FEATURES="collision-protect" before removing this 707 # Check FEATURES="collision-protect" before removing this
775 [[ -d "${ROOT}/var/log/mysql" ]] \
776 || 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}"
777 709
778 # Secure the logfiles 710 # Secure the logfiles
779 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 711 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
780 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 712 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
781 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 713 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
782 714
783 # Minimal builds don't have the MySQL server 715 # Minimal builds don't have the MySQL server
784 if ! useq "minimal" ; then 716 if ! use minimal ; then
785 docinto "support-files" 717 docinto "support-files"
786 for script in \ 718 for script in \
787 support-files/my-*.cnf \ 719 support-files/my-*.cnf \
788 support-files/magic \ 720 support-files/magic \
789 support-files/ndb-config-2-node.ini 721 support-files/ndb-config-2-node.ini
793 725
794 docinto "scripts" 726 docinto "scripts"
795 for script in scripts/mysql* ; do 727 for script in scripts/mysql* ; do
796 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 728 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
797 done 729 done
798 fi
799 730
800 einfo "you may want to read slotting upgrade documents in the overlay" 731 einfo
801 if useq "pbxt" && mysql_version_is_at_least "5.1" ; then 732 elog "You might want to run:"
802 # 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
803 einfo "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';" 740 elog " mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
804 einfo "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;" 741 elog " mysql> CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
805 einfo "if, after that you cannot start the mysql server" 742 elog "if, after that, you cannot start the MySQL server,"
806 einfo "remove the ${MY_DATADIR}/mysql/plugin.* files, then" 743 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
807 einfo "use the mysql upgrade script to restore the table" 744 elog "use the MySQL upgrade script to restore the table"
808 einfo " or " 745 elog "or execute the following SQL command:"
809 einfo "CREATE TABLE IF NOT EXISTS plugin (" 746 elog " CREATE TABLE IF NOT EXISTS plugin ("
810 einfo " name char(64) binary DEFAULT '' NOT NULL," 747 elog " name char(64) binary DEFAULT '' NOT NULL,"
811 einfo " dl char(128) DEFAULT '' NOT NULL," 748 elog " dl char(128) DEFAULT '' NOT NULL,"
812 einfo " PRIMARY KEY (name)" 749 elog " PRIMARY KEY (name)"
813 einfo ") CHARACTER SET utf8 COLLATE utf8_bin;" 750 elog " ) CHARACTER SET utf8 COLLATE utf8_bin;"
814 fi 751 fi
752
815 mysql_check_version_range "4.0 to 5.0.99.99" \ 753 mysql_check_version_range "4.0 to 5.0.99.99" \
816 && useq "berkdb" \ 754 && use berkdb \
817 && 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!"
818} 756}
819 757
820mysql_pkg_config() { 758mysql_pkg_config() {
821 # Make sure the vars are correctly initialized 759 # Make sure the vars are correctly initialized
926 wait %1 864 wait %1
927 einfo "Done" 865 einfo "Done"
928} 866}
929 867
930mysql_pkg_postrm() { 868mysql_pkg_postrm() {
931 if [[ ${PN} == "mysql-slotted" ]] ; then
932 mysql_lib_symlinks 869 : # mysql_lib_symlinks "${D}"
933 fi
934} 870}

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

  ViewVC Help
Powered by ViewVC 1.1.20