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

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

  ViewVC Help
Powered by ViewVC 1.1.20