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

Diff of /eclass/mysql.eclass

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

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

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

  ViewVC Help
Powered by ViewVC 1.1.20