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

Contents of /eclass/mysql-v2.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.36 - (hide annotations) (download)
Mon Feb 16 14:37:50 2015 UTC (11 days, 23 hours ago) by grknight
Branch: MAIN
CVS Tags: HEAD
Changes since 1.35: +4 -4 lines
Silence repoman warnings by providing slots on openssl and readline

1 jmbsvicetto 1.27 # Copyright 1999-2014 Gentoo Foundation
2 robbat2 1.1 # Distributed under the terms of the GNU General Public License v2
3 grknight 1.36 # $Header: /var/cvsroot/gentoo-x86/eclass/mysql-v2.eclass,v 1.35 2014/08/10 05:47:24 robbat2 Exp $
4 robbat2 1.1
5     # @ECLASS: mysql-v2.eclass
6     # @MAINTAINER:
7     # Maintainers:
8     # - MySQL Team <mysql-bugs@gentoo.org>
9     # - Robin H. Johnson <robbat2@gentoo.org>
10     # - Jorge Manuel B. S. Vicetto <jmbsvicetto@gentoo.org>
11 grknight 1.29 # - Brian Evans <grknight@gentoo.org>
12 robbat2 1.1 # @BLURB: This eclass provides most of the functions for mysql ebuilds
13     # @DESCRIPTION:
14     # The mysql-v2.eclass is the base eclass to build the mysql and
15 jmbsvicetto 1.25 # alternative projects (mariadb and percona) ebuilds.
16 robbat2 1.1 # This eclass uses the mysql-autotools and mysql-cmake eclasses for the
17     # specific bits related to the build system.
18     # It provides the src_unpack, src_prepare, src_configure, src_compile,
19 heroxbd 1.16 # src_install, pkg_preinst, pkg_postinst, pkg_config and pkg_postrm
20 robbat2 1.1 # phase hooks.
21    
22     # @ECLASS-VARIABLE: BUILD
23 vapier 1.7 # @DESCRIPTION:
24     # Build type of the mysql version
25 robbat2 1.1 : ${BUILD:=autotools}
26    
27     case ${BUILD} in
28     "cmake")
29     BUILD_INHERIT="mysql-cmake"
30     ;;
31     "autotools")
32     BUILD_INHERIT="mysql-autotools"
33    
34     WANT_AUTOCONF="latest"
35     WANT_AUTOMAKE="latest"
36     ;;
37     *)
38     die "${BUILD} is not a valid build system for mysql"
39     ;;
40     esac
41    
42     MYSQL_EXTRAS=""
43    
44     # @ECLASS-VARIABLE: MYSQL_EXTRAS_VER
45 vapier 1.7 # @DESCRIPTION:
46     # The version of the MYSQL_EXTRAS repo to use to build mysql
47 jmbsvicetto 1.9 # Use "none" to disable it's use
48 robbat2 1.34 [[ ${MY_EXTRAS_VER} == "live" ]] && MYSQL_EXTRAS="git-r3"
49 robbat2 1.1
50 vapier 1.26 inherit eutils flag-o-matic gnuconfig ${MYSQL_EXTRAS} ${BUILD_INHERIT} mysql_fx versionator toolchain-funcs user
51 robbat2 1.1
52     #
53     # Supported EAPI versions and export functions
54     #
55    
56     case "${EAPI:-0}" in
57 jmbsvicetto 1.25 4|5) ;;
58 robbat2 1.1 *) die "Unsupported EAPI: ${EAPI}" ;;
59     esac
60    
61 jmbsvicetto 1.3 EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_install pkg_preinst pkg_postinst pkg_config pkg_postrm
62 robbat2 1.1
63     #
64     # VARIABLES:
65     #
66    
67     # Shorten the path because the socket path length must be shorter than 107 chars
68     # and we will run a mysql server during test phase
69     S="${WORKDIR}/mysql"
70    
71 jmbsvicetto 1.25 [[ ${MY_EXTRAS_VER} == "latest" ]] && MY_EXTRAS_VER="20090228-0714Z"
72     if [[ ${MY_EXTRAS_VER} == "live" ]]; then
73 robbat2 1.1 EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/mysql-extras.git"
74 robbat2 1.34 EGIT_CHECKOUT_DIR=${WORKDIR}/mysql-extras
75     EGIT_CLONE_TYPE=shallow
76 robbat2 1.1 fi
77    
78     # @ECLASS-VARIABLE: MYSQL_PV_MAJOR
79     # @DESCRIPTION:
80     # Upstream MySQL considers the first two parts of the version number to be the
81     # major version. Upgrades that change major version should always run
82     # mysql_upgrade.
83     MYSQL_PV_MAJOR="$(get_version_component_range 1-2 ${PV})"
84    
85 jmbsvicetto 1.27 # Cluster is a special case...
86 robbat2 1.33 if [[ ${PN} == "mysql-cluster" ]]; then
87     case ${PV} in
88 jmbsvicetto 1.27 6.1*|7.0*|7.1*) MYSQL_PV_MAJOR=5.1 ;;
89 robbat2 1.33 7.2*) MYSQL_PV_MAJOR=5.5 ;;
90     7.3*) MYSQL_PV_MAJOR=5.6 ;;
91     esac
92     fi
93    
94     # MariaDB has left the numbering schema but keeping compatibility
95     if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]]; then
96     case ${PV} in
97     10.0*|10.1*) MYSQL_PV_MAJOR="5.6" ;;
98 jmbsvicetto 1.27 esac
99     fi
100    
101 robbat2 1.1 # @ECLASS-VARIABLE: MYSQL_VERSION_ID
102     # @DESCRIPTION:
103     # MYSQL_VERSION_ID will be:
104     # major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99]
105     # This is an important part, because many of the choices the MySQL ebuild will do
106     # depend on this variable.
107     # In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803"
108     # We also strip off upstream's trailing letter that they use to respin tarballs
109     MYSQL_VERSION_ID=""
110     tpv="${PV%[a-z]}"
111     tpv=( ${tpv//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
112     for vatom in 0 1 2 3 ; do
113     # pad to length 2
114     tpv[${vatom}]="00${tpv[${vatom}]}"
115     MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
116     done
117     # strip leading "0" (otherwise it's considered an octal number by BASH)
118     MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
119    
120     # This eclass should only be used with at least mysql-5.1.50
121     mysql_version_is_at_least "5.1.50" || die "This eclass should only be used with >=mysql-5.1.50"
122    
123     # @ECLASS-VARIABLE: XTRADB_VER
124     # @DEFAULT_UNSET
125     # @DESCRIPTION:
126     # Version of the XTRADB storage engine
127    
128     # @ECLASS-VARIABLE: PERCONA_VER
129     # @DEFAULT_UNSET
130     # @DESCRIPTION:
131     # Designation by PERCONA for a MySQL version to apply an XTRADB release
132    
133     # Work out the default SERVER_URI correctly
134 jmbsvicetto 1.25 if [[ -z ${SERVER_URI} ]]; then
135     [[ -z ${MY_PV} ]] && MY_PV="${PV//_/-}"
136     if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]]; then
137 jmbsvicetto 1.27 # Beginning with 5.5, MariaDB stopped putting beta, alpha or rc on their tarball names
138     mysql_version_is_at_least "5.5" && MARIA_FULL_PV=$(get_version_component_range 1-3) || \
139     MARIA_FULL_PV=$(replace_version_separator 3 '-' ${MY_PV})
140 robbat2 1.1 MARIA_FULL_P="${PN}-${MARIA_FULL_PV}"
141     SERVER_URI="
142     http://ftp.osuosl.org/pub/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
143 jmbsvicetto 1.28 http://ftp.osuosl.org/pub/mariadb/${MARIA_FULL_P}/source/${MARIA_FULL_P}.tar.gz
144 jmbsvicetto 1.27 http://mirror.jmu.edu/pub/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
145     http://mirrors.coreix.net/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
146     http://mirrors.syringanetworks.net/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
147     http://mirrors.fe.up.pt/pub/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
148     http://mirror2.hs-esslingen.de/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz
149 robbat2 1.1 "
150 jmbsvicetto 1.25 if [[ ${PN} == "mariadb-galera" ]]; then
151     MY_SOURCEDIR="${PN%%-galera}-${MARIA_FULL_PV}"
152     fi
153     elif [[ ${PN} == "percona-server" ]]; then
154     PERCONA_PN="Percona-Server"
155     MIRROR_PV=$(get_version_component_range 1-2 ${PV})
156     MY_PV=$(get_version_component_range 1-3 ${PV})
157 jmbsvicetto 1.27 PERCONA_RELEASE=$(get_version_component_range 4-5 ${PV})
158     PERCONA_RC=$(get_version_component_range 6 ${PV})
159     SERVER_URI="http://www.percona.com/redir/downloads/${PERCONA_PN}-${MIRROR_PV}/${PERCONA_PN}-${MY_PV}-${PERCONA_RC}${PERCONA_RELEASE}/source/tarball/${PN}-${MY_PV}-${PERCONA_RC}${PERCONA_RELEASE}.tar.gz"
160     # http://www.percona.com/redir/downloads/Percona-Server-5.5/LATEST/source/tarball/Percona-Server-5.5.30-30.2.tar.gz
161     # http://www.percona.com/redir/downloads/Percona-Server-5.6/Percona-Server-5.6.13-rc60.5/source/tarball/Percona-Server-5.6.13-rc60.5.tar.gz
162 robbat2 1.15 else
163 jmbsvicetto 1.27 if [[ "${PN}" == "mysql-cluster" ]] ; then
164     URI_DIR="MySQL-Cluster"
165     URI_FILE="mysql-cluster-gpl"
166     else
167     URI_DIR="MySQL"
168     URI_FILE="mysql"
169     fi
170 robbat2 1.1 URI_A="${URI_FILE}-${MY_PV}.tar.gz"
171     MIRROR_PV=$(get_version_component_range 1-2 ${PV})
172     # Recently upstream switched to an archive site, and not on mirrors
173     SERVER_URI="http://downloads.mysql.com/archives/${URI_FILE}-${MIRROR_PV}/${URI_A}
174 robbat2 1.35 https://downloads.skysql.com/files/${URI_FILE}-${MIRROR_PV}/${URI_A}
175 robbat2 1.1 mirror://mysql/Downloads/${URI_DIR}-${PV%.*}/${URI_A}"
176     fi
177     fi
178    
179     # Define correct SRC_URIs
180     SRC_URI="${SERVER_URI}"
181    
182     # Gentoo patches to MySQL
183 jmbsvicetto 1.25 if [[ ${MY_EXTRAS_VER} != "live" && ${MY_EXTRAS_VER} != "none" ]]; then
184     SRC_URI="${SRC_URI}
185 robbat2 1.1 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
186     http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
187 jmbsvicetto 1.4 http://dev.gentoo.org/~robbat2/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
188 grknight 1.29 http://dev.gentoo.org/~jmbsvicetto/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
189     http://dev.gentoo.org/~grknight/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
190 jmbsvicetto 1.25 fi
191 robbat2 1.1
192 grknight 1.29 DESCRIPTION="A fast, multi-threaded, multi-user SQL database server"
193 robbat2 1.1 HOMEPAGE="http://www.mysql.com/"
194 jmbsvicetto 1.25 if [[ ${PN} == "mariadb" ]]; then
195 robbat2 1.1 HOMEPAGE="http://mariadb.org/"
196 robbat2 1.23 DESCRIPTION="An enhanced, drop-in replacement for MySQL"
197 robbat2 1.1 fi
198 jmbsvicetto 1.25 if [[ ${PN} == "mariadb-galera" ]]; then
199     HOMEPAGE="http://mariadb.org/"
200     DESCRIPTION="An enhanced, drop-in replacement for MySQL with Galera Replication"
201     fi
202     if [[ ${PN} == "percona-server" ]]; then
203     HOMEPAGE="http://www.percona.com/software/percona-server"
204 grknight 1.29 DESCRIPTION="An enhanced, drop-in replacement for MySQL from the Percona team"
205 jmbsvicetto 1.25 fi
206 robbat2 1.1 LICENSE="GPL-2"
207     SLOT="0"
208    
209     case "${BUILD}" in
210     "autotools")
211     IUSE="big-tables debug embedded minimal +perl selinux ssl static test"
212     ;;
213     "cmake")
214 jmbsvicetto 1.27 IUSE="debug embedded minimal +perl selinux ssl static static-libs test"
215 robbat2 1.1 ;;
216     esac
217    
218 jmbsvicetto 1.27 # Common IUSE
219     IUSE="${IUSE} latin1 extraengine cluster max-idx-128 +community profiling"
220 robbat2 1.1
221 robbat2 1.33 # This probably could be simplified, but the syntax would have to be just right
222 grknight 1.31 if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]] && \
223 robbat2 1.33 mysql_version_is_at_least "5.5" ; then
224     IUSE="bindist ${IUSE}"
225     elif [[ ${PN} == "mysql" || ${PN} == "percona-server" ]] && \
226     mysql_check_version_range "5.5.37 to 5.6.11.99" ; then
227     IUSE="bindist ${IUSE}"
228     elif [[ ${PN} == "mysql-cluster" ]] && \
229     mysql_check_version_range "7.2 to 7.2.99.99" ; then
230 grknight 1.31 IUSE="bindist ${IUSE}"
231     fi
232    
233 jmbsvicetto 1.25 if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]]; then
234     mysql_check_version_range "5.1.38 to 5.3.99" && IUSE="${IUSE} libevent"
235 jmbsvicetto 1.27 mysql_version_is_at_least "5.2" && IUSE="${IUSE} oqgraph" && \
236     REQUIRED_USE="${REQUIRED_USE} minimal? ( !oqgraph )"
237     mysql_version_is_at_least "5.2.5" && IUSE="${IUSE} sphinx" && \
238     REQUIRED_USE="${REQUIRED_USE} minimal? ( !sphinx )"
239 jmbsvicetto 1.25 mysql_version_is_at_least "5.2.10" && IUSE="${IUSE} pam"
240 jmbsvicetto 1.27 # 5.5.33 and 10.0.5 add TokuDB. Authors strongly recommend jemalloc or perfomance suffers
241     mysql_version_is_at_least "10.0.5" && IUSE="${IUSE} tokudb odbc xml" && \
242     REQUIRED_USE="${REQUIRED_USE} odbc? ( extraengine ) xml? ( extraengine ) tokudb? ( jemalloc )"
243     mysql_check_version_range "5.5.33 to 5.5.99" && IUSE="${IUSE} tokudb" && \
244     REQUIRED_USE="${REQUIRED_USE} tokudb? ( jemalloc )"
245 jmbsvicetto 1.25 fi
246 robbat2 1.24
247 robbat2 1.21 if mysql_version_is_at_least "5.5"; then
248 jmbsvicetto 1.27 REQUIRED_USE="${REQUIRED_USE} tcmalloc? ( !jemalloc ) jemalloc? ( !tcmalloc )"
249 robbat2 1.21 IUSE="${IUSE} jemalloc tcmalloc"
250     fi
251    
252 jmbsvicetto 1.25 if mysql_version_is_at_least "5.5.7"; then
253     IUSE="${IUSE} systemtap"
254     fi
255    
256     if [[ ${PN} == "percona-server" ]]; then
257     mysql_version_is_at_least "5.5.10" && IUSE="${IUSE} pam"
258     fi
259    
260 robbat2 1.23 REQUIRED_USE="${REQUIRED_USE} minimal? ( !cluster !extraengine !embedded ) static? ( !ssl )"
261    
262 robbat2 1.1 #
263     # DEPENDENCIES:
264     #
265    
266     # Be warned, *DEPEND are version-dependant
267     # These are used for both runtime and compiletime
268     DEPEND="
269 grknight 1.36 ssl? ( >=dev-libs/openssl-0.9.6d:0 )
270 jmbsvicetto 1.9 kernel_linux? ( sys-process/procps )
271 robbat2 1.1 >=sys-apps/sed-4
272     >=sys-apps/texinfo-4.7-r1
273     >=sys-libs/zlib-1.2.3
274     "
275 jmbsvicetto 1.27 # TODO: add this as a dep if it is moved from the overlay
276     # !dev-db/mariadb-native-client[mysqlcompat]
277    
278     # dev-db/mysql-5.6.12+ only works with dev-libs/libedit
279 robbat2 1.33 # This probably could be simplified
280     if [[ ${PN} == "mysql" || ${PN} == "percona-server" ]] && \
281     mysql_version_is_at_least "5.6.12" ; then
282     DEPEND="${DEPEND} dev-libs/libedit"
283     elif [[ ${PN} == "mysql-cluster" ]] && mysql_version_is_at_least "7.3"; then
284 jmbsvicetto 1.27 DEPEND="${DEPEND} dev-libs/libedit"
285     else
286 grknight 1.31 if mysql_version_is_at_least "5.5" ; then
287 grknight 1.36 DEPEND="${DEPEND} !bindist? ( >=sys-libs/readline-4.1:0 )"
288 grknight 1.31 else
289 grknight 1.36 DEPEND="${DEPEND} >=sys-libs/readline-4.1:0"
290 grknight 1.31 fi
291 jmbsvicetto 1.27 fi
292 robbat2 1.1
293 jmbsvicetto 1.25 if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]] ; then
294     mysql_check_version_range "5.1.38 to 5.3.99" && DEPEND="${DEPEND} libevent? ( >=dev-libs/libevent-1.4 )"
295     mysql_version_is_at_least "5.2" && DEPEND="${DEPEND} oqgraph? ( >=dev-libs/boost-1.40.0 )"
296     mysql_version_is_at_least "5.2.10" && DEPEND="${DEPEND} !minimal? ( pam? ( virtual/pam ) )"
297     # Bug 441700 MariaDB >=5.3 include custom mytop
298     mysql_version_is_at_least "5.3" && DEPEND="${DEPEND} perl? ( !dev-db/mytop )"
299 jmbsvicetto 1.27 if mysql_version_is_at_least "10.0.5" ; then
300     DEPEND="${DEPEND}
301     odbc? ( dev-db/unixODBC )
302     xml? ( dev-libs/libxml2 )
303     "
304     fi
305     mysql_version_is_at_least "10.0.7" && DEPEND="${DEPEND} oqgraph? ( dev-libs/judy )"
306     if mysql_version_is_at_least "10.0.9" ; then
307 grknight 1.29 DEPEND="${DEPEND} >=dev-libs/libpcre-8.35"
308 jmbsvicetto 1.27 fi
309 jmbsvicetto 1.25 fi
310 robbat2 1.1
311     # Having different flavours at the same time is not a good idea
312 jmbsvicetto 1.27 for i in "mysql" "mariadb" "mariadb-galera" "percona-server" "mysql-cluster" ; do
313 robbat2 1.1 [[ ${i} == ${PN} ]] ||
314     DEPEND="${DEPEND} !dev-db/${i}"
315     done
316    
317 jmbsvicetto 1.27 if mysql_version_is_at_least "5.5.7" ; then
318     DEPEND="${DEPEND}
319     jemalloc? ( dev-libs/jemalloc[static-libs?] )
320     tcmalloc? ( dev-util/google-perftools )
321     >=sys-libs/zlib-1.2.3[static-libs?]
322     ssl? ( >=dev-libs/openssl-0.9.6d[static-libs?] )
323     systemtap? ( >=dev-util/systemtap-1.3 )
324     kernel_linux? ( dev-libs/libaio )
325     "
326 jmbsvicetto 1.25 fi
327 robbat2 1.22
328 jmbsvicetto 1.27 if [[ ${PN} == "mysql-cluster" ]] ; then
329     # TODO: This really should include net-misc/memcached
330     # but the package does not install the files it seeks.
331     mysql_version_is_at_least "7.2.3" && \
332     DEPEND="${DEPEND} dev-libs/libevent"
333 jmbsvicetto 1.25 fi
334 robbat2 1.22
335 grobian 1.8 # prefix: first need to implement something for #196294
336 robbat2 1.1 RDEPEND="${DEPEND}
337 grobian 1.8 !minimal? ( !prefix? ( dev-db/mysql-init-scripts ) )
338 robbat2 1.1 selinux? ( sec-policy/selinux-mysql )
339     "
340    
341 jmbsvicetto 1.25 if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]] ; then
342     # Bug 455016 Add dependencies of mytop
343     if mysql_version_is_at_least "5.3" ; then
344 jmbsvicetto 1.27 RDEPEND="${RDEPEND}
345     perl? (
346     virtual/perl-Getopt-Long
347     dev-perl/TermReadKey
348     virtual/perl-Term-ANSIColor
349     virtual/perl-Time-HiRes
350     )
351     "
352 jmbsvicetto 1.25 fi
353     fi
354 robbat2 1.24
355 jmbsvicetto 1.27 if [[ ${PN} == "mariadb-galera" ]] ; then
356     # The wsrep API version must match between the ebuild and sys-cluster/galera.
357     # This will be indicated by WSREP_REVISION in the ebuild and the first number
358     # in the version of sys-cluster/galera
359     RDEPEND="${RDEPEND}
360     =sys-cluster/galera-${WSREP_REVISION}*
361     "
362     fi
363    
364     if [[ ${PN} == "mysql-cluster" ]] ; then
365     mysql_version_is_at_least "7.2.9" && RDEPEND="${RDEPEND} java? ( >=virtual/jre-1.6 )" && \
366     DEPEND="${DEPEND} java? ( >=virtual/jdk-1.6 )"
367     fi
368    
369 jmbsvicetto 1.6 DEPEND="${DEPEND}
370     virtual/yacc
371     "
372    
373 jmbsvicetto 1.17 DEPEND="${DEPEND} static? ( sys-libs/ncurses[static-libs] )"
374 robbat2 1.1
375     # compile-time-only
376     DEPEND="${DEPEND} >=dev-util/cmake-2.4.3"
377    
378     # compile-time-only
379 jmbsvicetto 1.25 if mysql_version_is_at_least "5.5.8" ; then
380     DEPEND="${DEPEND} >=dev-util/cmake-2.6.3"
381     fi
382 robbat2 1.1
383     # dev-perl/DBD-mysql is needed by some scripts installed by MySQL
384     PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
385    
386     # For other stuff to bring us in
387 jmbsvicetto 1.27 PDEPEND="${PDEPEND} ~virtual/mysql-${MYSQL_PV_MAJOR}"
388 robbat2 1.1
389     #
390     # External patches
391     #
392    
393 jmbsvicetto 1.27 # MariaDB has integrated PBXT until it was dropped in version 5.5.33
394 robbat2 1.1 # PBXT_VERSION means that we have a PBXT patch for this PV
395     # PBXT was only introduced after 5.1.12
396     pbxt_patch_available() {
397 jmbsvicetto 1.25 [[ ${PN} != "mariadb" && ${PN} != "mariadb-galera" && ( -n "${PBXT_VERSION}" ) ]]
398 robbat2 1.1 return $?
399     }
400    
401     pbxt_available() {
402 jmbsvicetto 1.27 pbxt_patch_available || [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]] && mysql_check_version_range "5.1 to 5.5.32"
403 robbat2 1.1 return $?
404     }
405    
406     # Get the percona tarball if XTRADB_VER and PERCONA_VER are both set
407     # MariaDB has integrated XtraDB
408     # XTRADB_VERS means that we have a XTRADB patch for this PV
409     # XTRADB was only introduced after 5.1.26
410     xtradb_patch_available() {
411 jmbsvicetto 1.25 [[ ${PN} != "mariadb" && ${PN} != "mariadb-galera"
412     && ( -n "${XTRADB_VER}" ) && ( -n "${PERCONA_VER}" ) ]]
413 robbat2 1.1 return $?
414     }
415    
416     if pbxt_patch_available; then
417    
418     PBXT_P="pbxt-${PBXT_VERSION}"
419     PBXT_SRC_URI="http://www.primebase.org/download/${PBXT_P}.tar.gz mirror://sourceforge/pbxt/${PBXT_P}.tar.gz"
420     SRC_URI="${SRC_URI} pbxt? ( ${PBXT_SRC_URI} )"
421 robbat2 1.15 fi
422    
423     # PBXT_NEWSTYLE means pbxt is in storage/ and gets enabled as other plugins
424     # vs. built outside the dir
425     if pbxt_available; then
426 robbat2 1.1
427 robbat2 1.15 IUSE="${IUSE} pbxt"
428     PBXT_NEWSTYLE=1
429 robbat2 1.23 REQUIRED_USE="${REQUIRED_USE} pbxt? ( !embedded ) "
430 robbat2 1.1 fi
431    
432     if xtradb_patch_available; then
433     XTRADB_P="percona-xtradb-${XTRADB_VER}"
434     XTRADB_SRC_URI_COMMON="${PERCONA_VER}/source/${XTRADB_P}.tar.gz"
435     XTRADB_SRC_B1="http://www.percona.com/"
436     XTRADB_SRC_B2="${XTRADB_SRC_B1}/percona-builds/"
437     XTRADB_SRC_URI1="${XTRADB_SRC_B2}/Percona-Server/Percona-Server-${XTRADB_SRC_URI_COMMON}"
438     XTRADB_SRC_URI2="${XTRADB_SRC_B2}/xtradb/${XTRADB_SRC_URI_COMMON}"
439     XTRADB_SRC_URI3="${XTRADB_SRC_B1}/${PN}/xtradb/${XTRADB_SRC_URI_COMMON}"
440     SRC_URI="${SRC_URI} xtradb? ( ${XTRADB_SRC_URI1} ${XTRADB_SRC_URI2} ${XTRADB_SRC_URI3} )"
441     IUSE="${IUSE} xtradb"
442 robbat2 1.23 REQUIRED_USE="${REQUIRED_USE} xtradb? ( !embedded ) "
443 robbat2 1.1 fi
444    
445     #
446     # HELPER FUNCTIONS:
447     #
448    
449     # @FUNCTION: mysql-v2_disable_test
450     # @DESCRIPTION:
451     # Helper function to disable specific tests.
452     mysql-v2_disable_test() {
453     ${BUILD_INHERIT}_disable_test "$@"
454     }
455    
456     # @FUNCTION: mysql-v2_configure_minimal
457     # @DESCRIPTION:
458     # Helper function to configure minimal build
459     configure_minimal() {
460     ${BUILD_INHERIT}_configure_minimal "$@"
461     }
462    
463     # @FUNCTION: mysql-v2_configure_common
464     # @DESCRIPTION:
465     # Helper function to configure common builds
466     configure_common() {
467     ${BUILD_INHERIT}_configure_common "$@"
468     }
469    
470     #
471     # EBUILD FUNCTIONS
472     #
473    
474     # @FUNCTION: mysql-v2_pkg_setup
475     # @DESCRIPTION:
476     # Perform some basic tests and tasks during pkg_setup phase:
477 jmbsvicetto 1.27 # die if FEATURES="test", USE="-minimal" and not using FEATURES="userpriv"
478     # check for conflicting use flags
479     # create new user and group for mysql
480     # warn about deprecated features
481 robbat2 1.1 mysql-v2_pkg_setup() {
482    
483     if has test ${FEATURES} ; then
484     if ! use minimal ; then
485 jmbsvicetto 1.12 if ! has userpriv ${FEATURES} ; then
486 robbat2 1.1 eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
487     fi
488     fi
489     fi
490    
491     # Check for USE flag problems in pkg_setup
492 jmbsvicetto 1.25 if ! mysql_version_is_at_least "5.2" && use debug ; then
493 robbat2 1.1 # Also in package.use.mask
494     die "Bug #344885: Upstream has broken USE=debug for 5.1 series >=5.1.51"
495     fi
496    
497     # This should come after all of the die statements
498     enewgroup mysql 60 || die "problem adding 'mysql' group"
499     enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
500    
501 jmbsvicetto 1.27 if use cluster && [[ "${PN}" != "mysql-cluster" ]]; then
502 robbat2 1.1 ewarn "Upstream has noted that the NDB cluster support in the 5.0 and"
503     ewarn "5.1 series should NOT be put into production. In the near"
504     ewarn "future, it will be disabled from building."
505     fi
506 jmbsvicetto 1.27
507     if [[ ${PN} == "mysql-cluster" ]] ; then
508     mysql_version_is_at_least "7.2.9" && java-pkg-opt-2_pkg_setup
509     fi
510    
511 jmbsvicetto 1.28 if use_if_iuse tokudb && [[ $(gcc-major-version) -lt 4 || $(gcc-major-version) -eq 4 && $(gcc-minor-version) -lt 7 ]] ; then
512 jmbsvicetto 1.27 eerror "${PN} with tokudb needs to be built with gcc-4.7 or later."
513     eerror "Please use gcc-config to switch to gcc-4.7 or later version."
514     die
515     fi
516    
517 robbat2 1.1 }
518    
519     # @FUNCTION: mysql-v2_src_unpack
520     # @DESCRIPTION:
521     # Unpack the source code
522     mysql-v2_src_unpack() {
523    
524     # Initialize the proper variables first
525     mysql_init_vars
526    
527     unpack ${A}
528     # Grab the patches
529 robbat2 1.34 [[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR}/mysql-extras" git-r3_src_unpack
530 robbat2 1.1
531     mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
532     }
533    
534     # @FUNCTION: mysql-v2_src_prepare
535     # @DESCRIPTION:
536     # Apply patches to the source code and remove unneeded bundled libs.
537     mysql-v2_src_prepare() {
538     ${BUILD_INHERIT}_src_prepare "$@"
539 jmbsvicetto 1.27 if [[ ${PN} == "mysql-cluster" ]] ; then
540     mysql_version_is_at_least "7.2.9" && java-pkg-opt-2_src_prepare
541     fi
542 robbat2 1.1 }
543    
544     # @FUNCTION: mysql-v2_src_configure
545     # @DESCRIPTION:
546     # Configure mysql to build the code for Gentoo respecting the use flags.
547     mysql-v2_src_configure() {
548     ${BUILD_INHERIT}_src_configure "$@"
549     }
550    
551     # @FUNCTION: mysql-v2_src_compile
552     # @DESCRIPTION:
553     # Compile the mysql code.
554     mysql-v2_src_compile() {
555     ${BUILD_INHERIT}_src_compile "$@"
556     }
557    
558     # @FUNCTION: mysql-v2_src_install
559     # @DESCRIPTION:
560     # Install mysql.
561     mysql-v2_src_install() {
562     ${BUILD_INHERIT}_src_install "$@"
563     }
564    
565     # @FUNCTION: mysql-v2_pkg_preinst
566     # @DESCRIPTION:
567     # Create the user and groups for mysql - die if that fails.
568     mysql-v2_pkg_preinst() {
569 jmbsvicetto 1.27 if [[ ${PN} == "mysql-cluster" ]] ; then
570     mysql_version_is_at_least "7.2.9" && java-pkg-opt-2_pkg_preinst
571     fi
572 robbat2 1.1 enewgroup mysql 60 || die "problem adding 'mysql' group"
573     enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
574     }
575    
576     # @FUNCTION: mysql-v2_pkg_postinst
577     # @DESCRIPTION:
578     # Run post-installation tasks:
579 jmbsvicetto 1.27 # create the dir for logfiles if non-existant
580     # touch the logfiles and secure them
581     # install scripts
582     # issue required steps for optional features
583     # issue deprecation warnings
584 robbat2 1.1 mysql-v2_pkg_postinst() {
585    
586     # Make sure the vars are correctly initialized
587     mysql_init_vars
588    
589     # Check FEATURES="collision-protect" before removing this
590 jmbsvicetto 1.12 [[ -d "${ROOT}${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
591 robbat2 1.1
592     # Secure the logfiles
593     touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
594     chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
595     chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
596    
597     # Minimal builds don't have the MySQL server
598     if ! use minimal ; then
599     docinto "support-files"
600     for script in \
601     support-files/my-*.cnf \
602     support-files/magic \
603     support-files/ndb-config-2-node.ini
604     do
605     [[ -f "${script}" ]] \
606     && dodoc "${script}"
607     done
608    
609     docinto "scripts"
610     for script in scripts/mysql* ; do
611 jmbsvicetto 1.25 if [[ -f "${script}" && "${script%.sh}" == "${script}" ]]; then
612     dodoc "${script}"
613     fi
614 robbat2 1.1 done
615    
616 jmbsvicetto 1.27 if [[ ${PN} == "mariadb" || ${PN} == "mariadb-galera" ]] ; then
617     if use_if_iuse pam ; then
618     einfo
619     elog "This install includes the PAM authentication plugin."
620     elog "To activate and configure the PAM plugin, please read:"
621     elog "https://kb.askmonty.org/en/pam-authentication-plugin/"
622     einfo
623     fi
624 robbat2 1.24 fi
625    
626 robbat2 1.1 einfo
627     elog "You might want to run:"
628     elog "\"emerge --config =${CATEGORY}/${PF}\""
629     elog "if this is a new install."
630     einfo
631    
632     einfo
633     elog "If you are upgrading major versions, you should run the"
634     elog "mysql_upgrade tool."
635     einfo
636 jmbsvicetto 1.27
637     if [[ ${PN} == "mariadb-galera" ]] ; then
638     einfo
639     elog "Be sure to edit the my.cnf file to activate your cluster settings."
640     elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\""
641     elog "The first time the cluster is activated, you should add"
642     elog "--wsrep-new-cluster to the options in /etc/conf.d/mysql for one node."
643     elog "This option should then be removed for subsequent starts."
644     einfo
645     fi
646 robbat2 1.1 fi
647    
648 jmbsvicetto 1.27 if use_if_iuse pbxt ; then
649 robbat2 1.21 elog "Note: PBXT is now statically built when enabled."
650     elog ""
651     elog "If, you previously installed as a plugin and "
652     elog "you cannot start the MySQL server,"
653 robbat2 1.1 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
654     elog "use the MySQL upgrade script to restore the table"
655     elog "or execute the following SQL command:"
656 jmbsvicetto 1.27 elog " CREATE TABLE IF NOT EXISTS plugin ("
657     elog " name char(64) binary DEFAULT '' NOT NULL,"
658     elog " dl char(128) DEFAULT '' NOT NULL,"
659     elog " PRIMARY KEY (name)"
660     elog " ) CHARACTER SET utf8 COLLATE utf8_bin;"
661 robbat2 1.1 fi
662     }
663    
664 robbat2 1.20 # @FUNCTION: mysql-v2_getopt
665     # @DESCRIPTION:
666     # Use my_print_defaults to extract specific config options
667     mysql-v2_getopt() {
668     local mypd="${EROOT}"/usr/bin/my_print_defaults
669     section="$1"
670     flag="--${2}="
671     "${mypd}" $section | sed -n "/^${flag}/p"
672     }
673    
674     # @FUNCTION: mysql-v2_getoptval
675     # @DESCRIPTION:
676     # Use my_print_defaults to extract specific config options
677     mysql-v2_getoptval() {
678     local mypd="${EROOT}"/usr/bin/my_print_defaults
679     section="$1"
680     flag="--${2}="
681     "${mypd}" $section | sed -n "/^${flag}/s,${flag},,gp"
682     }
683    
684 robbat2 1.1 # @FUNCTION: mysql-v2_pkg_config
685     # @DESCRIPTION:
686     # Configure mysql environment.
687     mysql-v2_pkg_config() {
688    
689     local old_MY_DATADIR="${MY_DATADIR}"
690 robbat2 1.20 local old_HOME="${HOME}"
691     # my_print_defaults needs to read stuff in $HOME/.my.cnf
692 grobian 1.32 export HOME=${EPREFIX}/root
693 robbat2 1.1
694     # Make sure the vars are correctly initialized
695     mysql_init_vars
696    
697     [[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR"
698    
699     if built_with_use ${CATEGORY}/${PN} minimal ; then
700     die "Minimal builds do NOT include the MySQL server"
701     fi
702    
703     if [[ ( -n "${MY_DATADIR}" ) && ( "${MY_DATADIR}" != "${old_MY_DATADIR}" ) ]]; then
704 ferringb 1.18 local MY_DATADIR_s="${ROOT}/${MY_DATADIR}"
705     MY_DATADIR_s="${MY_DATADIR_s%%/}"
706 robbat2 1.20 local old_MY_DATADIR_s="${ROOT}/${old_MY_DATADIR}"
707 ferringb 1.18 old_MY_DATADIR_s="${old_MY_DATADIR_s%%/}"
708 robbat2 1.1
709 jmbsvicetto 1.25 if [[ ( -d "${old_MY_DATADIR_s}" ) && ( "${old_MY_DATADIR_s}" != / ) ]]; then
710 robbat2 1.1 if [[ -d "${MY_DATADIR_s}" ]]; then
711     ewarn "Both ${old_MY_DATADIR_s} and ${MY_DATADIR_s} exist"
712     ewarn "Attempting to use ${MY_DATADIR_s} and preserving ${old_MY_DATADIR_s}"
713     else
714     elog "Moving MY_DATADIR from ${old_MY_DATADIR_s} to ${MY_DATADIR_s}"
715     mv --strip-trailing-slashes -T "${old_MY_DATADIR_s}" "${MY_DATADIR_s}" \
716     || die "Moving MY_DATADIR failed"
717     fi
718     else
719     ewarn "Previous MY_DATADIR (${old_MY_DATADIR_s}) does not exist"
720     if [[ -d "${MY_DATADIR_s}" ]]; then
721     ewarn "Attempting to use ${MY_DATADIR_s}"
722     else
723     eerror "New MY_DATADIR (${MY_DATADIR_s}) does not exist"
724 jmbsvicetto 1.27 die "Configuration Failed! Please reinstall ${CATEGORY}/${PN}"
725 robbat2 1.1 fi
726     fi
727     fi
728    
729     local pwd1="a"
730     local pwd2="b"
731     local maxtry=15
732    
733 robbat2 1.20 if [ -z "${MYSQL_ROOT_PASSWORD}" ]; then
734     MYSQL_ROOT_PASSWORD="$(mysql-v2_getoptval 'client mysql' password)"
735     fi
736     MYSQL_TMPDIR="$(mysql-v2_getoptval mysqld tmpdir)"
737     # These are dir+prefix
738     MYSQL_RELAY_LOG="$(mysql-v2_getoptval mysqld relay-log)"
739     MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*}
740     MYSQL_LOG_BIN="$(mysql-v2_getoptval mysqld log-bin)"
741     MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*}
742    
743 grobian 1.32 if [[ ! -d "${ROOT}"/$MYSQL_TMPDIR ]]; then
744 robbat2 1.20 einfo "Creating MySQL tmpdir $MYSQL_TMPDIR"
745 grobian 1.32 install -d -m 770 -o mysql -g mysql "${ROOT}"/$MYSQL_TMPDIR
746 robbat2 1.20 fi
747 grobian 1.32 if [[ ! -d "${ROOT}"/$MYSQL_LOG_BIN ]]; then
748 robbat2 1.20 einfo "Creating MySQL log-bin directory $MYSQL_LOG_BIN"
749 grobian 1.32 install -d -m 770 -o mysql -g mysql "${ROOT}"/$MYSQL_LOG_BIN
750 robbat2 1.20 fi
751     if [[ ! -d "${EROOT}"/$MYSQL_RELAY_LOG ]]; then
752     einfo "Creating MySQL relay-log directory $MYSQL_RELAY_LOG"
753     install -d -m 770 -o mysql -g mysql "${EROOT}"/$MYSQL_RELAY_LOG
754 robbat2 1.1 fi
755    
756     if [[ -d "${ROOT}/${MY_DATADIR}/mysql" ]] ; then
757     ewarn "You have already a MySQL database in place."
758     ewarn "(${ROOT}/${MY_DATADIR}/*)"
759     ewarn "Please rename or delete it if you wish to replace it."
760     die "MySQL database already exists!"
761     fi
762    
763     # Bug #213475 - MySQL _will_ object strenously if your machine is named
764     # localhost. Also causes weird failures.
765     [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
766    
767     if [ -z "${MYSQL_ROOT_PASSWORD}" ]; then
768    
769     einfo "Please provide a password for the mysql 'root' user now, in the"
770 grobian 1.32 einfo "MYSQL_ROOT_PASSWORD env var or through the ${HOME}/.my.cnf file."
771 robbat2 1.1 ewarn "Avoid [\"'\\_%] characters in the password"
772     read -rsp " >" pwd1 ; echo
773    
774     einfo "Retype the password"
775     read -rsp " >" pwd2 ; echo
776    
777     if [[ "x$pwd1" != "x$pwd2" ]] ; then
778     die "Passwords are not the same"
779     fi
780     MYSQL_ROOT_PASSWORD="${pwd1}"
781     unset pwd1 pwd2
782     fi
783    
784 grobian 1.32 local options
785 robbat2 1.1 local sqltmp="$(emktemp)"
786    
787 grobian 1.32 # Fix bug 446200. Don't reference host my.cnf, needs to come first,
788     # see http://bugs.mysql.com/bug.php?id=31312
789     use prefix && options="${options} --defaults-file=${MY_SYSCONFDIR}/my.cnf"
790    
791 robbat2 1.1 local help_tables="${ROOT}${MY_SHAREDSTATEDIR}/fill_help_tables.sql"
792     [[ -r "${help_tables}" ]] \
793     && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
794     || touch "${TMPDIR}/fill_help_tables.sql"
795     help_tables="${TMPDIR}/fill_help_tables.sql"
796 jmbsvicetto 1.25
797 robbat2 1.20 # Figure out which options we need to disable to do the setup
798     helpfile="${TMPDIR}/mysqld-help"
799     ${EROOT}/usr/sbin/mysqld --verbose --help >"${helpfile}" 2>/dev/null
800 jmbsvicetto 1.25 for opt in grant-tables host-cache name-resolve networking slave-start \
801 grknight 1.29 federated ssl log-bin relay-log slow-query-log external-locking \
802 robbat2 1.20 ndbcluster log-slave-updates \
803     ; do
804     optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}"
805     egrep -sq -- "${optexp}" "${helpfile}" && options="${options} ${optfull}"
806     done
807     # But some options changed names
808     egrep -sq external-locking "${helpfile}" && \
809     options="${options/skip-locking/skip-external-locking}"
810    
811     use prefix || options="${options} --user=mysql"
812 robbat2 1.1
813 grknight 1.29 # MySQL 5.6+ needs InnoDB
814     if [[ ${PN} == "mysql" || ${PN} == "percona-server" ]] ; then
815     mysql_version_is_at_least "5.6" || options="${options} --loose-skip-innodb"
816     fi
817    
818     einfo "Creating the mysql database and setting proper"
819     einfo "permissions on it ..."
820    
821     # Now that /var/run is a tmpfs mount point, we need to ensure it exists before using it
822     PID_DIR="${EROOT}/var/run/mysqld"
823     if [[ ! -d "${PID_DIR}" ]]; then
824     mkdir -p "${PID_DIR}" || die "Could not create pid directory"
825     chown mysql:mysql "${PID_DIR}" || die "Could not set ownership on pid directory"
826     chmod 755 "${PID_DIR}" || die "Could not set permissions on pid directory"
827     fi
828    
829 robbat2 1.1 pushd "${TMPDIR}" &>/dev/null
830 robbat2 1.20 #cmd="'${EROOT}/usr/share/mysql/scripts/mysql_install_db' '--basedir=${EPREFIX}/usr' ${options}"
831     cmd=${EROOT}usr/share/mysql/scripts/mysql_install_db
832 jmbsvicetto 1.25 [[ -f ${cmd} ]] || cmd=${EROOT}usr/bin/mysql_install_db
833 grobian 1.32 cmd="'$cmd' '--basedir=${EPREFIX}/usr' ${options} '--datadir=${ROOT}/${MY_DATADIR}' '--tmpdir=${ROOT}/${MYSQL_TMPDIR}'"
834 robbat2 1.20 einfo "Command: $cmd"
835     eval $cmd \
836     >"${TMPDIR}"/mysql_install_db.log 2>&1
837 robbat2 1.1 if [ $? -ne 0 ]; then
838     grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2
839 jmbsvicetto 1.12 die "Failed to run mysql_install_db. Please review ${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log"
840 robbat2 1.1 fi
841     popd &>/dev/null
842     [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \
843     || die "MySQL databases not installed"
844     chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2>/dev/null
845     chmod 0750 "${ROOT}/${MY_DATADIR}" 2>/dev/null
846    
847     # Filling timezones, see
848     # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
849 jmbsvicetto 1.12 "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null
850 robbat2 1.1
851     if [[ -r "${help_tables}" ]] ; then
852     cat "${help_tables}" >> "${sqltmp}"
853     fi
854    
855 jmbsvicetto 1.12 local socket="${EROOT}/var/run/mysqld/mysqld${RANDOM}.sock"
856     local pidfile="${EROOT}/var/run/mysqld/mysqld${RANDOM}.pid"
857     local mysqld="${EROOT}/usr/sbin/mysqld \
858 robbat2 1.1 ${options} \
859 grobian 1.32 $(use prefix || echo --user=mysql) \
860 robbat2 1.20 --log-warnings=0 \
861 jmbsvicetto 1.12 --basedir=${EROOT}/usr \
862 grobian 1.32 --datadir=${ROOT}/${MY_DATADIR} \
863 robbat2 1.1 --max_allowed_packet=8M \
864     --net_buffer_length=16K \
865     --default-storage-engine=MyISAM \
866     --socket=${socket} \
867 grknight 1.30 --pid-file=${pidfile}
868 grobian 1.32 --tmpdir=${ROOT}/${MYSQL_TMPDIR}"
869 robbat2 1.1 #einfo "About to start mysqld: ${mysqld}"
870     ebegin "Starting mysqld"
871 robbat2 1.20 einfo "Command ${mysqld}"
872 robbat2 1.1 ${mysqld} &
873     rc=$?
874     while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
875     maxtry=$((${maxtry}-1))
876     echo -n "."
877     sleep 1
878     done
879     eend $rc
880    
881     if ! [[ -S "${socket}" ]]; then
882     die "Completely failed to start up mysqld with: ${mysqld}"
883     fi
884    
885     ebegin "Setting root password"
886     # Do this from memory, as we don't want clear text passwords in temp files
887     local sql="UPDATE mysql.user SET Password = PASSWORD('${MYSQL_ROOT_PASSWORD}') WHERE USER='root'"
888 jmbsvicetto 1.12 "${EROOT}/usr/bin/mysql" \
889 robbat2 1.1 --socket=${socket} \
890     -hlocalhost \
891     -e "${sql}"
892     eend $?
893    
894     ebegin "Loading \"zoneinfo\", this step may require a few seconds ..."
895 jmbsvicetto 1.12 "${EROOT}/usr/bin/mysql" \
896 robbat2 1.1 --socket=${socket} \
897     -hlocalhost \
898     -uroot \
899 robbat2 1.20 --password="${MYSQL_ROOT_PASSWORD}" \
900 robbat2 1.1 mysql < "${sqltmp}"
901     rc=$?
902     eend $?
903 jmbsvicetto 1.25 [[ $rc -ne 0 ]] && ewarn "Failed to load zoneinfo!"
904 robbat2 1.1
905     # Stop the server and cleanup
906     einfo "Stopping the server ..."
907     kill $(< "${pidfile}" )
908     rm -f "${sqltmp}"
909     wait %1
910     einfo "Done"
911     }
912    
913     # @FUNCTION: mysql-v2_pkg_postrm
914     # @DESCRIPTION:
915     # Remove mysql symlinks.
916     mysql-v2_pkg_postrm() {
917    
918 jmbsvicetto 1.12 : # mysql_lib_symlinks "${ED}"
919 robbat2 1.1 }

  ViewVC Help
Powered by ViewVC 1.1.20