/[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.55
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.55 2007/01/03 15:27:13 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}" ]] || [[ -z "${MYSQL_VERSION_ID}" ]]
18then 19then
19 _MYPVR=${PVR} 20 _MYPVR=${PVR}
21
22 [[ -z ${MY_EXTRAS_VER} ]] && MY_EXTRAS_VER="20070103"
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"
46 54
47 # LEAVE THE SURROUNDING SPACES THERE 55 # having different flavours at the same time is not a good idea
48 MYSQL_MUTUALLY_EXCLUSIVE=" !dev-db/mysql !dev-db/mysql-community " 56 for i in "" "-community" "-slotted" ; do
49 DEPEND="${DEPEND} ${MYSQL_MUTUALLY_EXCLUSIVE/ !${CATEGORY}\/${PN} /}" 57 [[ "${i}" == ${PN#mysql} ]] ||
58 DEPEND="${DEPEND} !dev-db/mysql${i}"
59 done
50 60
51 mysql_version_is_at_least "5.01.00.00" \ 61 mysql_version_is_at_least "5.1" \
52 || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )" 62 || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
53
54 RDEPEND="${DEPEND} selinux? ( sec-policy/selinux-mysql )"
55 63
56 # dev-perl/DBD-mysql is needed by some scripts installed by MySQL 64 # dev-perl/DBD-mysql is needed by some scripts installed by MySQL
57 PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" 65 PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
58 66
67 if mysql_version_is_at_least "5.1.12" ; then
68 DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )"
69 fi
70
59 # Shorten the path because the socket path length must be shorter than 107 chars 71 # 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 72 # and we will run a mysql server during test phase
61 S="${WORKDIR}/mysql" # BitKeeper ebuilds 73 S="${WORKDIR}/mysql"
62 74
63 # Define $MY_FIXED_PV for MySQL patchsets 75 # BitKeeper dependency, compile-time only
64 MY_FIXED_PV="${PV/_alpha/}" 76 [[ ${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 77
68 MY_P="${P/_/-}" 78 if [[ ${PN} == "mysql-slotted" ]] ; then
69 MY_P="${MY_P/-alpha/-bk-}" # BitKeeper ebuilds 79 DEPEND="${DEPEND} app-admin/eselect-mysql"
70 MY_P="${MY_P/-community/}" 80 fi
81
82 if [[ ${PN} == "mysql-slotted" ]] ; then
83 SLOT=""
84 tpv=( ${PV//[-._]/ } )
85 for vatom in 0 1 2 ; do
86 SLOT="${SLOT}${tpv[${vatom}]}_"
87 done
88 #finally SLOT=5_0_24
89 SLOT=${SLOT:0:${#SLOT}-1}
90 else
91 SLOT="0"
92 fi
71 93
72 # Define correct SRC_URIs 94 # Define correct SRC_URIs
73 SRC_URI="${BASE_URI}/${MY_P}${MYSQL_RERELEASE}.tar.gz" 95 SRC_URI="
74 if [[ -n "${MYSQL_PATCHSET_REV}" ]] ; then 96 ${SERVER_URI}
75 MYSQL_PATCHSET_FILENAME="${PN}-patchset-${MY_FIXED_PV}-r${MYSQL_PATCHSET_REV}.tar.bz2" 97 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 98 "
77 SRC_URI="${SRC_URI} http://g3nt8.org/patches/${MYSQL_PATCHSET_FILENAME}" 99 mysql_version_is_at_least "5.1.12" \
78 fi 100 && [[ -n "${PBXT_VERSION}" ]] \
101 && SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )"
79 102
80 DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 103 DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
81 HOMEPAGE="http://www.mysql.com/" 104 HOMEPAGE="http://www.mysql.com/"
82 SLOT="0"
83 LICENSE="GPL-2" 105 LICENSE="GPL-2"
84 IUSE="big-tables debug embedded minimal perl selinux srvdir ssl static" 106 IUSE="big-tables debug embedded minimal perl selinux ssl static"
85 RESTRICT="confcache" 107 RESTRICT="confcache"
86 108
87 mysql_version_is_at_least "4.01.00.00" \ 109 mysql_version_is_at_least "4.1" \
88 && IUSE="${IUSE} latin1" 110 && IUSE="${IUSE} latin1"
89 111
90 mysql_version_is_at_least "4.01.03.00" \ 112 mysql_version_is_at_least "4.1.3" \
91 && IUSE="${IUSE} cluster extraengine" 113 && IUSE="${IUSE} cluster extraengine"
92 114
93 mysql_version_is_at_least "5.00.00.00" \ 115 mysql_version_is_at_least "5.0" \
94 || IUSE="${IUSE} raid" 116 || IUSE="${IUSE} raid"
95 117
96 mysql_version_is_at_least "5.00.18.00" \ 118 mysql_version_is_at_least "5.0.18" \
97 && IUSE="${IUSE} max-idx-128" 119 && IUSE="${IUSE} max-idx-128"
98 120
99 mysql_version_is_at_least "5.01.00.00" \ 121 mysql_version_is_at_least "5.1" \
100 && IUSE="${IUSE} innodb" 122 && IUSE="${IUSE} innodb"
101 123
102 mysql_version_is_at_least "5.01.00.00" \ 124 mysql_version_is_at_least "5.1" \
103 || IUSE="${IUSE} berkdb" 125 || IUSE="${IUSE} berkdb"
126
127 mysql_version_is_at_least "5.1.12" \
128 && IUSE="${IUSE} pbxt"
129
130 RDEPEND="${DEPEND} selinux? ( sec-policy/selinux-mysql )"
131
104fi # if [[ "${_MYPVR}" != "${PVR}" ]] 132fi # if [[ "${_MYPVR}" != "${PVR}" ]]
105 133
106EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ 134EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
107 pkg_postinst pkg_config pkg_postrm 135 pkg_postinst pkg_config pkg_postrm
108 136
180# 208#
181# Initialize global variables 209# Initialize global variables
182# 2005-11-19 <vivo@gentoo.org> 210# 2005-11-19 <vivo@gentoo.org>
183 211
184mysql_init_vars() { 212mysql_init_vars() {
213 if [[ ${SLOT} == "0" ]] ; then
214 MY_SUFFIX=""
215 else
216 MY_SUFFIX=${MY_SUFFIX:-"-${SLOT}"}
217 fi
185 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"} 218 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql${MY_SUFFIX}"}
186 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"} 219 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql${MY_SUFFIX}"}
187 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"} 220 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql${MY_SUFFIX}"}
188 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"} 221 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql${MY_SUFFIX}"}
189 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"} 222 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql${MY_SUFFIX}"}
190 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"} 223 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql${MY_SUFFIX}"}
191 224
192 if [[ -z "${DATADIR}" ]] ; then 225 if [[ -z "${DATADIR}" ]] ; then
193 DATADIR="" 226 DATADIR=""
194 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then 227 if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
195 DATADIR=`"my_print_defaults" mysqld 2>/dev/null \ 228 DATADIR=`"my_print_defaults${MY_SUFFIX}" mysqld 2>/dev/null \
196 | sed -ne '/datadir/s|^--datadir=||p' \ 229 | sed -ne '/datadir/s|^--datadir=||p' \
197 | tail -n1` 230 | tail -n1`
198 if [[ -z "${DATADIR}" ]] ; then 231 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" \ 232 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
203 | sed -e 's/.*=\s*//'` 233 | sed -e 's/.*=\s*//'`
204 fi
205 fi 234 fi
206 fi 235 fi
207 if [[ -z "${DATADIR}" ]] ; then 236 if [[ -z "${DATADIR}" ]] ; then
208 if useq "srvdir" ; then
209 DATADIR="${ROOT}/srv/localhost/mysql/datadir"
210 else
211 DATADIR="${MY_LOCALSTATEDIR}" 237 DATADIR="${MY_LOCALSTATEDIR}"
212 fi
213 einfo "Using default DATADIR" 238 einfo "Using default DATADIR"
214 fi 239 fi
215 elog "MySQL DATADIR is ${DATADIR}" 240 elog "MySQL DATADIR is ${DATADIR}"
216 241
217 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then 242 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
224 fi 249 fi
225 export PREVIOUS_DATADIR 250 export PREVIOUS_DATADIR
226 fi 251 fi
227 fi 252 fi
228 253
254 MY_SOURCEDIR=${SERVER_URI##*/}
255 MY_SOURCEDIR=${MY_SOURCEDIR%.tar*}
256
229 export MY_SHAREDSTATEDIR MY_SYSCONFDIR 257 export MY_SUFFIX MY_SHAREDSTATEDIR MY_SYSCONFDIR
230 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 258 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
231 export MY_INCLUDEDIR 259 export MY_INCLUDEDIR DATADIR MY_SOURCEDIR
232 export DATADIR
233} 260}
234 261
235configure_minimal() { 262configure_minimal() {
236 # These are things we exclude from a minimal build, please 263 # These are things we exclude from a minimal build, please
237 # note that the server actually does get built and installed, 264 # note that the server actually does get built and installed,
472mysql_src_unpack() { 499mysql_src_unpack() {
473 # Initialize the proper variables first 500 # Initialize the proper variables first
474 mysql_init_vars 501 mysql_init_vars
475 502
476 unpack ${A} 503 unpack ${A}
477 504 if [[ ${IS_BITKEEPER} -eq 90 ]] ; then
478 mv -f "${WORKDIR}/${MY_P}${MYSQL_RERELEASE}" "${S}" 505 bitkeeper_fetch
479 cd "${S}" 506 cd "${S}"
507 einfo "running upstream autorun on bk sources"
508 BUILD/autorun.sh
509 else
510 mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}"
511 cd "${S}"
512 fi
480 513
481 # Apply the patches for this MySQL version 514 # Apply the patches for this MySQL version
482 if [[ -d "${WORKDIR}/${MY_FIXED_PV}" ]] ; then 515 EPATCH_SUFFIX="patch"
483 EPATCH_SOURCE="${WORKDIR}/${MY_FIXED_PV}" EPATCH_SUFFIX="patch" epatch 516 mkdir -p "${EPATCH_SOURCE}" || die "unable to create epatch directory"
484 fi 517 mysql_mv_patches
518 epatch || die "failed to apply all patches"
485 519
486 # Additional checks, remove bundled zlib 520 # Additional checks, remove bundled zlib
487 rm -f "${S}/zlib/"*.[ch] 521 rm -f "${S}/zlib/"*.[ch]
488 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" 522 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
489 rm -f "scripts/mysqlbug" 523 rm -f "scripts/mysqlbug"
490 524
491 # Make charsets install in the right place 525 # Make charsets install in the right place
492 find . -name 'Makefile.am' \ 526 find . -name 'Makefile.am' \
493 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \; 527 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
494 528
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 529 if mysql_version_is_at_least "4.1" ; then
502 # Remove what needs to be recreated, so we're sure it's actually done 530 # Remove what needs to be recreated, so we're sure it's actually done
503 find . -name Makefile \ 531 find . -name Makefile \
504 -o -name Makefile.in \ 532 -o -name Makefile.in \
505 -o -name configure \ 533 -o -name configure \
506 -exec rm -f {} \; 534 -exec rm -f {} \;
510 538
511 local rebuilddirlist d 539 local rebuilddirlist d
512 540
513 if mysql_version_is_at_least "5.1.12" ; then 541 if mysql_version_is_at_least "5.1.12" ; then
514 rebuilddirlist="." 542 rebuilddirlist="."
515 # TODO IMPO! Check this with a cmake expert 543 # TODO IMPO! Check this with a cmake expert
516 useq "innodb" \ 544 useq "innodb" \
517 && cmake \ 545 && cmake \
518 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \ 546 -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \
519 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \ 547 -DCMAKE_CXX_COMPILER=$(which $(tc-getCC)) \
520 "storage/innobase" 548 "storage/innobase"
569 mysql_version_is_at_least "5.0" \ 597 mysql_version_is_at_least "5.0" \
570 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 598 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
571 export CXXFLAGS 599 export CXXFLAGS
572 600
573 econf \ 601 econf \
602 --program-suffix="${MY_SUFFIX}" \
574 --libexecdir="/usr/sbin" \ 603 --libexecdir="/usr/sbin" \
575 --sysconfdir="${MY_SYSCONFDIR}" \ 604 --sysconfdir="${MY_SYSCONFDIR}" \
576 --localstatedir="${MY_LOCALSTATEDIR}" \ 605 --localstatedir="${MY_LOCALSTATEDIR}" \
577 --sharedstatedir="${MY_SHAREDSTATEDIR}" \ 606 --sharedstatedir="${MY_SHAREDSTATEDIR}" \
578 --libdir="${MY_LIBDIR}" \ 607 --libdir="${MY_LIBDIR}" \
588 find . -type f -name Makefile -print0 \ 617 find . -type f -name Makefile -print0 \
589 | xargs -0 -n100 sed -i \ 618 | xargs -0 -n100 sed -i \
590 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|' 619 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
591 620
592 emake || die "emake failed" 621 emake || die "emake failed"
622
623 mysql_version_is_at_least "5.1.1" && useq "pbxt" && pbxt_src_compile
593} 624}
594 625
595mysql_src_install() { 626mysql_src_install() {
596 # Make sure the vars are correctly initialized 627 # Make sure the vars are correctly initialized
597 mysql_init_vars 628 mysql_init_vars
598 629
599 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed" 630 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die
631
632 mysql_version_is_at_least "5.1.12" && useq "pbxt" && pbxt_src_install
600 633
601 insinto "${MY_INCLUDEDIR}" 634 insinto "${MY_INCLUDEDIR}"
602 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 635 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
603 636
604 # Convenience links 637 # Convenience links
605 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze" 638 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlanalyze${MY_SUFFIX}"
606 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" 639 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlrepair${MY_SUFFIX}"
607 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize" 640 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqloptimize${MY_SUFFIX}"
608 641
609 # Various junk (my-*.cnf moved elsewhere) 642 # Various junk (my-*.cnf moved elsewhere)
610 rm -Rf "${D}/usr/share/info" 643 rm -Rf "${D}/usr/share/info"
611 for removeme in "mysql-log-rotate" mysql.server* \ 644 for removeme in "mysql-log-rotate" mysql.server* \
612 binary-configure* my-*.cnf mi_test_all* 645 binary-configure* my-*.cnf mi_test_all*
613 do 646 do
614 rm -f "${D}"/usr/share/mysql/${removeme} 647 rm -f "${D}"/usr/share/mysql/${removeme}
615 done 648 done
616 649
650 # TODO change at Makefile-am level
651 if [[ ${PN} == "mysql-slotted" ]] ; then
652 for moveme in "mysql_fix_privilege_tables.sql" \
653 "fill_help_tables.sql" "ndb-config-2-node.ini"
654 do
655 mv -f "${D}/usr/share/mysql/${moveme}" "${D}/usr/share/mysql${MY_SUFFIX}/" 2>/dev/null
656 done
657 fi
658
617 # Clean up stuff for a minimal build 659 # clean up stuff for a minimal build
618 if useq "minimal" ; then 660 if useq "minimal" ; then
619 rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} 661 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} 662 rm -f "${D}"/usr/bin/{mysql{_install_db,manager*,_secure_installation,_fix_privilege_tables,hotcopy,_convert_table_format,d_multi,_fix_extensions,_zap,_explain_log,_tableinfo,d_safe,_install,_waitpid,binlog,test},myisam*,isam*,pack_isam}
621 rm -f "${D}/usr/sbin/mysqld" 663 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 664 rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
623 fi 665 fi
624 666
667 if [[ ${PN} == "mysql-slotted" ]] ; then
668 local notcatched=$(ls "${D}/usr/share/mysql"/*)
669 if [[ -n "${notcatched}" ]] ; then
670 ewarn "QA notice"
671 ewarn "${notcatched} files in /usr/share/mysql"
672 ewarn "bug mysql-herd to manage them"
673 fi
674 rm -Rf "${D}/usr/share/mysql"
675 fi
676
625 # Configuration stuff 677 # Configuration stuff
626 if mysql_version_is_at_least "4.1" ; then 678 if mysql_version_is_at_least "4.1" ; then
627 mysql_mycnf_version="4.1" 679 mysql_mycnf_version="4.1"
628 else 680 else
629 mysql_mycnf_version="4.0" 681 mysql_mycnf_version="4.0"
630 fi 682 fi
631 insinto "${MY_SYSCONFDIR}" 683 insinto "${MY_SYSCONFDIR}"
632 doins "scripts/mysqlaccess.conf" 684 doins scripts/mysqlaccess.conf
685 sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \
633 sed -e "s!@DATADIR@!${DATADIR}!g" \ 686 -e "s!@DATADIR@!${DATADIR}!g" \
634 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ 687 "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
635 > "${TMPDIR}/my.cnf.ok" 688 > "${TMPDIR}/my.cnf.ok"
636 if mysql_version_is_at_least "4.1" && useq "latin1" ; then 689 if mysql_version_is_at_least "4.1" && useq "latin1" ; then
637 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok" 690 sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
638 fi 691 fi
639 newins "${TMPDIR}/my.cnf.ok" my.cnf 692 newins "${TMPDIR}/my.cnf.ok" my.cnf
640 693
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 694 # Minimal builds don't have the MySQL server
647 if ! useq "minimal" ; then 695 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 ... 696 # Empty directories ...
657 diropts "-m0750" 697 diropts "-m0750"
658 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 698 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
659 dodir "${DATADIR}" 699 dodir "${DATADIR}"
660 keepdir "${DATADIR}" 700 keepdir "${DATADIR}"
687 for script in scripts/mysql* ; do 727 for script in scripts/mysql* ; do
688 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 728 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
689 done 729 done
690 fi 730 fi
691 731
692 ROOT="${D}" mysql_lib_symlinks 732 if [[ ${PN} == "mysql-slotted" ]] ; then
733 # MOVED HERE DUE TO BUG #121445
734 # create a list of files, to be used
735 # by external utilities
736 mkdir -p "${D}/var/lib/eselect/mysql/"
737 local filelist="${D}/var/lib/eselect/mysql/mysql${MY_SUFFIX}.filelist"
738 pushd "${D}/" &>/dev/null
739 find usr/bin/ usr/sbin/ \
740 -type f -name "*${MY_SUFFIX}*" \
741 -and -not -name "mysql_config${MY_SUFFIX}" \
742 > "${filelist}"
743 find usr/share/man \
744 -type f -name "*${MY_SUFFIX}*" \
745 | sed -e 's/$/.gz/' \
746 >> "${filelist}"
747 echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}"
748 echo "${MY_LIBDIR#"/"}" >> "${filelist}"
749 echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}"
750 popd &>/dev/null
751 fi
693} 752}
694 753
695mysql_pkg_preinst() { 754mysql_pkg_preinst() {
696 enewgroup mysql 60 || die "problem adding 'mysql' group" 755 enewgroup mysql 60 || die "problem adding 'mysql' group"
697 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" 756 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
708 # Secure the logfiles 767 # Secure the logfiles
709 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 768 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
710 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 769 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
711 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 770 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
712 771
772 # Minimal builds don't have the MySQL server
713 if ! useq "minimal" ; then 773 if ! useq "minimal" ; then
714 # Your friendly public service announcement ... 774 docinto "support-files"
715 einfo 775 for script in \
716 elog "You might want to run:" 776 support-files/my-*.cnf \
717 elog "\"emerge --config =${CATEGORY}/${PF}\"" 777 support-files/magic \
718 elog "if this is a new install." 778 support-files/ndb-config-2-node.ini
719 einfo 779 do
720 mysql_version_is_at_least "5.01.00.00" \ 780 dodoc "${script}"
721 || elog "InnoDB is *not* optional as of MySQL-4.0.24, at the request of upstream." 781 done
782
783 docinto "scripts"
784 for script in scripts/mysql* ; do
785 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
786 done
787 fi
788
789 einfo "you may want to read slotting upgrade documents in the overlay"
790 if useq "pbxt" && mysql_version_is_at_least "5.1" ; then
791 # TODO tell it better ;-)
792 einfo "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
793 einfo "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
794 einfo "if, after that you cannot start the mysql server"
795 einfo "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
796 einfo "use the mysql upgrade script to restore the table"
797 einfo " or "
798 einfo "CREATE TABLE IF NOT EXISTS plugin ("
799 einfo " name char(64) binary DEFAULT '' NOT NULL,"
800 einfo " dl char(128) DEFAULT '' NOT NULL,"
801 einfo " PRIMARY KEY (name)"
802 einfo ") CHARACTER SET utf8 COLLATE utf8_bin;"
722 fi 803 fi
723 mysql_check_version_range "4.0 to 5.0.99.99" \ 804 mysql_check_version_range "4.0 to 5.0.99.99" \
724 && useq "berkdb" \ 805 && useq "berkdb" \
725 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 806 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
726} 807}
834 wait %1 915 wait %1
835 einfo "Done" 916 einfo "Done"
836} 917}
837 918
838mysql_pkg_postrm() { 919mysql_pkg_postrm() {
920 if [[ ${PN} == "mysql-slotted" ]] ; then
839 : #mysql_lib_symlinks 921 mysql_lib_symlinks
922 fi
840} 923}

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

  ViewVC Help
Powered by ViewVC 1.1.20