/[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.78
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.78 2007/05/11 08:25:11 robbat2 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)"
328 else
329 myconf="${myconf} $(use_with ssl openssl)"
330 fi
331
332 if use berkdb ; then
333 # The following fix is due to a bug with bdb on SPARC's. See:
334 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
335 # It comes down to non-64-bit safety problems.
336 if use alpha || use amd64 || use hppa || use mips || use sparc ; then
337 elog "Berkeley DB support was disabled due to compatibility issues on this arch"
338 myconf="${myconf} --without-berkeley-db"
360 else 339 else
361 myconf="${myconf} --with-openssl" 340 myconf="${myconf} --with-berkeley-db=./bdb"
362 fi
363 else
364 myconf="${myconf} --without-openssl"
365 fi 341 fi
366 342 else
367 # 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
369 # It comes down to non-64-bit safety problems.
370 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" || useq "amd64" ; then
371 elog "Berkeley DB support was disabled due to incompatible arch"
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}"
730 done 673 done
731 fi 674 fi
732 675
733 # Docs 676 # Docs
734 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE 677 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
678 doinfo ${S}/Docs/mysql.info
735 679
736 # Minimal builds don't have the MySQL server 680 # Minimal builds don't have the MySQL server
737 if ! useq "minimal" ; then 681 if ! use minimal ; then
738 docinto "support-files" 682 docinto "support-files"
739 for script in \ 683 for script in \
740 support-files/my-*.cnf \ 684 support-files/my-*.cnf \
741 support-files/magic \ 685 support-files/magic \
742 support-files/ndb-config-2-node.ini 686 support-files/ndb-config-2-node.ini
746 690
747 docinto "scripts" 691 docinto "scripts"
748 for script in scripts/mysql* ; do 692 for script in scripts/mysql* ; do
749 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 693 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
750 done 694 done
751 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 696 fi
773 697
774 mysql_lib_symlinks "${D}" 698 mysql_lib_symlinks "${D}"
775} 699}
776 700
782mysql_pkg_postinst() { 706mysql_pkg_postinst() {
783 # Make sure the vars are correctly initialized 707 # Make sure the vars are correctly initialized
784 mysql_init_vars 708 mysql_init_vars
785 709
786 # Check FEATURES="collision-protect" before removing this 710 # Check FEATURES="collision-protect" before removing this
787 [[ -d "${ROOT}/var/log/mysql" ]] \
788 || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" 711 [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
789 712
790 # Secure the logfiles 713 # Secure the logfiles
791 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 714 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
792 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 715 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
793 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 716 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
794 717
795 # Minimal builds don't have the MySQL server 718 # Minimal builds don't have the MySQL server
796 if ! useq "minimal" ; then 719 if ! use minimal ; then
797 docinto "support-files" 720 docinto "support-files"
798 for script in \ 721 for script in \
799 support-files/my-*.cnf \ 722 support-files/my-*.cnf \
800 support-files/magic \ 723 support-files/magic \
801 support-files/ndb-config-2-node.ini 724 support-files/ndb-config-2-node.ini
805 728
806 docinto "scripts" 729 docinto "scripts"
807 for script in scripts/mysql* ; do 730 for script in scripts/mysql* ; do
808 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 731 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
809 done 732 done
810 fi
811 733
812 einfo "you may want to read slotting upgrade documents in the overlay" 734 einfo
813 if useq "pbxt" && mysql_version_is_at_least "5.1" ; then 735 elog "You might want to run:"
814 # TODO tell it better ;-) 736 elog "\"emerge --config =${CATEGORY}/${PF}\""
737 elog "if this is a new install."
738 einfo
739 fi
740
741 if mysql_version_is_at_least "5.1.12" && use pbxt ; then
742 # TODO: explain it better
815 einfo "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';" 743 elog " mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
816 einfo "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;" 744 elog " mysql> CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
817 einfo "if, after that you cannot start the mysql server" 745 elog "if, after that, you cannot start the MySQL server,"
818 einfo "remove the ${MY_DATADIR}/mysql/plugin.* files, then" 746 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
819 einfo "use the mysql upgrade script to restore the table" 747 elog "use the MySQL upgrade script to restore the table"
820 einfo " or " 748 elog "or execute the following SQL command:"
821 einfo "CREATE TABLE IF NOT EXISTS plugin (" 749 elog " CREATE TABLE IF NOT EXISTS plugin ("
822 einfo " name char(64) binary DEFAULT '' NOT NULL," 750 elog " name char(64) binary DEFAULT '' NOT NULL,"
823 einfo " dl char(128) DEFAULT '' NOT NULL," 751 elog " dl char(128) DEFAULT '' NOT NULL,"
824 einfo " PRIMARY KEY (name)" 752 elog " PRIMARY KEY (name)"
825 einfo ") CHARACTER SET utf8 COLLATE utf8_bin;" 753 elog " ) CHARACTER SET utf8 COLLATE utf8_bin;"
826 fi 754 fi
755
827 mysql_check_version_range "4.0 to 5.0.99.99" \ 756 mysql_check_version_range "4.0 to 5.0.99.99" \
828 && useq "berkdb" \ 757 && use berkdb \
829 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 758 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
830} 759}
831 760
832mysql_pkg_config() { 761mysql_pkg_config() {
833 # Make sure the vars are correctly initialized 762 # Make sure the vars are correctly initialized
834 mysql_init_vars 763 mysql_init_vars
835 764
836 [[ -z "${DATADIR}" ]] && die "Sorry, unable to find DATADIR" 765 [[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR"
837 766
838 if built_with_use ${CATEGORY}/${PN} minimal ; then 767 if built_with_use ${CATEGORY}/${PN} minimal ; then
839 die "Minimal builds do NOT include the MySQL server" 768 die "Minimal builds do NOT include the MySQL server"
840 fi 769 fi
841 770
842 local pwd1="a" 771 local pwd1="a"
843 local pwd2="b" 772 local pwd2="b"
844 local maxtry=5 773 local maxtry=5
845 774
846 if [[ -d "${ROOT}/${DATADIR}/mysql" ]] ; then 775 if [[ -d "${ROOT}/${MY_DATADIR}/mysql" ]] ; then
847 ewarn "You have already a MySQL database in place." 776 ewarn "You have already a MySQL database in place."
848 ewarn "(${ROOT}/${DATADIR}/*)" 777 ewarn "(${ROOT}/${MY_DATADIR}/*)"
849 ewarn "Please rename or delete it if you wish to replace it." 778 ewarn "Please rename or delete it if you wish to replace it."
850 die "MySQL database already exists!" 779 die "MySQL database already exists!"
851 fi 780 fi
852 781
853 einfo "Creating the mysql database and setting proper" 782 einfo "Creating the mysql database and setting proper"
874 help_tables="${TMPDIR}/fill_help_tables.sql" 803 help_tables="${TMPDIR}/fill_help_tables.sql"
875 804
876 pushd "${TMPDIR}" &>/dev/null 805 pushd "${TMPDIR}" &>/dev/null
877 "${ROOT}/usr/bin/mysql_install_db" | grep -B5 -A999 -i "ERROR" 806 "${ROOT}/usr/bin/mysql_install_db" | grep -B5 -A999 -i "ERROR"
878 popd &>/dev/null 807 popd &>/dev/null
879 [[ -f "${ROOT}/${DATADIR}/mysql/user.frm" ]] \ 808 [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \
880 || die "MySQL databases not installed" 809 || die "MySQL databases not installed"
881 chown -R mysql:mysql "${ROOT}/${DATADIR}" 2> /dev/null 810 chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2> /dev/null
882 chmod 0750 "${ROOT}/${DATADIR}" 2> /dev/null 811 chmod 0750 "${ROOT}/${MY_DATADIR}" 2> /dev/null
883 812
884 if mysql_version_is_at_least "4.1.3" ; then 813 if mysql_version_is_at_least "4.1.3" ; then
885 options="--skip-ndbcluster" 814 options="--skip-ndbcluster"
886 815
887 # Filling timezones, see 816 # Filling timezones, see
898 local mysqld="${ROOT}/usr/sbin/mysqld \ 827 local mysqld="${ROOT}/usr/sbin/mysqld \
899 ${options} \ 828 ${options} \
900 --user=mysql \ 829 --user=mysql \
901 --skip-grant-tables \ 830 --skip-grant-tables \
902 --basedir=${ROOT}/usr \ 831 --basedir=${ROOT}/usr \
903 --datadir=${ROOT}/${DATADIR} \ 832 --datadir=${ROOT}/${MY_DATADIR} \
904 --skip-innodb \ 833 --skip-innodb \
905 --skip-bdb \ 834 --skip-bdb \
906 --skip-networking \ 835 --skip-networking \
907 --max_allowed_packet=8M \ 836 --max_allowed_packet=8M \
908 --net_buffer_length=16K \ 837 --net_buffer_length=16K \
938 wait %1 867 wait %1
939 einfo "Done" 868 einfo "Done"
940} 869}
941 870
942mysql_pkg_postrm() { 871mysql_pkg_postrm() {
943 if [[ ${PN} == "mysql-slotted" ]] ; then
944 mysql_lib_symlinks 872 : # mysql_lib_symlinks "${D}"
945 mysql_clients_link_to_best_version
946 fi
947} 873}

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

  ViewVC Help
Powered by ViewVC 1.1.20