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

Diff of /eclass/mysql.eclass

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

Revision 1.5 Revision 1.8
1# Copyright 1999-2005 Gentoo Foundation 1# Copyright 1999-2005 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/Attic/mysql.eclass,v 1.5 2006/01/08 23:29:20 vivo Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/Attic/mysql.eclass,v 1.8 2006/01/24 19:14:00 vivo Exp $
4 4
5# Author: Francesco Riosa <vivo at gentoo.org> 5# Author: Francesco Riosa <vivo at gentoo.org>
6# Maintainer: Francesco Riosa <vivo at gentoo.org> 6# Maintainer: Francesco Riosa <vivo at gentoo.org>
7 7
8inherit eutils flag-o-matic gnuconfig mysql_fx 8inherit eutils flag-o-matic gnuconfig
9 9
10#major, minor only in the slot 10#major, minor only in the slot
11SLOT=$(( ${MYSQL_VERSION_ID} / 10000 )) 11SLOT=$(( ${MYSQL_VERSION_ID} / 10000 ))
12 12
13# shorten the path because the socket path length must be shorter than 107 chars 13# shorten the path because the socket path length must be shorter than 107 chars
14# and we will run a mysql server during test phase 14# and we will run a mysql server during test phase
15S="${WORKDIR}/${PN}" 15S="${WORKDIR}/${PN}"
16 16
17DESCRIPTION="A fast, multi-threaded, multi-user SQL database server" 17DESCRIPTION="A fast, multi-threaded, multi-user SQL database server"
18HOMEPAGE="http://www.mysql.com/" 18HOMEPAGE="http://www.mysql.com/"
19NEWP="${PN}-${PV/_/-}" 19NEWP="${P/_/-}"
20SRC_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/${NEWP}.tar.gz 20SRC_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/${NEWP}.tar.gz
21 mirror://gentoo/mysql-extras-20051220.tar.bz2" 21 mirror://gentoo/mysql-extras-20060115.tar.bz2"
22LICENSE="GPL-2" 22LICENSE="GPL-2"
23IUSE="big-tables berkdb debug minimal perl selinux ssl static" 23IUSE="big-tables berkdb debug minimal perl selinux srvdir ssl static"
24RESTRICT="primaryuri" 24RESTRICT="primaryuri confcache"
25DEPEND="app-admin/eselect-mysql" 25DEPEND="app-admin/eselect-mysql"
26 26
27mysql_version_is_at_least "4.01.03.00" \ 27mysql_version_is_at_least "4.01.03.00" \
28&& IUSE="${IUSE} cluster utf8 extraengine" 28&& IUSE="${IUSE} cluster extraengine"
29 29
30mysql_version_is_at_least "5.00.18.00" \ 30mysql_version_is_at_least "5.00.18.00" \
31&& IUSE="${IUSE} max-idx-128" 31&& IUSE="${IUSE} max-idx-128"
32 32
33mysql_version_is_at_least "5.01.00.00" \ 33mysql_version_is_at_least "5.01.00.00" \
34&& IUSE="${IUSE} innodb" 34&& IUSE="${IUSE} innodb"
35 35
36EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst pkg_postinst pkg_config pkg_postrm 36EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst pkg_postinst pkg_config pkg_postrm
37
38# void mysql_init_vars()
39#
40# initialize global variables
41# 2005-11-19 <vivo at gentoo.org>
42mysql_init_vars() {
43
44 if [[ ${SLOT} -eq 0 ]] ; then
45 MY_SUFFIX=""
46 else
47 MY_SUFFIX=${MY_SUFFIX:-"-${SLOT}"}
48 fi
49 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql${MY_SUFFIX}"}
50 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql${MY_SUFFIX}"}
51 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql${MY_SUFFIX}"}
52 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql${MY_SUFFIX}"}
53 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql${MY_SUFFIX}"}
54 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql${MY_SUFFIX}"}
55
56 if [ -z "${DATADIR}" ]; then
57 DATADIR=""
58 if [ -f "${SYSCONFDIR}/my.cnf" ] ; then
59 DATADIR=`"my_print_defaults${MY_SUFFIX}" mysqld 2>/dev/null | sed -ne '/datadir/s|^--datadir=||p' | tail -n1`
60 if [ -z "${DATADIR}" ]; then
61 if useq "srvdir" ; then
62 DATADIR="/srv/localhost/mysql/datadir"
63 else
64 DATADIR=`grep ^datadir "${SYSCONFDIR}/my.cnf" | sed -e 's/.*=\s*//'`
65 fi
66 fi
67 fi
68 if [ -z "${DATADIR}" ]; then
69 DATADIR="${MY_LOCALSTATEDIR}"
70 einfo "Using default DATADIR"
71 fi
72 einfo "MySQL DATADIR is ${DATADIR}"
73
74 if [ -z "${PREVIOUS_DATADIR}" ] ; then
75 if [ -a "${DATADIR}" ] ; then
76 ewarn "Previous datadir found, it's YOUR job to change"
77 ewarn "ownership and have care of it"
78 PREVIOUS_DATADIR="yes"
79 export PREVIOUS_DATADIR
80 else
81 PREVIOUS_DATADIR="no"
82 export PREVIOUS_DATADIR
83 fi
84 fi
85 fi
86
87 export MY_SUFFIX MY_SHAREDSTATEDIR MY_SYSCONFDIR
88 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
89 export MY_INCLUDEDIR
90 export DATADIR
91}
37 92
38mysql_pkg_setup() { 93mysql_pkg_setup() {
39 94
40 enewgroup mysql 60 || die "problem adding group mysql" 95 enewgroup mysql 60 || die "problem adding group mysql"
41 enewuser mysql 60 -1 /dev/null mysql \ 96 enewuser mysql 60 -1 /dev/null mysql \
118 ${buildstep} || die "failed ${buildstep/ */} dir \"${d}\"" 173 ${buildstep} || die "failed ${buildstep/ */} dir \"${d}\""
119 done 174 done
120 popd &>/dev/null 175 popd &>/dev/null
121 done 176 done
122 177
123 if ! mysql_check_version_range "5.01.00.00 to 5.01.06.99" ; then 178 if useq berkdb && ! mysql_check_version_range "5.01.00.00 to 5.01.06.99"
179 then
124 [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f ltmain.sh "${bdbdir}/ltmain.sh" 180 [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f ltmain.sh "${bdbdir}/ltmain.sh"
125 pushd "${bdbdir}" && sh s_all || die "failed bdb reconfigure" &>/dev/null 181 pushd "${bdbdir}" && sh s_all || die "failed bdb reconfigure" &>/dev/null
126 popd &>/dev/null 182 popd &>/dev/null
127 fi 183 fi
128 184
129} 185}
130 186
131src_compile() { 187mysql_src_compile() {
132 188
133 mysql_init_vars 189 mysql_init_vars
134 local myconf 190 local myconf
135 191
136 if useq static ; then 192 if useq static ; then
189 else 245 else
190 myconf="${myconf} --with-raid" 246 myconf="${myconf} --with-raid"
191 fi 247 fi
192 248
193 if ! mysql_version_is_at_least "5.00.00.00" ; then 249 if ! mysql_version_is_at_least "5.00.00.00" ; then
194 if mysql_version_is_at_least "4.01.00.00" && useq utf8; then 250 if mysql_version_is_at_least "4.01.00.00" ; then
195 myconf="${myconf} --with-charset=utf8" 251 myconf="${myconf} --with-charset=utf8"
196 myconf="${myconf} --with-collation=utf8_general_ci" 252 myconf="${myconf} --with-collation=utf8_general_ci"
197 else 253 else
198 myconf="${myconf} --with-charset=latin1" 254 myconf="${myconf} --with-charset=latin1"
199 myconf="${myconf} --with-collation=latin1_swedish_ci" 255 myconf="${myconf} --with-collation=latin1_swedish_ci"
261 if mysql_version_is_at_least "5.01.00.00" ; then 317 if mysql_version_is_at_least "5.01.00.00" ; then
262 myconf="${myconf} --with-partition" 318 myconf="${myconf} --with-partition"
263 fi 319 fi
264 fi 320 fi
265 321
322 fi
323
266 mysql_version_is_at_least "5.00.18.00" \ 324 mysql_version_is_at_least "5.00.18.00" \
267 && useq "max-idx-128" \ 325 && useq "max-idx-128" \
268 && myconf="${myconf} --with-max-indexes=128" 326 && myconf="${myconf} --with-max-indexes=128"
327
328 if mysql_version_is_at_least "5.01.05.00" ; then
329 myconf="${myconf} --with-row-based-replication"
269 fi 330 fi
270 331
271 #Bug #114895,Bug #110149 332 #Bug #114895,Bug #110149
272 filter-flags "-O" "-O[01]" 333 filter-flags "-O" "-O[01]"
273 #glibc-2.3.2_pre fix; bug #16496 334 #glibc-2.3.2_pre fix; bug #16496
359 fi 420 fi
360 421
361 # config stuff 422 # config stuff
362 insinto "${MY_SYSCONFDIR}" 423 insinto "${MY_SYSCONFDIR}"
363 doins scripts/mysqlaccess.conf 424 doins scripts/mysqlaccess.conf
364 newins "${FILESDIR}/my.cnf-4.1" my.cnf 425 newins "${FILESDIR}/my.cnf-4.1-r1" my.cnf
365 insinto "/etc/conf.d" 426 insinto "/etc/conf.d"
366 newins "${FILESDIR}/mysql-slot.conf.d-r2" "mysql" 427 newins "${FILESDIR}/mysql-slot.conf.d-r2" "mysql"
367 mysql_version_is_at_least "5.00.11.00" \ 428 mysql_version_is_at_least "5.00.11.00" \
368 && newins "${FILESDIR}/mysqlmanager-slot.conf.d" "mysqlmanager" 429 && newins "${FILESDIR}/mysqlmanager-slot.conf.d" "mysqlmanager"
369 430
370 local charset='utf8'
371 ! useq utf8 && local charset='latin1'
372 sed --in-place \ 431 sed --in-place \
373 -e "s/@MY_SUFFIX@/${MY_SUFFIX}/" \ 432 -e "s/@MY_SUFFIX@/${MY_SUFFIX}/" \
374 -e "s/@CHARSET@/${charset}/" \ 433 -e "s/@DATADIR@/${DATADIR}/" \
375 "${D}/etc/mysql${MY_SUFFIX}/my.cnf" 434 "${D}/etc/mysql${MY_SUFFIX}/my.cnf"
376 435
377 # minimal builds don't have the server 436 # minimal builds don't have the server
378 if ! useq minimal; then 437 if ! useq minimal; then
379 exeinto /etc/init.d 438 exeinto /etc/init.d
381 [[ ${SLOT} -gt 0 ]] && dosym "/etc/init.d/mysql" "/etc/init.d/mysql${MY_SUFFIX}" 440 [[ ${SLOT} -gt 0 ]] && dosym "/etc/init.d/mysql" "/etc/init.d/mysql${MY_SUFFIX}"
382 441
383 mysql_version_is_at_least "5.00.11.00" \ 442 mysql_version_is_at_least "5.00.11.00" \
384 && newexe "${FILESDIR}/mysqlmanager-slot.rc6" "mysqlmanager" 443 && newexe "${FILESDIR}/mysqlmanager-slot.rc6" "mysqlmanager"
385 insinto /etc/logrotate.d 444 insinto /etc/logrotate.d
386 # TODO 445 sed -e "s!___MY_SUFFIX___!${MY_SUFFIX}!" \
446 "${FILESDIR}/logrotate-slot.mysql" \
447 > "${TMPDIR}/logrotate.mysql"
387 newins "${FILESDIR}/logrotate.mysql" "mysql${MY_SUFFIX}" 448 newins "${TMPDIR}/logrotate.mysql" "mysql${MY_SUFFIX}"
388 449
389 #empty dirs... 450 #empty dirs...
390 diropts "-m0750" 451 diropts "-m0750"
391 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 452 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
392 dodir "${DATADIR}" 453 dodir "${DATADIR}"
422 fi 483 fi
423 484
424 # oops, temporary fix 485 # oops, temporary fix
425 mysql_check_version_range "5.00.16.00 to 5.00.18.99" \ 486 mysql_check_version_range "5.00.16.00 to 5.00.18.99" \
426 && cp -f \ 487 && cp -f \
427 "${WORKDIR}/mysql-extras/fill_help_tables.sql-5.0.15" \ 488 "${WORKDIR}/mysql-extras/fill_help_tables.sql-5.0" \
428 "${D}/usr/share/mysql${MY_SUFFIX}/fill_help_tables.sql" 489 "${D}/usr/share/mysql${MY_SUFFIX}/fill_help_tables.sql"
429} 490}
430 491
431mysql_pkg_preinst() { 492mysql_pkg_preinst() {
432 493
455 local filelist="${ROOT}/var/lib/eselect/mysql/mysql${MY_SUFFIX}" 516 local filelist="${ROOT}/var/lib/eselect/mysql/mysql${MY_SUFFIX}"
456 pushd "${D}/" &>/dev/null 517 pushd "${D}/" &>/dev/null
457 mkdir -p "${ROOT}/var/lib/eselect/mysql/" 518 mkdir -p "${ROOT}/var/lib/eselect/mysql/"
458 env -i find usr/bin/ usr/sbin/ usr/share/man \ 519 env -i find usr/bin/ usr/sbin/ usr/share/man \
459 -type f -name "*${MY_SUFFIX}*" \ 520 -type f -name "*${MY_SUFFIX}*" \
521 -and -not -name "mysql_config${MY_SUFFIX}" \
460 > "${filelist}.filelist" 522 > "${filelist}.filelist"
461 echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}.filelist" 523 echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}.filelist"
462 echo "${MY_INCLUDEDIR#"/"}" >> "${filelist}.filelist"
463 echo "${MY_LIBDIR#"/"}" >> "${filelist}.filelist" 524 echo "${MY_LIBDIR#"/"}" >> "${filelist}.filelist"
464 echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}.filelist" 525 echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}.filelist"
465 popd &>/dev/null 526 popd &>/dev/null
466 527
467 if ! useq minimal; then 528 if ! useq minimal; then
529 fi 590 fi
530 591
531 local options="" 592 local options=""
532 local sqltmp="$(emktemp)" 593 local sqltmp="$(emktemp)"
533 594
534 local help_tables="${ROOT}/usr/share/doc/mysql-${PVR}/scripts/fill_help_tables.sql.gz" 595 local help_tables="${MY_SHAREDSTATEDIR}/fill_help_tables.sql"
535 [[ -r "${help_tables}" ]] \ 596 [[ -r "${help_tables}" ]] \
536 && zcat "${help_tables}" > "${TMPDIR}/fill_help_tables.sql" \ 597 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
537 || touch "${TMPDIR}/fill_help_tables.sql" 598 || touch "${TMPDIR}/fill_help_tables.sql"
538 help_tables="${TMPDIR}/fill_help_tables.sql" 599 help_tables="${TMPDIR}/fill_help_tables.sql"
539 600
540 pushd "${TMPDIR}" &>/dev/null 601 pushd "${TMPDIR}" &>/dev/null
541 ${ROOT}/usr/bin/mysql_install_db${MY_SUFFIX} | grep -B5 -A999 -i "ERROR" 602 ${ROOT}/usr/bin/mysql_install_db${MY_SUFFIX} | grep -B5 -A999 -i "ERROR"

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.20