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

Diff of /eclass/mysql.eclass

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

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

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

  ViewVC Help
Powered by ViewVC 1.1.20