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

Diff of /eclass/mysql.eclass

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

Revision 1.54 Revision 1.58
1# Copyright 1999-2006 Gentoo Foundation 1# Copyright 1999-2006 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.54 2007/01/03 13:42:05 vivo Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.58 2007/01/04 20:38:16 vivo Exp $
4# kate: encoding utf-8; eol unix; 4# kate: encoding utf-8; eol unix;
5# kate: indent-width 4; mixedindent off; remove-trailing-space on; space-indent off; 5# kate: indent-width 4; mixedindent off; remove-trailing-space on; space-indent off;
6# kate: word-wrap-column 80; word-wrap off; 6# kate: word-wrap-column 80; word-wrap off;
7 7
8# Author: Francesco Riosa (Retired) <vivo@gentoo.org> 8# Author: Francesco Riosa (Retired) <vivo@gentoo.org>
10 10
11# Note that MYSQL_VERSION_ID must be empty !!! 11# Note that MYSQL_VERSION_ID must be empty !!!
12 12
13ECLASS="mysql" 13ECLASS="mysql"
14INHERITED="$INHERITED $ECLASS" 14INHERITED="$INHERITED $ECLASS"
15inherit eutils flag-o-matic gnuconfig autotools mysql_fx
15 16
16# avoid running userspace code 8 times per ebuild :( 17# avoid running userspace code 8 times per ebuild :(
17if [[ "${_MYPVR}" != "${PVR}" ]] || [[ -z "${MYSQL_VERSION_ID}" ]] 18if [[ "${_MYPVR}" != "${PVR}" ]] && [[ -n "${PVR}" ]]
18then 19then
19 _MYPVR=${PVR} 20 _MYPVR=${PVR}
21
22 [[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20070104"
23
24 if [[ ${PR#r} -lt 60 ]] ; then
25 IS_BITKEEPER=0
26 elif [[ ${PR#r} -lt 90 ]] ; then
27 IS_BITKEEPER=60
28 else
29 IS_BITKEEPER=90
30 fi
20 31
21 # MYSQL_VERSION_ID will be: 32 # MYSQL_VERSION_ID will be:
22 # major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99] 33 # major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99]
23 # This is an important part, because many of the choices the MySQL ebuild will do 34 # This is an important part, because many of the choices the MySQL ebuild will do
24 # depend on this variable. 35 # depend on this variable.
25 # In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803" 36 # In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803"
26 if [[ -z "${MYSQL_VERSION_ID}" ]] ; then 37 MYSQL_VERSION_ID=""
27 tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}" 38 tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
28 for vatom in 0 1 2 3 ; do 39 for vatom in 0 1 2 3 ; do
29 # pad to length 2 40 # pad to length 2
30 tpv[${vatom}]="00${tpv[${vatom}]}" 41 tpv[${vatom}]="00${tpv[${vatom}]}"
31 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}" 42 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
32 done 43 done
33 # strip leading "0" (otherwise it's considered an octal number by BASH) 44 # strip leading "0" (otherwise it's considered an octal number by BASH)
34 MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"} 45 MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
35 fi
36
37 inherit eutils flag-o-matic gnuconfig autotools mysql_fx
38 46
39 # Be warned, *DEPEND are version-dependant 47 # Be warned, *DEPEND are version-dependant
40 DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d ) 48 DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d )
41 userland_GNU? ( sys-process/procps ) 49 userland_GNU? ( sys-process/procps )
42 >=sys-apps/sed-4 50 >=sys-apps/sed-4
43 >=sys-apps/texinfo-4.7-r1 51 >=sys-apps/texinfo-4.7-r1
44 >=sys-libs/readline-4.1 52 >=sys-libs/readline-4.1
45 >=sys-libs/zlib-1.2.3" 53 >=sys-libs/zlib-1.2.3
54 "
46 55
47 # LEAVE THE SURROUNDING SPACES THERE 56 # having different flavours at the same time is not a good idea
48 MYSQL_MUTUALLY_EXCLUSIVE=" !dev-db/mysql !dev-db/mysql-community " 57 for i in "" "-community" "-slotted" ; do
49 DEPEND="${DEPEND} ${MYSQL_MUTUALLY_EXCLUSIVE/ !${CATEGORY}\/${PN} /}" 58 [[ "${i}" == ${PN#mysql} ]] ||
59 DEPEND="${DEPEND} !dev-db/mysql${i}"
60 done
50 61
51 mysql_version_is_at_least "5.01.00.00" \ 62 mysql_version_is_at_least "5.1" \
52 || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )" 63 || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
53
54 RDEPEND="${DEPEND} selinux? ( sec-policy/selinux-mysql )"
55 64
56 # dev-perl/DBD-mysql is needed by some scripts installed by MySQL 65 # dev-perl/DBD-mysql is needed by some scripts installed by MySQL
57 PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" 66 PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
58 67
68 if mysql_version_is_at_least "5.1.12" ; then
69 DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )"
70 fi
71
59 # Shorten the path because the socket path length must be shorter than 107 chars 72 # Shorten the path because the socket path length must be shorter than 107 chars
60 # and we will run a mysql server during test phase 73 # and we will run a mysql server during test phase
61 S="${WORKDIR}/mysql" # BitKeeper ebuilds 74 S="${WORKDIR}/mysql"
62 75
63 # Define $MY_FIXED_PV for MySQL patchsets 76 # BitKeeper dependency, compile-time only
64 MY_FIXED_PV="${PV/_alpha/}" 77 [[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client"
65 #MY_FIXED_PV="${MY_FIXED_PV/_beta/}"
66 #MY_FIXED_PV="${MY_FIXED_PV/_rc/}"
67 78
68 MY_P="${P/_/-}" 79 if [[ ${PN} == "mysql-slotted" ]] ; then
69 MY_P="${MY_P/-alpha/-bk-}" # BitKeeper ebuilds 80 DEPEND="${DEPEND} app-admin/eselect-mysql"
70 MY_P="${MY_P/-community/}" 81 fi
82
83 if [[ ${PN} == "mysql-slotted" ]] ; then
84 SLOT=""
85 tpv=( ${PV//[-._]/ } )
86 for vatom in 0 1 2 ; do
87 SLOT="${SLOT}${tpv[${vatom}]}_"
88 done
89 #finally SLOT=5_0_24
90 SLOT=${SLOT:0:${#SLOT}-1}
91 else
92 SLOT="0"
93 fi
71 94
72 # Define correct SRC_URIs 95 # Define correct SRC_URIs
73 SRC_URI="${BASE_URI}/${MY_P}${MYSQL_RERELEASE}.tar.gz" 96 SRC_URI="
74 if [[ -n "${MYSQL_PATCHSET_REV}" ]] ; then 97 ${SERVER_URI}
75 MYSQL_PATCHSET_FILENAME="${PN}-patchset-${MY_FIXED_PV}-r${MYSQL_PATCHSET_REV}.tar.bz2" 98 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
76 # We add the Gentoo mirror here, as we only use primaryuri for the MySQL tarball 99 "
77 SRC_URI="${SRC_URI} http://g3nt8.org/patches/${MYSQL_PATCHSET_FILENAME}" 100 mysql_version_is_at_least "5.1.12" \
78 fi 101 && [[ -n "${PBXT_VERSION}" ]] \
102 && SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )"
79 103
80 DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 104 DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
81 HOMEPAGE="http://www.mysql.com/" 105 HOMEPAGE="http://www.mysql.com/"
82 SLOT="0"
83 LICENSE="GPL-2" 106 LICENSE="GPL-2"
84 IUSE="big-tables debug embedded minimal perl selinux srvdir ssl static" 107 IUSE="big-tables debug embedded minimal perl selinux ssl static"
85 RESTRICT="confcache" 108 RESTRICT="confcache"
86 109
87 mysql_version_is_at_least "4.01.00.00" \ 110 mysql_version_is_at_least "4.1" \
88 && IUSE="${IUSE} latin1" 111 && IUSE="${IUSE} latin1"
89 112
90 mysql_version_is_at_least "4.01.03.00" \ 113 mysql_version_is_at_least "4.1.3" \
91 && IUSE="${IUSE} cluster extraengine" 114 && IUSE="${IUSE} cluster extraengine"
92 115
93 mysql_version_is_at_least "5.00.00.00" \ 116 mysql_version_is_at_least "5.0" \
94 || IUSE="${IUSE} raid" 117 || IUSE="${IUSE} raid"
95 118
96 mysql_version_is_at_least "5.00.18.00" \ 119 mysql_version_is_at_least "5.0.18" \
97 && IUSE="${IUSE} max-idx-128" 120 && IUSE="${IUSE} max-idx-128"
98 121
99 mysql_version_is_at_least "5.01.00.00" \ 122 mysql_version_is_at_least "5.1" \
100 && IUSE="${IUSE} innodb" 123 && IUSE="${IUSE} innodb"
101 124
102 mysql_version_is_at_least "5.01.00.00" \ 125 mysql_version_is_at_least "5.1" \
103 || IUSE="${IUSE} berkdb" 126 || IUSE="${IUSE} berkdb"
127
128 mysql_version_is_at_least "5.1.12" \
129 && IUSE="${IUSE} pbxt"
130
131 RDEPEND="${DEPEND}
132 sys-apps/mysql
133 selinux? ( sec-policy/selinux-mysql )
134 "
135
104fi # if [[ "${_MYPVR}" != "${PVR}" ]] 136fi # if [[ "${_MYPVR}" != "${PVR}" ]]
105 137
106EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ 138EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
107 pkg_postinst pkg_config pkg_postrm 139 pkg_postinst pkg_config pkg_postrm
108 140
110# HELPER FUNCTIONS: 142# HELPER FUNCTIONS:
111# 143#
112 144
113bitkeeper_fetch() { 145bitkeeper_fetch() {
114 146
147 local reposuf
148 if [[ -z "${1}" ]] ; then
149 local tpv
115 local tpv=( ${PV//[-._]/ } ) 150 tpv=( ${PV//[-._]/ } )
116 local reposuf="${tpv[0]}.${tpv[1]}" 151 reposuf="mysql-${tpv[0]}.${tpv[1]}"
117 useq "cluster" && reposuf="${reposuf}-ndb" 152 else
153 reposuf="${1}"
154 fi
155 einfo "using \"${reposuf}\" repository."
118 local repo_uri="bk://mysql.bkbits.net/mysql-${reposuf}" 156 local repo_uri="bk://mysql.bkbits.net/${reposuf}"
119 ## -- ebk_store_dir: bitkeeper sources store directory 157 ## -- ebk_store_dir: bitkeeper sources store directory
120 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src" 158 local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src"
121 ## -- ebk_fetch_cmd: bitkeeper fetch command 159 ## -- ebk_fetch_cmd: bitkeeper fetch command
122 # always fetch the latest revision, use -r<revision> if a specified revision is wanted 160 # always fetch the latest revision, use -r<revision> if a specified revision is wanted
123 # hint: does not work 161 # hint: does not work
133 mkdir -p "${ebk_store_dir}" || die "${EBK}: can't mkdir ${ebk_store_dir}." 171 mkdir -p "${ebk_store_dir}" || die "${EBK}: can't mkdir ${ebk_store_dir}."
134 fi 172 fi
135 173
136 pushd "${ebk_store_dir}" || die "${EBK}: can't chdir to ${ebk_store_dir}" 174 pushd "${ebk_store_dir}" || die "${EBK}: can't chdir to ${ebk_store_dir}"
137 175
138 local wc_path=mysql-${reposuf} 176 local wc_path=${reposuf}
139 177
140 if [[ ! -d "${wc_path}" ]]; then 178 if [[ ! -d "${wc_path}" ]]; then
141 local options="-r+" 179 local options="-r+"
142 # first check out 180 # first check out
143 einfo "bitkeeper check out start -->" 181 einfo "bitkeeper check out start -->"
154 einfo "bitkeeper update start -->" 192 einfo "bitkeeper update start -->"
155 einfo " repository: ${repo_uri}" 193 einfo " repository: ${repo_uri}"
156 194
157 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \ 195 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \
158 || die "BK: can't update from ${repo_uri} to ${wc_path}." 196 || die "BK: can't update from ${repo_uri} to ${wc_path}."
159
160 fi 197 fi
161 198
162 einfo " working copy: ${wc_path}" 199 einfo " working copy: ${wc_path}"
163 cd "${wc_path}" 200 cd "${wc_path}"
164 rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: can't export to ${S}." 201 rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: can't export to ${S}."
180# 217#
181# Initialize global variables 218# Initialize global variables
182# 2005-11-19 <vivo@gentoo.org> 219# 2005-11-19 <vivo@gentoo.org>
183 220
184mysql_init_vars() { 221mysql_init_vars() {
222 if [[ ${SLOT} == "0" ]] ; then
223 MY_SUFFIX=""
224 else
225 MY_SUFFIX=${MY_SUFFIX:-"-${SLOT}"}
226 fi
185 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"} 227 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql${MY_SUFFIX}"}
186 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"} 228 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql${MY_SUFFIX}"}
187 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"} 229 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql${MY_SUFFIX}"}
188 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"} 230 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql${MY_SUFFIX}"}
189 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"} 231 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql${MY_SUFFIX}"}
190 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"} 232 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql${MY_SUFFIX}"}
191 233
192 if [[ -z "${DATADIR}" ]] ; then 234 if [[ -z "${DATADIR}" ]] ; then
193 DATADIR="" 235 DATADIR=""
194 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then 236 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
195 DATADIR=`"my_print_defaults" mysqld 2>/dev/null \ 237 DATADIR=`"my_print_defaults${MY_SUFFIX}" mysqld 2>/dev/null \
196 | sed -ne '/datadir/s|^--datadir=||p' \ 238 | sed -ne '/datadir/s|^--datadir=||p' \
197 | tail -n1` 239 | tail -n1`
198 if [[ -z "${DATADIR}" ]] ; then 240 if [[ -z "${DATADIR}" ]] ; then
199 if useq "srvdir" ; then
200 DATADIR="${ROOT}/srv/localhost/mysql/datadir"
201 else
202 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ 241 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
203 | sed -e 's/.*=\s*//'` 242 | sed -e 's/.*=\s*//'`
204 fi
205 fi 243 fi
206 fi 244 fi
207 if [[ -z "${DATADIR}" ]] ; then 245 if [[ -z "${DATADIR}" ]] ; then
208 if useq "srvdir" ; then
209 DATADIR="${ROOT}/srv/localhost/mysql/datadir"
210 else
211 DATADIR="${MY_LOCALSTATEDIR}" 246 DATADIR="${MY_LOCALSTATEDIR}"
212 fi
213 einfo "Using default DATADIR" 247 einfo "Using default DATADIR"
214 fi 248 fi
215 elog "MySQL DATADIR is ${DATADIR}" 249 elog "MySQL DATADIR is ${DATADIR}"
216 250
217 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then 251 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
224 fi 258 fi
225 export PREVIOUS_DATADIR 259 export PREVIOUS_DATADIR
226 fi 260 fi
227 fi 261 fi
228 262
263 MY_SOURCEDIR=${SERVER_URI##*/}
264 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
265
229 export MY_SHAREDSTATEDIR MY_SYSCONFDIR 266 export MY_SUFFIX MY_SHAREDSTATEDIR MY_SYSCONFDIR
230 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 267 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
231 export MY_INCLUDEDIR 268 export MY_INCLUDEDIR DATADIR MY_SOURCEDIR
232 export DATADIR
233} 269}
234 270
235configure_minimal() { 271configure_minimal() {
236 # These are things we exclude from a minimal build, please 272 # These are things we exclude from a minimal build, please
237 # note that the server actually does get built and installed, 273 # note that the server actually does get built and installed,
316 # --with-vio is not needed anymore, it's on by default and 352 # --with-vio is not needed anymore, it's on by default and
317 # has been removed from configure 353 # has been removed from configure
318 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio" 354 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio"
319 if mysql_version_is_at_least "5.0.6" ; then 355 if mysql_version_is_at_least "5.0.6" ; then
320 # myconf="${myconf} --with-yassl" 356 # myconf="${myconf} --with-yassl"
321 myconf="${myconf} --with-openssl" 357 myconf="${myconf} --with-ssl"
322 else 358 else
323 myconf="${myconf} --with-openssl" 359 myconf="${myconf} --with-openssl"
324 fi 360 fi
325 else 361 else
326 myconf="${myconf} --without-openssl" 362 myconf="${myconf} --without-openssl"
402 if useq "cluster" ; then 438 if useq "cluster" ; then
403 plugins="${plugins},ndbcluster" 439 plugins="${plugins},ndbcluster"
404 myconf="${myconf} --with-ndb-binlog" 440 myconf="${myconf} --with-ndb-binlog"
405 fi 441 fi
406 442
443 if mysql_version_is_at_least "5.2" ; then
444 plugins="${plugins},falcon"
445 fi
446
407 myconf="${myconf} --with-plugins=${plugins}" 447 myconf="${myconf} --with-plugins=${plugins}"
408} 448}
409 449
410pbxt_src_compile() { 450pbxt_src_compile() {
411 mysql_init_vars 451 mysql_init_vars
472mysql_src_unpack() { 512mysql_src_unpack() {
473 # Initialize the proper variables first 513 # Initialize the proper variables first
474 mysql_init_vars 514 mysql_init_vars
475 515
476 unpack ${A} 516 unpack ${A}
477 517 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then
478 mv -f "${WORKDIR}/${MY_P}${MYSQL_RERELEASE}" "${S}" 518 if mysql_check_version_range "5.1 to 5.1.99" ; then
519 bitkeeper_fetch "mysql-5.1-ndb"
520 elif mysql_check_version_range "5.2.0 to 5.2.99" ; then
521 bitkeeper_fetch "mysql-5.2-falcon"
522 else
523 bitkeeper_fetch
524 fi
479 cd "${S}" 525 cd "${S}"
526 einfo "running upstream autorun on bk sources"
527 BUILD/autorun.sh
528 else
529 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
530 cd "${S}"
531 fi
480 532
481 # Apply the patches for this MySQL version 533 # Apply the patches for this MySQL version
482 if [[ -d "${WORKDIR}/${MY_FIXED_PV}" ]] ; then 534 EPATCH_SUFFIX="patch"
483 EPATCH_SOURCE="${WORKDIR}/${MY_FIXED_PV}" EPATCH_SUFFIX="patch" epatch 535 mkdir -p "${EPATCH_SOURCE}" || die "unable to create epatch directory"
484 fi 536 mysql_mv_patches
537 epatch || die "failed to apply all patches"
485 538
486 # Additional checks, remove bundled zlib 539 # Additional checks, remove bundled zlib
487 rm -f "${S}/zlib/"*.[ch] 540 rm -f "${S}/zlib/"*.[ch]
488 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" 541 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
489 rm -f "scripts/mysqlbug" 542 rm -f "scripts/mysqlbug"
490 543
491 # Make charsets install in the right place 544 # Make charsets install in the right place
492 find . -name 'Makefile.am' \ 545 find . -name 'Makefile.am' \
493 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \; 546 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
494 547
495 # Manage mysqlmanager
496 mysql_version_is_at_least "5.00.15.00" \
497 && sed -i -e "s!@GENTOO_EXT@!!g" \
498 -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" \
499 "${S}/server-tools/instance-manager/Makefile.am"
500
501 if mysql_version_is_at_least "4.01.00.00" ; then 548 if mysql_version_is_at_least "4.1" ; then
502 # Remove what needs to be recreated, so we're sure it's actually done 549 # Remove what needs to be recreated, so we're sure it's actually done
503 find . -name Makefile \ 550 find . -name Makefile \
504 -o -name Makefile.in \ 551 -o -name Makefile.in \
505 -o -name configure \ 552 -o -name configure \
506 -exec rm -f {} \; 553 -exec rm -f {} \;
510 557
511 local rebuilddirlist d 558 local rebuilddirlist d
512 559
513 if mysql_version_is_at_least "5.1.12" ; then 560 if mysql_version_is_at_least "5.1.12" ; then
514 rebuilddirlist="." 561 rebuilddirlist="."
515 # TODO IMPO! Check this with a cmake expert 562 # TODO IMPO! Check this with a cmake expert
516 useq "innodb" \ 563 useq "innodb" \
517 && cmake \ 564 && cmake \
518 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \ 565 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \
519 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \ 566 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \
520 "storage/innobase" 567 "storage/innobase"
569 mysql_version_is_at_least "5.0" \ 616 mysql_version_is_at_least "5.0" \
570 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 617 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
571 export CXXFLAGS 618 export CXXFLAGS
572 619
573 econf \ 620 econf \
621 --program-suffix="${MY_SUFFIX}" \
574 --libexecdir="/usr/sbin" \ 622 --libexecdir="/usr/sbin" \
575 --sysconfdir="${MY_SYSCONFDIR}" \ 623 --sysconfdir="${MY_SYSCONFDIR}" \
576 --localstatedir="${MY_LOCALSTATEDIR}" \ 624 --localstatedir="${MY_LOCALSTATEDIR}" \
577 --sharedstatedir="${MY_SHAREDSTATEDIR}" \ 625 --sharedstatedir="${MY_SHAREDSTATEDIR}" \
578 --libdir="${MY_LIBDIR}" \ 626 --libdir="${MY_LIBDIR}" \
588 find . -type f -name Makefile -print0 \ 636 find . -type f -name Makefile -print0 \
589 | xargs -0 -n100 sed -i \ 637 | xargs -0 -n100 sed -i \
590 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|' 638 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
591 639
592 emake || die "emake failed" 640 emake || die "emake failed"
641
642 mysql_version_is_at_least "5.1.1" && useq "pbxt" && pbxt_src_compile
593} 643}
594 644
595mysql_src_install() { 645mysql_src_install() {
596 # Make sure the vars are correctly initialized 646 # Make sure the vars are correctly initialized
597 mysql_init_vars 647 mysql_init_vars
598 648
599 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed" 649 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die
650
651 mysql_version_is_at_least "5.1.12" && useq "pbxt" && pbxt_src_install
600 652
601 insinto "${MY_INCLUDEDIR}" 653 insinto "${MY_INCLUDEDIR}"
602 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 654 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
603 655
604 # Convenience links 656 # Convenience links
605 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze" 657 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlanalyze${MY_SUFFIX}"
606 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" 658 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlrepair${MY_SUFFIX}"
607 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize" 659 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqloptimize${MY_SUFFIX}"
608 660
609 # Various junk (my-*.cnf moved elsewhere) 661 # Various junk (my-*.cnf moved elsewhere)
610 rm -Rf "${D}/usr/share/info" 662 rm -Rf "${D}/usr/share/info"
611 for removeme in "mysql-log-rotate" mysql.server* \ 663 for removeme in "mysql-log-rotate" mysql.server* \
612 binary-configure* my-*.cnf mi_test_all* 664 binary-configure* my-*.cnf mi_test_all*
613 do 665 do
614 rm -f "${D}"/usr/share/mysql/${removeme} 666 rm -f "${D}"/usr/share/mysql/${removeme}
615 done 667 done
616 668
669 # TODO change at Makefile-am level
670 if [[ ${PN} == "mysql-slotted" ]] ; then
671 for moveme in "mysql_fix_privilege_tables.sql" \
672 "fill_help_tables.sql" "ndb-config-2-node.ini"
673 do
674 mv -f "${D}/usr/share/mysql/${moveme}" "${D}/usr/share/mysql${MY_SUFFIX}/" 2>/dev/null
675 done
676 fi
677
617 # Clean up stuff for a minimal build 678 # clean up stuff for a minimal build
618 if useq "minimal" ; then 679 if useq "minimal" ; then
619 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} 680 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
620 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} 681 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}
621 rm -f "${D}/usr/sbin/mysqld" 682 rm -f "${D}/usr/sbin/mysqld"
622 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a 683 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
623 fi 684 fi
624 685
686 if [[ ${PN} == "mysql-slotted" ]] ; then
687 local notcatched=$(ls "${D}/usr/share/mysql"/*)
688 if [[ -n "${notcatched}" ]] ; then
689 ewarn "QA notice"
690 ewarn "${notcatched} files in /usr/share/mysql"
691 ewarn "bug mysql-herd to manage them"
692 fi
693 rm -Rf "${D}/usr/share/mysql"
694 fi
695
625 # Configuration stuff 696 # Configuration stuff
626 if mysql_version_is_at_least "4.1" ; then 697 if mysql_version_is_at_least "4.1" ; then
627 mysql_mycnf_version="4.1" 698 mysql_mycnf_version="4.1"
628 else 699 else
629 mysql_mycnf_version="4.0" 700 mysql_mycnf_version="4.0"
630 fi 701 fi
631 insinto "${MY_SYSCONFDIR}" 702 insinto "${MY_SYSCONFDIR}"
632 doins "scripts/mysqlaccess.conf" 703 doins scripts/mysqlaccess.conf
704 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \
633 sed -e "s!@DATADIR@!${DATADIR}!g" \ 705 -e "s!@DATADIR@!${DATADIR}!g" \
634 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 706 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
635 > "${TMPDIR}/my.cnf.ok" 707 > "${TMPDIR}/my.cnf.ok"
636 if mysql_version_is_at_least "4.1" && useq "latin1" ; then 708 if mysql_version_is_at_least "4.1" && useq "latin1" ; then
637 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok" 709 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
638 fi 710 fi
639 newins "${TMPDIR}/my.cnf.ok" my.cnf 711 newins "${TMPDIR}/my.cnf.ok" my.cnf
640 712
641 insinto "/etc/conf.d"
642 newins "${FILESDIR}/mysql.conf.d" "mysql"
643 mysql_version_is_at_least "5.00.11.00" \
644 && newins "${FILESDIR}/mysqlmanager.conf.d" "mysqlmanager"
645
646 # Minimal builds don't have the MySQL server 713 # Minimal builds don't have the MySQL server
647 if ! useq "minimal" ; then 714 if ! useq "minimal" ; then
648 exeinto "/etc/init.d"
649 newexe "${FILESDIR}/mysql.rc6" "mysql"
650 mysql_version_is_at_least "5.00.11.00" \
651 && newexe "${FILESDIR}/mysqlmanager.rc6" "mysqlmanager"
652
653 insinto "/etc/logrotate.d"
654 newins "${FILESDIR}/logrotate.mysql" "mysql"
655
656 # Empty directories ... 715 # Empty directories ...
657 diropts "-m0750" 716 diropts "-m0750"
658 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 717 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
659 dodir "${DATADIR}" 718 dodir "${DATADIR}"
660 keepdir "${DATADIR}" 719 keepdir "${DATADIR}"
687 for script in scripts/mysql* ; do 746 for script in scripts/mysql* ; do
688 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 747 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
689 done 748 done
690 fi 749 fi
691 750
692 ROOT="${D}" mysql_lib_symlinks 751 if [[ ${PN} == "mysql-slotted" ]] ; then
752 # MOVED HERE DUE TO BUG #121445
753 # create a list of files, to be used
754 # by external utilities
755 mkdir -p "${D}/var/lib/eselect/mysql/"
756 local filelist="${D}/var/lib/eselect/mysql/mysql${MY_SUFFIX}.filelist"
757 pushd "${D}/" &>/dev/null
758 find usr/bin/ usr/sbin/ \
759 -type f -name "*${MY_SUFFIX}*" \
760 -and -not -name "mysql_config${MY_SUFFIX}" \
761 > "${filelist}"
762 find usr/share/man \
763 -type f -name "*${MY_SUFFIX}*" \
764 | sed -e 's/$/.gz/' \
765 >> "${filelist}"
766 echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}"
767 echo "${MY_LIBDIR#"/"}" >> "${filelist}"
768 echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}"
769 popd &>/dev/null
770 fi
771
772 mysql_lib_symlinks "${D}"
693} 773}
694 774
695mysql_pkg_preinst() { 775mysql_pkg_preinst() {
696 enewgroup mysql 60 || die "problem adding 'mysql' group" 776 enewgroup mysql 60 || die "problem adding 'mysql' group"
697 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" 777 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
708 # Secure the logfiles 788 # Secure the logfiles
709 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 789 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
710 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 790 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
711 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 791 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
712 792
793 # Minimal builds don't have the MySQL server
713 if ! useq "minimal" ; then 794 if ! useq "minimal" ; then
714 # Your friendly public service announcement ... 795 docinto "support-files"
715 einfo 796 for script in \
716 elog "You might want to run:" 797 support-files/my-*.cnf \
717 elog "\"emerge --config =${CATEGORY}/${PF}\"" 798 support-files/magic \
718 elog "if this is a new install." 799 support-files/ndb-config-2-node.ini
719 einfo 800 do
720 mysql_version_is_at_least "5.01.00.00" \ 801 dodoc "${script}"
721 || elog "InnoDB is *not* optional as of MySQL-4.0.24, at the request of upstream." 802 done
803
804 docinto "scripts"
805 for script in scripts/mysql* ; do
806 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
807 done
808 fi
809
810 einfo "you may want to read slotting upgrade documents in the overlay"
811 if useq "pbxt" && mysql_version_is_at_least "5.1" ; then
812 # TODO tell it better ;-)
813 einfo "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
814 einfo "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
815 einfo "if, after that you cannot start the mysql server"
816 einfo "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
817 einfo "use the mysql upgrade script to restore the table"
818 einfo " or "
819 einfo "CREATE TABLE IF NOT EXISTS plugin ("
820 einfo " name char(64) binary DEFAULT '' NOT NULL,"
821 einfo " dl char(128) DEFAULT '' NOT NULL,"
822 einfo " PRIMARY KEY (name)"
823 einfo ") CHARACTER SET utf8 COLLATE utf8_bin;"
722 fi 824 fi
723 mysql_check_version_range "4.0 to 5.0.99.99" \ 825 mysql_check_version_range "4.0 to 5.0.99.99" \
724 && useq "berkdb" \ 826 && useq "berkdb" \
725 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 827 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
726} 828}
834 wait %1 936 wait %1
835 einfo "Done" 937 einfo "Done"
836} 938}
837 939
838mysql_pkg_postrm() { 940mysql_pkg_postrm() {
941 if [[ ${PN} == "mysql-slotted" ]] ; then
839 : #mysql_lib_symlinks 942 mysql_lib_symlinks
943 mysql_clients_link_to_best_version
944 fi
840} 945}

Legend:
Removed from v.1.54  
changed lines
  Added in v.1.58

  ViewVC Help
Powered by ViewVC 1.1.20