/[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.76
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.76 2007/05/09 16:25:33 cardoe 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} 74 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
100 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 75 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
101 "
102 mysql_version_is_at_least "5.1.12" \ 76mysql_version_is_at_least "5.1.12" \
103 && [[ -n "${PBXT_VERSION}" ]] \ 77&& [[ -n "${PBXT_VERSION}" ]] \
104 && SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )" 78&& SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )"
105 79
106 DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 80DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
107 HOMEPAGE="http://www.mysql.com/" 81HOMEPAGE="http://www.mysql.com/"
108 LICENSE="GPL-2" 82LICENSE="GPL-2"
83SLOT="0"
109 IUSE="big-tables debug embedded minimal perl selinux ssl static" 84IUSE="big-tables debug embedded minimal perl selinux ssl static"
110 RESTRICT="confcache" 85RESTRICT="confcache"
111 86
112 mysql_version_is_at_least "4.1" \ 87mysql_version_is_at_least "4.1" \
113 && IUSE="${IUSE} latin1" 88&& IUSE="${IUSE} latin1"
114 89
115 mysql_version_is_at_least "4.1.3" \ 90mysql_version_is_at_least "4.1.3" \
116 && IUSE="${IUSE} cluster extraengine" 91&& IUSE="${IUSE} cluster extraengine"
117 92
118 mysql_version_is_at_least "5.0" \ 93mysql_version_is_at_least "5.0" \
119 || IUSE="${IUSE} raid" 94|| IUSE="${IUSE} raid"
120 95
121 mysql_version_is_at_least "5.0.18" \ 96mysql_version_is_at_least "5.0.18" \
122 && IUSE="${IUSE} max-idx-128" 97&& IUSE="${IUSE} max-idx-128"
123 98
124 mysql_version_is_at_least "5.1" \ 99mysql_version_is_at_least "5.1" \
125 && IUSE="${IUSE} innodb" 100&& IUSE="${IUSE} innodb"
126 101
127 mysql_version_is_at_least "5.1" \ 102mysql_version_is_at_least "5.1" \
128 || IUSE="${IUSE} berkdb" 103|| IUSE="${IUSE} berkdb"
129 104
130 mysql_version_is_at_least "5.1.12" \ 105mysql_version_is_at_least "5.1.12" \
131 && IUSE="${IUSE} pbxt" 106&& IUSE="${IUSE} pbxt"
132 107
133 RDEPEND="${DEPEND} 108RDEPEND="${DEPEND}
134 sys-apps/mysql 109 !minimal? ( dev-db/mysql-init-scripts )
135 selinux? ( sec-policy/selinux-mysql ) 110 selinux? ( sec-policy/selinux-mysql )"
136 "
137
138fi # if [[ "${_MYPVR}" != "${PVR}" ]]
139 111
140EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ 112EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
141 pkg_postinst pkg_config pkg_postrm 113 pkg_postinst pkg_config pkg_postrm
142 114
143# 115#
144# HELPER FUNCTIONS: 116# HELPER FUNCTIONS:
145# 117#
146 118
147bitkeeper_fetch() { 119bitkeeper_fetch() {
148
149 local reposuf 120 local reposuf
150 if [[ -z "${1}" ]] ; then 121 if [[ -z "${1}" ]] ; then
151 local tpv 122 local tpv
152 tpv=( ${PV//[-._]/ } ) 123 tpv=( ${PV//[-._]/ } )
153 reposuf="mysql-${tpv[0]}.${tpv[1]}" 124 reposuf="mysql-${tpv[0]}.${tpv[1]}"
154 else 125 else
155 reposuf="${1}" 126 reposuf="${1}"
156 fi 127 fi
157 einfo "using \"${reposuf}\" repository." 128 einfo "Using '${reposuf}' repository."
158 local repo_uri="bk://mysql.bkbits.net/${reposuf}" 129 local repo_uri="bk://mysql.bkbits.net/${reposuf}"
159 ## -- ebk_store_dir: bitkeeper sources store directory 130 ## -- ebk_store_dir: bitkeeper sources store directory
160 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src" 131 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src"
161 ## -- ebk_fetch_cmd: bitkeeper fetch command 132 ## -- ebk_fetch_cmd: bitkeeper fetch command
162 # always fetch the latest revision, use -r<revision> if a specified revision is wanted 133 # always fetch the latest revision, use -r<revision> if a specified revision is wanted
163 # hint: does not work 134 # hint: does not work
164 local ebk_fetch_cmd="sfioball" 135 local ebk_fetch_cmd="sfioball"
165 ## -- ebk_update_cmd: bitkeeper update command 136 ## -- ebk_update_cmd: bitkeeper update command
166 local ebk_update_cmd="update" 137 local ebk_update_cmd="update"
167 138
168 #addread "/etc/bitkeeper" 139 # addread "/etc/bitkeeper"
169 addwrite "${ebk_store_dir}" 140 addwrite "${ebk_store_dir}"
170 141
171 if [[ ! -d "${ebk_store_dir}" ]]; then 142 if [[ ! -d "${ebk_store_dir}" ]] ; then
172 debug-print "${FUNCNAME}: initial checkout. creating bitkeeper directory" 143 debug-print "${FUNCNAME}: initial checkout, creating bitkeeper directory ..."
173 mkdir -p "${ebk_store_dir}" || die "${EBK}: can't mkdir ${ebk_store_dir}." 144 mkdir -p "${ebk_store_dir}" || die "BK: couldn't mkdir ${ebk_store_dir}"
174 fi 145 fi
175 146
176 pushd "${ebk_store_dir}" || die "${EBK}: can't chdir to ${ebk_store_dir}" 147 pushd "${ebk_store_dir}" || die "BK: couldn't chdir to ${ebk_store_dir}"
177 148
178 local wc_path=${reposuf} 149 local wc_path=${reposuf}
179 150
180 if [[ ! -d "${wc_path}" ]]; then 151 if [[ ! -d "${wc_path}" ]] ; then
181 local options="-r+" 152 local options="-r+"
153
182 # first check out 154 # first checkout
183 einfo "bitkeeper check out start -->" 155 einfo "bitkeeper checkout start -->"
184 einfo " repository: ${repo_uri}" 156 einfo " repository: ${repo_uri}"
157
185 ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \ 158 ${ebk_fetch_cmd} ${options} "${repo_uri}" "${wc_path}" \
186 || die "${EBK}: can't fetch from ${repo_uri}." 159 || die "BK: couldn't fetch from ${repo_uri}"
187 else 160 else
188 if [[ ! -d "${wc_path}/BK" ]]; then 161 if [[ ! -d "${wc_path}/BK" ]] ; then
189 popd 162 popd
190 die "Look like ${wc_path} is not a bitkeeper path." 163 die "Looks like ${wc_path} is not a bitkeeper path"
191 fi 164 fi
192 165
193 # update working copy 166 # update working copy
194 einfo "bitkeeper update start -->" 167 einfo "bitkeeper update start -->"
195 einfo " repository: ${repo_uri}" 168 einfo " repository: ${repo_uri}"
196 169
197 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \ 170 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \
198 || die "BK: can't update from ${repo_uri} to ${wc_path}." 171 || die "BK: couldn't update from ${repo_uri} to ${wc_path}"
199 fi 172 fi
200 173
201 einfo " working copy: ${wc_path}" 174 einfo " working copy: ${wc_path}"
202 cd "${wc_path}" 175 cd "${wc_path}"
203 rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: can't export to ${S}." 176 rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: couldn't export to ${S}"
204 177
205 echo 178 echo
206 popd 179 popd
207
208} 180}
209 181
210mysql_disable_test() { 182mysql_disable_test() {
211 local testname="${1}" ; shift 183 local testname="${1}" ; shift
212 local reason="${@}" 184 local reason="${@}"
213 local mysql_disable_file="${S}/mysql-test/t/disabled.def" 185 local mysql_disable_file="${S}/mysql-test/t/disabled.def"
214 echo ${testname} : ${reason} >> "${mysql_disable_file}" 186 echo ${testname} : ${reason} >> "${mysql_disable_file}"
215 ewarn "test \"${testname}\" disabled because: \"${reason}\"" 187 ewarn "test '${testname}' disabled: '${reason}'"
216} 188}
217 189
218# void mysql_init_vars() 190# void mysql_init_vars()
219# 191#
220# Initialize global variables 192# Initialize global variables
221# 2005-11-19 <vivo@gentoo.org> 193# 2005-11-19 <vivo@gentoo.org>
222 194
223mysql_init_vars() { 195mysql_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}"} 196 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"}
230 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql${MY_SUFFIX}"} 197 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
231 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql${MY_SUFFIX}"} 198 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"}
232 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql${MY_SUFFIX}"} 199 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
233 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql${MY_SUFFIX}"} 200 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"}
234 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql${MY_SUFFIX}"} 201 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"}
235 202
236 if [[ -z "${DATADIR}" ]] ; then 203 if [[ -z "${MY_DATADIR}" ]] ; then
237 DATADIR="" 204 MY_DATADIR=""
238 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then 205 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
239 DATADIR=`"my_print_defaults${MY_SUFFIX}" mysqld 2>/dev/null \ 206 MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
240 | sed -ne '/datadir/s|^--datadir=||p' \ 207 | sed -ne '/datadir/s|^--datadir=||p' \
241 | tail -n1` 208 | tail -n1`
242 if [[ -z "${DATADIR}" ]] ; then 209 if [[ -z "${MY_DATADIR}" ]] ; then
243 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ 210 MY_DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
244 | sed -e 's/.*=\s*//'` 211 | sed -e 's/.*=\s*//'`
245 fi 212 fi
246 fi 213 fi
247 if [[ -z "${DATADIR}" ]] ; then 214 if [[ -z "${MY_DATADIR}" ]] ; then
248 DATADIR="${MY_LOCALSTATEDIR}" 215 MY_DATADIR="${MY_LOCALSTATEDIR}"
249 einfo "Using default DATADIR" 216 einfo "Using default MY_DATADIR"
250 fi 217 fi
251 elog "MySQL DATADIR is ${DATADIR}" 218 elog "MySQL MY_DATADIR is ${MY_DATADIR}"
252 219
253 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then 220 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
254 if [[ -e "${DATADIR}" ]] ; then 221 if [[ -e "${MY_DATADIR}" ]] ; then
255 elog "Previous datadir found, it's YOUR job to change" 222 elog "Previous datadir found, it's YOUR job to change"
256 elog "ownership and take care of it" 223 elog "ownership and take care of it"
257 PREVIOUS_DATADIR="yes" 224 PREVIOUS_DATADIR="yes"
258 else 225 else
259 PREVIOUS_DATADIR="no" 226 PREVIOUS_DATADIR="no"
263 fi 230 fi
264 231
265 MY_SOURCEDIR=${SERVER_URI##*/} 232 MY_SOURCEDIR=${SERVER_URI##*/}
266 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*} 233 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
267 234
268 export MY_SUFFIX MY_SHAREDSTATEDIR MY_SYSCONFDIR 235 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
269 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 236 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
270 export MY_INCLUDEDIR DATADIR MY_SOURCEDIR 237 export MY_INCLUDEDIR MY_DATADIR MY_SOURCEDIR
271} 238}
272 239
273configure_minimal() { 240configure_minimal() {
274 # These are things we exclude from a minimal build, please 241 # These are things we exclude from a minimal build, please
275 # note that the server actually does get built and installed, 242 # note that the server actually does get built and installed,
280 myconf="${myconf} --without-${i}" 247 myconf="${myconf} --without-${i}"
281 done 248 done
282 myconf="${myconf} --with-extra-charsets=none" 249 myconf="${myconf} --with-extra-charsets=none"
283 myconf="${myconf} --enable-local-infile" 250 myconf="${myconf} --enable-local-infile"
284 251
285 if useq "static" ; then 252 if use static ; then
286 myconf="${myconf} --with-client-ldflags=-all-static" 253 myconf="${myconf} --with-client-ldflags=-all-static"
287 myconf="${myconf} --disable-shared" 254 myconf="${myconf} --disable-shared"
288 else 255 else
289 myconf="${myconf} --enable-shared --enable-static" 256 myconf="${myconf} --enable-shared --enable-static"
290 fi 257 fi
291 258
292 if mysql_version_is_at_least "4.01.00.00" && ! useq "latin1" ; then 259 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
293 myconf="${myconf} --with-charset=utf8" 260 myconf="${myconf} --with-charset=utf8"
294 myconf="${myconf} --with-collation=utf8_general_ci" 261 myconf="${myconf} --with-collation=utf8_general_ci"
295 else 262 else
296 myconf="${myconf} --with-charset=latin1" 263 myconf="${myconf} --with-charset=latin1"
297 myconf="${myconf} --with-collation=latin1_swedish_ci" 264 myconf="${myconf} --with-collation=latin1_swedish_ci"
305 myconf="${myconf} --with-mysqld-user=mysql" 272 myconf="${myconf} --with-mysqld-user=mysql"
306 myconf="${myconf} --with-server" 273 myconf="${myconf} --with-server"
307 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock" 274 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock"
308 myconf="${myconf} --without-libwrap" 275 myconf="${myconf} --without-libwrap"
309 276
310 if useq "static" ; then 277 if use static ; then
311 myconf="${myconf} --with-mysqld-ldflags=-all-static" 278 myconf="${myconf} --with-mysqld-ldflags=-all-static"
312 myconf="${myconf} --with-client-ldflags=-all-static" 279 myconf="${myconf} --with-client-ldflags=-all-static"
313 myconf="${myconf} --disable-shared" 280 myconf="${myconf} --disable-shared"
314 else 281 else
315 myconf="${myconf} --enable-shared --enable-static" 282 myconf="${myconf} --enable-shared --enable-static"
316 fi 283 fi
317 284
318 if useq "debug" ; then 285 if use debug ; then
319 myconf="${myconf} --with-debug=full" 286 myconf="${myconf} --with-debug=full"
320 else 287 else
321 myconf="${myconf} --without-debug" 288 myconf="${myconf} --without-debug"
322 mysql_version_is_at_least "4.1.3" \ 289 mysql_version_is_at_least "4.1.3" \
323 && useq "cluster" \ 290 && use cluster \
324 && myconf="${myconf} --without-ndb-debug" 291 && myconf="${myconf} --without-ndb-debug"
325 fi 292 fi
326 293
327 if mysql_version_is_at_least "4.1" && ! useq "latin1" ; then 294 if mysql_version_is_at_least "4.1" && ! use latin1 ; then
328 myconf="${myconf} --with-charset=utf8" 295 myconf="${myconf} --with-charset=utf8"
329 myconf="${myconf} --with-collation=utf8_general_ci" 296 myconf="${myconf} --with-collation=utf8_general_ci"
330 else 297 else
331 myconf="${myconf} --with-charset=latin1" 298 myconf="${myconf} --with-charset=latin1"
332 myconf="${myconf} --with-collation=latin1_swedish_ci" 299 myconf="${myconf} --with-collation=latin1_swedish_ci"
333 fi 300 fi
334 301
335 if useq "embedded" ; then 302 if use embedded ; then
336 myconf="${myconf} --with-embedded-privilege-control" 303 myconf="${myconf} --with-embedded-privilege-control"
337 myconf="${myconf} --with-embedded-server" 304 myconf="${myconf} --with-embedded-server"
338 else 305 else
339 myconf="${myconf} --without-embedded-privilege-control" 306 myconf="${myconf} --without-embedded-privilege-control"
340 myconf="${myconf} --without-embedded-server" 307 myconf="${myconf} --without-embedded-server"
348 myconf="${myconf} --with-extra-tools" 315 myconf="${myconf} --with-extra-tools"
349 myconf="${myconf} --with-innodb" 316 myconf="${myconf} --with-innodb"
350 myconf="${myconf} --without-readline" 317 myconf="${myconf} --without-readline"
351 mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)" 318 mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)"
352 319
353 if useq "ssl" ; then
354 # --with-vio is not needed anymore, it's on by default and 320 # --with-vio is not needed anymore, it's on by default and
355 # has been removed from configure 321 # has been removed from configure
322 if use ssl ; then
356 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio" 323 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio"
324 fi
325
357 if mysql_version_is_at_least "5.0.6" ; then 326 if mysql_version_is_at_least "5.1.11" ; then
358 # myconf="${myconf} --with-yassl"
359 myconf="${myconf} --with-ssl" 327 myconf="${myconf} $(use_with ssl)"
360 else 328 else
361 myconf="${myconf} --with-openssl" 329 myconf="${myconf} $(use_with ssl openssl)"
362 fi 330 fi
363 else
364 myconf="${myconf} --without-openssl"
365 fi
366 331
332 if use berkdb ; then
367 # The following fix is due to a bug with bdb on SPARC's. See: 333 # 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 334 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
369 # It comes down to non-64-bit safety problems. 335 # It comes down to non-64-bit safety problems.
370 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" || useq "amd64" ; then 336 if use alpha || use amd64 || use hppa || use mips || use sparc ; then
371 elog "Berkeley DB support was disabled due to incompatible arch" 337 elog "Berkeley DB support was disabled due to compatiblity issues on this arch"
338 myconf="${myconf} --without-berkeley-db"
339 else
340 myconf="${myconf} --with-berkeley-db=./bdb"
341 fi
342 else
372 myconf="${myconf} --without-berkeley-db" 343 myconf="${myconf} --without-berkeley-db"
373 else
374 if useq "berkdb" ; then
375 myconf="${myconf} --with-berkeley-db=./bdb"
376 else
377 myconf="${myconf} --without-berkeley-db"
378 fi
379 fi 344 fi
380 345
381 if mysql_version_is_at_least "4.1.3" ; then 346 if mysql_version_is_at_least "4.1.3" ; then
382 myconf="${myconf} --with-geometry" 347 myconf="${myconf} --with-geometry"
383 myconf="${myconf} $(use_with cluster ndbcluster)" 348 myconf="${myconf} $(use_with cluster ndbcluster)"
384 fi 349 fi
385 350
386 if mysql_version_is_at_least "4.1.3" && useq "extraengine" ; then 351 if mysql_version_is_at_least "4.1.3" && use extraengine ; then
387 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html 352 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
388 myconf="${myconf} --with-archive-storage-engine" 353 myconf="${myconf} --with-archive-storage-engine"
389 354
390 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html 355 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
391 myconf="${myconf} --with-csv-storage-engine" 356 myconf="${myconf} --with-csv-storage-engine"
402 myconf="${myconf} --with-federated-storage-engine" 367 myconf="${myconf} --with-federated-storage-engine"
403 fi 368 fi
404 fi 369 fi
405 370
406 mysql_version_is_at_least "5.0.18" \ 371 mysql_version_is_at_least "5.0.18" \
407 && useq "max-idx-128" \ 372 && use max-idx-128 \
408 && myconf="${myconf} --with-max-indexes=128" 373 && myconf="${myconf} --with-max-indexes=128"
409} 374}
410 375
411configure_51() { 376configure_51() {
412 # TODO: !!!! readd --without-readline 377 # TODO: !!!! readd --without-readline
417 myconf="${myconf} --with-geometry" 382 myconf="${myconf} --with-geometry"
418 myconf="${myconf} --with-readline" 383 myconf="${myconf} --with-readline"
419 myconf="${myconf} --with-row-based-replication" 384 myconf="${myconf} --with-row-based-replication"
420 myconf="${myconf} --with-zlib=/usr/$(get_libdir)" 385 myconf="${myconf} --with-zlib=/usr/$(get_libdir)"
421 myconf="${myconf} --without-pstack" 386 myconf="${myconf} --without-pstack"
422 useq "max-idx-128" && myconf="${myconf} --with-max-indexes=128" 387 use max-idx-128 && myconf="${myconf} --with-max-indexes=128"
423 388
424 # 5.1 introduces a new way to manage storage engines (plugins) 389 # 5.1 introduces a new way to manage storage engines (plugins)
425 # like configuration=none 390 # like configuration=none
426 local plugins="csv,myisam,myisammrg,heap" 391 local plugins="csv,myisam,myisammrg,heap"
427 if useq "extraengine" ; then 392 if use extraengine ; then
428 # like configuration=max-no-ndb, archive and example removed in 5.1.11 393 # like configuration=max-no-ndb, archive and example removed in 5.1.11
429 plugins="${plugins},archive,blackhole,example,federated,partition" 394 plugins="${plugins},archive,blackhole,example,federated,partition"
430 395
431 elog "Before using the Federated storage engine, please be sure to read" 396 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" 397 elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html"
433 fi 398 fi
434 399
435 if useq "innodb" ; then 400 if use innodb ; then
436 plugins="${plugins},innobase" 401 plugins="${plugins},innobase"
437 fi 402 fi
438 403
439 # like configuration=max-no-ndb 404 # like configuration=max-no-ndb
440 if useq "cluster" ; then 405 if use cluster ; then
441 plugins="${plugins},ndbcluster" 406 plugins="${plugins},ndbcluster"
442 myconf="${myconf} --with-ndb-binlog" 407 myconf="${myconf} --with-ndb-binlog"
443 fi 408 fi
444 409
445 if mysql_version_is_at_least "5.2" ; then 410 if mysql_version_is_at_least "5.2" ; then
455 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null 420 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
456 421
457 einfo "Reconfiguring dir '${PWD}'" 422 einfo "Reconfiguring dir '${PWD}'"
458 AT_GNUCONF_UPDATE="yes" eautoreconf 423 AT_GNUCONF_UPDATE="yes" eautoreconf
459 424
460 local myconf 425 local myconf=""
461 myconf="${myconf} --with-mysql=${S}"
462 mkdir -p ${T}/lib
463 myconf="${myconf} --libdir=${D}/${MY_LIBDIR}" 426 myconf="${myconf} --with-mysql=${S} --libdir=${D}/${MY_LIBDIR}"
464 useq "debug" && myconf="${myconf} --with-debug=full" 427 use debug && myconf="${myconf} --with-debug=full"
465 # TODO is safe/needed to use econf here ? 428 # TODO: is it safe/needed to use econf here ?
466 ./configure ${myconf} || die "problem configuring pbxt storage engine" 429 ./configure ${myconf} || die "Problem configuring PBXT storage engine"
467 # TODO is safe/needed to use emake here ? 430 # TODO: is it safe/needed to use emake here ?
468 make || die "problem making pbxt storage engine (${myconf})" 431 make || die "Problem making PBXT storage engine (${myconf})"
469 432
470 popd 433 popd
471 # TODO: modify test suite 434 # TODO: modify test suite for PBXT
472} 435}
473 436
474pbxt_src_install() { 437pbxt_src_install() {
475 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null 438 pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null
476 make install || die "failed pbxt install" 439 make install || die "Failed to install PBXT"
477 popd 440 popd
478} 441}
479 442
480# 443#
481# EBUILD FUNCTIONS 444# EBUILD FUNCTIONS
484mysql_pkg_setup() { 447mysql_pkg_setup() {
485 enewgroup mysql 60 || die "problem adding 'mysql' group" 448 enewgroup mysql 60 || die "problem adding 'mysql' group"
486 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" 449 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
487 450
488 # Check for USE flag problems in pkg_setup 451 # Check for USE flag problems in pkg_setup
489 if useq "static" && useq "ssl" ; then 452 if use static && use ssl ; then
490 eerror "MySQL does not support being built statically with SSL support enabled!" 453 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!" 454 die "MySQL does not support being built statically with SSL support enabled!"
492 fi 455 fi
493 456
494 if ! mysql_version_is_at_least "5.0" \ 457 if ! mysql_version_is_at_least "5.0" \
495 && useq "raid" \ 458 && use raid \
496 && useq "static" ; then 459 && use static ; then
497 eerror "USE flags 'raid' and 'static' conflict, you cannot build MySQL statically" 460 eerror "USE flags 'raid' and 'static' conflict, you cannot build MySQL statically"
498 eerror "with RAID support enabled." 461 eerror "with RAID support enabled."
499 die "USE flags 'raid' and 'static' conflict!" 462 die "USE flags 'raid' and 'static' conflict!"
500 fi 463 fi
501 464
502 if mysql_version_is_at_least "4.1.3" \ 465 if mysql_version_is_at_least "4.1.3" \
503 && ( useq "cluster" || useq "extraengine" ) \ 466 && ( use cluster || use extraengine ) \
504 && useq "minimal" ; then 467 && use minimal ; then
505 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 468 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
506 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 469 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
507 fi 470 fi
508 471
509 mysql_check_version_range "4.0 to 5.0.99.99" \ 472 mysql_check_version_range "4.0 to 5.0.99.99" \
510 && useq "berkdb" \ 473 && use berkdb \
511 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 474 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
512} 475}
513 476
514mysql_src_unpack() { 477mysql_src_unpack() {
515 # Initialize the proper variables first 478 # Initialize the proper variables first
517 480
518 unpack ${A} 481 unpack ${A}
519 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then 482 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then
520 if mysql_check_version_range "5.1 to 5.1.99" ; then 483 if mysql_check_version_range "5.1 to 5.1.99" ; then
521 bitkeeper_fetch "mysql-5.1-ndb" 484 bitkeeper_fetch "mysql-5.1-ndb"
522 elif mysql_check_version_range "5.2.0 to 5.2.99" ; then 485 elif mysql_check_version_range "5.2 to 5.2.99" ; then
523 bitkeeper_fetch "mysql-5.2-falcon" 486 bitkeeper_fetch "mysql-5.2-falcon"
524 else 487 else
525 bitkeeper_fetch 488 bitkeeper_fetch
526 fi 489 fi
527 cd "${S}" 490 cd "${S}"
528 einfo "running upstream autorun on bk sources" 491 einfo "Running upstream autorun over BK sources ..."
529 BUILD/autorun.sh 492 BUILD/autorun.sh
530 else 493 else
531 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}" 494 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
532 cd "${S}" 495 cd "${S}"
533 fi 496 fi
534 497
535 # Apply the patches for this MySQL version 498 # Apply the patches for this MySQL version
536 EPATCH_SUFFIX="patch" 499 EPATCH_SUFFIX="patch"
537 mkdir -p "${EPATCH_SOURCE}" || die "unable to create epatch directory" 500 mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory"
538 mysql_mv_patches 501 mysql_mv_patches
539 epatch || die "failed to apply all patches" 502 epatch
540 503
541 # Additional checks, remove bundled zlib 504 # Additional checks, remove bundled zlib
542 rm -f "${S}/zlib/"*.[ch] 505 rm -f "${S}/zlib/"*.[ch]
543 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" 506 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
544 rm -f "scripts/mysqlbug" 507 rm -f "scripts/mysqlbug"
559 522
560 local rebuilddirlist d 523 local rebuilddirlist d
561 524
562 if mysql_version_is_at_least "5.1.12" ; then 525 if mysql_version_is_at_least "5.1.12" ; then
563 rebuilddirlist="." 526 rebuilddirlist="."
564 # TODO IMPO! Check this with a cmake expert 527 # TODO: check this with a cmake expert
565 useq "innodb" \ 528 use innodb \
566 && cmake \ 529 && cmake \
567 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \ 530 -DCMAKE_C_COMPILER=$(type -P $(tc-getCC)) \
568 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \ 531 -DCMAKE_CXX_COMPILER=$(type -P $(tc-getCC)) \
569 "storage/innobase" 532 "storage/innobase"
570 else 533 else
571 rebuilddirlist=". innobase" 534 rebuilddirlist=". innobase"
572 fi 535 fi
573 536
577 AT_GNUCONF_UPDATE="yes" eautoreconf 540 AT_GNUCONF_UPDATE="yes" eautoreconf
578 popd &>/dev/null 541 popd &>/dev/null
579 done 542 done
580 543
581 if mysql_check_version_range "4.1 to 5.0.99.99" \ 544 if mysql_check_version_range "4.1 to 5.0.99.99" \
582 && useq "berkdb" ; then 545 && use berkdb ; then
583 [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh" 546 [[ -w "bdb/dist/ltmain.sh" ]] && cp -f "ltmain.sh" "bdb/dist/ltmain.sh"
547 cp -f "/usr/share/aclocal/libtool.m4" "bdb/dist/aclocal/libtool.ac" \
548 || die "Could not copy libtool.m4 to bdb/dist/"
584 pushd "bdb/dist" \ 549 pushd "bdb/dist" &>/dev/null
585 && sh s_all \ 550 sh s_all \
586 || die "Failed bdb reconfigure" \ 551 || die "Failed bdb reconfigure"
587 &>/dev/null
588 popd &>/dev/null 552 popd &>/dev/null
589 fi 553 fi
590} 554}
591 555
592mysql_src_compile() { 556mysql_src_compile() {
594 mysql_init_vars 558 mysql_init_vars
595 559
596 # $myconf is modified by the configure_* functions 560 # $myconf is modified by the configure_* functions
597 local myconf="" 561 local myconf=""
598 562
599 if useq "minimal" ; then 563 if use minimal ; then
600 configure_minimal 564 configure_minimal
601 else 565 else
602 configure_common 566 configure_common
603 if mysql_version_is_at_least "5.1.10" ; then 567 if mysql_version_is_at_least "5.1.10" ; then
604 configure_51 568 configure_51
618 mysql_version_is_at_least "5.0" \ 582 mysql_version_is_at_least "5.0" \
619 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 583 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
620 export CXXFLAGS 584 export CXXFLAGS
621 585
622 econf \ 586 econf \
623 --program-suffix="${MY_SUFFIX}" \
624 --libexecdir="/usr/sbin" \ 587 --libexecdir="/usr/sbin" \
625 --sysconfdir="${MY_SYSCONFDIR}" \ 588 --sysconfdir="${MY_SYSCONFDIR}" \
626 --localstatedir="${MY_LOCALSTATEDIR}" \ 589 --localstatedir="${MY_LOCALSTATEDIR}" \
627 --sharedstatedir="${MY_SHAREDSTATEDIR}" \ 590 --sharedstatedir="${MY_SHAREDSTATEDIR}" \
628 --libdir="${MY_LIBDIR}" \ 591 --libdir="${MY_LIBDIR}" \
639 | xargs -0 -n100 sed -i \ 602 | xargs -0 -n100 sed -i \
640 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|' 603 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
641 604
642 emake || die "emake failed" 605 emake || die "emake failed"
643 606
644 mysql_version_is_at_least "5.1.1" && useq "pbxt" && pbxt_src_compile 607 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_compile
645} 608}
646 609
647mysql_src_install() { 610mysql_src_install() {
648 # Make sure the vars are correctly initialized 611 # Make sure the vars are correctly initialized
649 mysql_init_vars 612 mysql_init_vars
650 613
651 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die 614 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
652 615
653 mysql_version_is_at_least "5.1.12" && useq "pbxt" && pbxt_src_install 616 mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_install
654 617
655 insinto "${MY_INCLUDEDIR}" 618 insinto "${MY_INCLUDEDIR}"
656 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 619 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
657 620
658 # Convenience links 621 # Convenience links
659 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlanalyze${MY_SUFFIX}" 622 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
660 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlrepair${MY_SUFFIX}" 623 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
661 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqloptimize${MY_SUFFIX}" 624 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
662 625
663 # Various junk (my-*.cnf moved elsewhere) 626 # Various junk (my-*.cnf moved elsewhere)
664 rm -Rf "${D}/usr/share/info" 627 rm -Rf "${D}/usr/share/info"
665 for removeme in "mysql-log-rotate" mysql.server* \ 628 for removeme in "mysql-log-rotate" mysql.server* \
666 binary-configure* my-*.cnf mi_test_all* 629 binary-configure* my-*.cnf mi_test_all*
667 do 630 do
668 rm -f "${D}"/usr/share/mysql/${removeme} 631 rm -f "${D}"/usr/share/mysql/${removeme}
669 done 632 done
670 633
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 634 # Clean up stuff for a minimal build
681 if useq "minimal" ; then 635 if use minimal ; then
682 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} 636 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} 637 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" 638 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 639 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
686 fi 640 fi
687 641
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 642 # Configuration stuff
699 if mysql_version_is_at_least "4.1" ; then 643 if mysql_version_is_at_least "4.1" ; then
700 mysql_mycnf_version="4.1" 644 mysql_mycnf_version="4.1"
701 else 645 else
702 mysql_mycnf_version="4.0" 646 mysql_mycnf_version="4.0"
703 fi 647 fi
704 insinto "${MY_SYSCONFDIR}" 648 insinto "${MY_SYSCONFDIR}"
705 doins scripts/mysqlaccess.conf 649 doins scripts/mysqlaccess.conf
706 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \
707 -e "s!@DATADIR@!${DATADIR}!g" \ 650 sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
708 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 651 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
709 > "${TMPDIR}/my.cnf.ok" 652 > "${TMPDIR}/my.cnf.ok"
710 if mysql_version_is_at_least "4.1" && useq "latin1" ; then 653 if mysql_version_is_at_least "4.1" && use latin1 ; then
711 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok" 654 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
712 fi 655 fi
713 newins "${TMPDIR}/my.cnf.ok" my.cnf 656 newins "${TMPDIR}/my.cnf.ok" my.cnf
714 657
715 # Minimal builds don't have the MySQL server 658 # Minimal builds don't have the MySQL server
716 if ! useq "minimal" ; then 659 if ! use minimal ; then
717 # Empty directories ... 660 # Empty directories ...
718 diropts "-m0750" 661 diropts "-m0750"
719 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 662 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
720 dodir "${DATADIR}" 663 dodir "${MY_DATADIR}"
721 keepdir "${DATADIR}" 664 keepdir "${MY_DATADIR}"
722 chown -R mysql:mysql "${D}/${DATADIR}" 665 chown -R mysql:mysql "${D}/${MY_DATADIR}"
723 fi 666 fi
724 667
725 diropts "-m0755" 668 diropts "-m0755"
726 for folder in "${MY_LOGDIR}" "/var/run/mysqld" ; do 669 for folder in "${MY_LOGDIR}" "/var/run/mysqld" ; do
727 dodir "${folder}" 670 dodir "${folder}"
732 675
733 # Docs 676 # Docs
734 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE 677 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
735 678
736 # Minimal builds don't have the MySQL server 679 # Minimal builds don't have the MySQL server
737 if ! useq "minimal" ; then 680 if ! use minimal ; then
738 docinto "support-files" 681 docinto "support-files"
739 for script in \ 682 for script in \
740 support-files/my-*.cnf \ 683 support-files/my-*.cnf \
741 support-files/magic \ 684 support-files/magic \
742 support-files/ndb-config-2-node.ini 685 support-files/ndb-config-2-node.ini
748 for script in scripts/mysql* ; do 691 for script in scripts/mysql* ; do
749 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 692 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
750 done 693 done
751 fi 694 fi
752 695
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}" 696 mysql_lib_symlinks "${D}"
775} 697}
776 698
777mysql_pkg_preinst() { 699mysql_pkg_preinst() {
778 enewgroup mysql 60 || die "problem adding 'mysql' group" 700 enewgroup mysql 60 || die "problem adding 'mysql' group"
782mysql_pkg_postinst() { 704mysql_pkg_postinst() {
783 # Make sure the vars are correctly initialized 705 # Make sure the vars are correctly initialized
784 mysql_init_vars 706 mysql_init_vars
785 707
786 # Check FEATURES="collision-protect" before removing this 708 # Check FEATURES="collision-protect" before removing this
787 [[ -d "${ROOT}/var/log/mysql" ]] \
788 || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" 709 [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
789 710
790 # Secure the logfiles 711 # Secure the logfiles
791 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 712 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
792 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 713 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
793 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 714 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
794 715
795 # Minimal builds don't have the MySQL server 716 # Minimal builds don't have the MySQL server
796 if ! useq "minimal" ; then 717 if ! use minimal ; then
797 docinto "support-files" 718 docinto "support-files"
798 for script in \ 719 for script in \
799 support-files/my-*.cnf \ 720 support-files/my-*.cnf \
800 support-files/magic \ 721 support-files/magic \
801 support-files/ndb-config-2-node.ini 722 support-files/ndb-config-2-node.ini
805 726
806 docinto "scripts" 727 docinto "scripts"
807 for script in scripts/mysql* ; do 728 for script in scripts/mysql* ; do
808 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 729 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
809 done 730 done
810 fi
811 731
812 einfo "you may want to read slotting upgrade documents in the overlay" 732 einfo
813 if useq "pbxt" && mysql_version_is_at_least "5.1" ; then 733 elog "You might want to run:"
814 # TODO tell it better ;-) 734 elog "\"emerge --config =${CATEGORY}/${PF}\""
735 elog "if this is a new install."
736 einfo
737 fi
738
739 if mysql_version_is_at_least "5.1.12" && use pbxt ; then
740 # TODO: explain it better
815 einfo "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';" 741 elog " mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
816 einfo "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;" 742 elog " mysql> CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
817 einfo "if, after that you cannot start the mysql server" 743 elog "if, after that, you cannot start the MySQL server,"
818 einfo "remove the ${MY_DATADIR}/mysql/plugin.* files, then" 744 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
819 einfo "use the mysql upgrade script to restore the table" 745 elog "use the MySQL upgrade script to restore the table"
820 einfo " or " 746 elog "or execute the following SQL command:"
821 einfo "CREATE TABLE IF NOT EXISTS plugin (" 747 elog " CREATE TABLE IF NOT EXISTS plugin ("
822 einfo " name char(64) binary DEFAULT '' NOT NULL," 748 elog " name char(64) binary DEFAULT '' NOT NULL,"
823 einfo " dl char(128) DEFAULT '' NOT NULL," 749 elog " dl char(128) DEFAULT '' NOT NULL,"
824 einfo " PRIMARY KEY (name)" 750 elog " PRIMARY KEY (name)"
825 einfo ") CHARACTER SET utf8 COLLATE utf8_bin;" 751 elog " ) CHARACTER SET utf8 COLLATE utf8_bin;"
826 fi 752 fi
753
827 mysql_check_version_range "4.0 to 5.0.99.99" \ 754 mysql_check_version_range "4.0 to 5.0.99.99" \
828 && useq "berkdb" \ 755 && use berkdb \
829 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 756 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
830} 757}
831 758
832mysql_pkg_config() { 759mysql_pkg_config() {
833 # Make sure the vars are correctly initialized 760 # Make sure the vars are correctly initialized
834 mysql_init_vars 761 mysql_init_vars
835 762
836 [[ -z "${DATADIR}" ]] && die "Sorry, unable to find DATADIR" 763 [[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR"
837 764
838 if built_with_use ${CATEGORY}/${PN} minimal ; then 765 if built_with_use ${CATEGORY}/${PN} minimal ; then
839 die "Minimal builds do NOT include the MySQL server" 766 die "Minimal builds do NOT include the MySQL server"
840 fi 767 fi
841 768
842 local pwd1="a" 769 local pwd1="a"
843 local pwd2="b" 770 local pwd2="b"
844 local maxtry=5 771 local maxtry=5
845 772
846 if [[ -d "${ROOT}/${DATADIR}/mysql" ]] ; then 773 if [[ -d "${ROOT}/${MY_DATADIR}/mysql" ]] ; then
847 ewarn "You have already a MySQL database in place." 774 ewarn "You have already a MySQL database in place."
848 ewarn "(${ROOT}/${DATADIR}/*)" 775 ewarn "(${ROOT}/${MY_DATADIR}/*)"
849 ewarn "Please rename or delete it if you wish to replace it." 776 ewarn "Please rename or delete it if you wish to replace it."
850 die "MySQL database already exists!" 777 die "MySQL database already exists!"
851 fi 778 fi
852 779
853 einfo "Creating the mysql database and setting proper" 780 einfo "Creating the mysql database and setting proper"
874 help_tables="${TMPDIR}/fill_help_tables.sql" 801 help_tables="${TMPDIR}/fill_help_tables.sql"
875 802
876 pushd "${TMPDIR}" &>/dev/null 803 pushd "${TMPDIR}" &>/dev/null
877 "${ROOT}/usr/bin/mysql_install_db" | grep -B5 -A999 -i "ERROR" 804 "${ROOT}/usr/bin/mysql_install_db" | grep -B5 -A999 -i "ERROR"
878 popd &>/dev/null 805 popd &>/dev/null
879 [[ -f "${ROOT}/${DATADIR}/mysql/user.frm" ]] \ 806 [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \
880 || die "MySQL databases not installed" 807 || die "MySQL databases not installed"
881 chown -R mysql:mysql "${ROOT}/${DATADIR}" 2> /dev/null 808 chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2> /dev/null
882 chmod 0750 "${ROOT}/${DATADIR}" 2> /dev/null 809 chmod 0750 "${ROOT}/${MY_DATADIR}" 2> /dev/null
883 810
884 if mysql_version_is_at_least "4.1.3" ; then 811 if mysql_version_is_at_least "4.1.3" ; then
885 options="--skip-ndbcluster" 812 options="--skip-ndbcluster"
886 813
887 # Filling timezones, see 814 # Filling timezones, see
898 local mysqld="${ROOT}/usr/sbin/mysqld \ 825 local mysqld="${ROOT}/usr/sbin/mysqld \
899 ${options} \ 826 ${options} \
900 --user=mysql \ 827 --user=mysql \
901 --skip-grant-tables \ 828 --skip-grant-tables \
902 --basedir=${ROOT}/usr \ 829 --basedir=${ROOT}/usr \
903 --datadir=${ROOT}/${DATADIR} \ 830 --datadir=${ROOT}/${MY_DATADIR} \
904 --skip-innodb \ 831 --skip-innodb \
905 --skip-bdb \ 832 --skip-bdb \
906 --skip-networking \ 833 --skip-networking \
907 --max_allowed_packet=8M \ 834 --max_allowed_packet=8M \
908 --net_buffer_length=16K \ 835 --net_buffer_length=16K \
938 wait %1 865 wait %1
939 einfo "Done" 866 einfo "Done"
940} 867}
941 868
942mysql_pkg_postrm() { 869mysql_pkg_postrm() {
943 if [[ ${PN} == "mysql-slotted" ]] ; then
944 mysql_lib_symlinks 870 : # mysql_lib_symlinks "${D}"
945 mysql_clients_link_to_best_version
946 fi
947} 871}

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

  ViewVC Help
Powered by ViewVC 1.1.20