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

Diff of /eclass/mysql.eclass

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

Revision 1.58 Revision 1.66
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.58 2007/01/04 20:38:16 vivo Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.66 2007/01/08 20:38:58 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"
15WANT_AUTOCONF="latest"
16WANT_AUTOMAKE="latest"
15inherit eutils flag-o-matic gnuconfig autotools mysql_fx 17inherit eutils flag-o-matic gnuconfig autotools mysql_fx
16 18
17# avoid running userspace code 8 times per ebuild :( 19# Shorten the path because the socket path length must be shorter than 107 chars
18if [[ "${_MYPVR}" != "${PVR}" ]] && [[ -n "${PVR}" ]] 20# and we will run a mysql server during test phase
19then 21S="${WORKDIR}/mysql"
20 _MYPVR=${PVR}
21 22
22 [[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20070104" 23[[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20070108"
23 24
24 if [[ ${PR#r} -lt 60 ]] ; then 25if [[ ${PR#r} -lt 60 ]] ; then
25 IS_BITKEEPER=0 26 IS_BITKEEPER=0
26 elif [[ ${PR#r} -lt 90 ]] ; then 27elif [[ ${PR#r} -lt 90 ]] ; then
27 IS_BITKEEPER=60 28 IS_BITKEEPER=60
28 else 29else
29 IS_BITKEEPER=90 30 IS_BITKEEPER=90
30 fi 31fi
31 32
32 # MYSQL_VERSION_ID will be: 33# MYSQL_VERSION_ID will be:
33 # major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99] 34# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99]
34 # This is an important part, because many of the choices the MySQL ebuild will do 35# This is an important part, because many of the choices the MySQL ebuild will do
35 # depend on this variable. 36# depend on this variable.
36 # In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803" 37# In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803"
37 MYSQL_VERSION_ID="" 38MYSQL_VERSION_ID=""
38 tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}" 39tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
39 for vatom in 0 1 2 3 ; do 40for vatom in 0 1 2 3 ; do
40 # pad to length 2 41 # pad to length 2
41 tpv[${vatom}]="00${tpv[${vatom}]}" 42 tpv[${vatom}]="00${tpv[${vatom}]}"
42 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}" 43 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
44done
45# strip leading "0" (otherwise it's considered an octal number by BASH)
46MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
47
48# Be warned, *DEPEND are version-dependant
49DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d )
50 userland_GNU? ( sys-process/procps )
51 >=sys-apps/sed-4
52 >=sys-apps/texinfo-4.7-r1
53 >=sys-libs/readline-4.1
54 >=sys-libs/zlib-1.2.3
55 "
56
57# having different flavours at the same time is not a good idea
58for i in "" "-community" "-slotted" ; do
59 [[ "${i}" == ${PN#mysql} ]] ||
60 DEPEND="${DEPEND} !dev-db/mysql${i}"
61done
62
63mysql_version_is_at_least "5.1" \
64|| DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
65
66# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
67PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
68
69if mysql_version_is_at_least "5.1.12" ; then
70 DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )"
71fi
72
73# BitKeeper dependency, compile-time only
74[[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client"
75
76if [[ ${PN} == "mysql-slotted" ]] ; then
77 DEPEND="${DEPEND} app-admin/eselect-mysql"
78fi
79
80if [[ ${PN} == "mysql-slotted" ]] ; then
81 SLOT=""
82 tpv=( ${PV//[-._]/ } )
83 for vatom in 0 1 2 ; do
84 SLOT="${SLOT}${tpv[${vatom}]}_"
43 done 85 done
44 # strip leading "0" (otherwise it's considered an octal number by BASH)
45 MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
46
47 # Be warned, *DEPEND are version-dependant
48 DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d )
49 userland_GNU? ( sys-process/procps )
50 >=sys-apps/sed-4
51 >=sys-apps/texinfo-4.7-r1
52 >=sys-libs/readline-4.1
53 >=sys-libs/zlib-1.2.3
54 "
55
56 # having different flavours at the same time is not a good idea
57 for i in "" "-community" "-slotted" ; do
58 [[ "${i}" == ${PN#mysql} ]] ||
59 DEPEND="${DEPEND} !dev-db/mysql${i}"
60 done
61
62 mysql_version_is_at_least "5.1" \
63 || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
64
65 # dev-perl/DBD-mysql is needed by some scripts installed by MySQL
66 PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
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
72 # Shorten the path because the socket path length must be shorter than 107 chars
73 # and we will run a mysql server during test phase
74 S="${WORKDIR}/mysql"
75
76 # BitKeeper dependency, compile-time only
77 [[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client"
78
79 if [[ ${PN} == "mysql-slotted" ]] ; then
80 DEPEND="${DEPEND} app-admin/eselect-mysql"
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 86 #finally SLOT=5_0_24
90 SLOT=${SLOT:0:${#SLOT}-1} 87 SLOT=${SLOT:0:${#SLOT}-1}
91 else 88else
92 SLOT="0" 89 SLOT="0"
93 fi 90fi
94 91
95 # Define correct SRC_URIs 92# Define correct SRC_URIs
96 SRC_URI=" 93SRC_URI="
97 ${SERVER_URI} 94${SERVER_URI}
98 http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 95http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
99 " 96"
100 mysql_version_is_at_least "5.1.12" \ 97mysql_version_is_at_least "5.1.12" \
101 && [[ -n "${PBXT_VERSION}" ]] \ 98&& [[ -n "${PBXT_VERSION}" ]] \
102 && SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )" 99&& SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )"
103 100
104 DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 101DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
105 HOMEPAGE="http://www.mysql.com/" 102HOMEPAGE="http://www.mysql.com/"
106 LICENSE="GPL-2" 103LICENSE="GPL-2"
107 IUSE="big-tables debug embedded minimal perl selinux ssl static" 104IUSE="big-tables debug embedded minimal perl selinux ssl static"
108 RESTRICT="confcache" 105RESTRICT="confcache"
109 106
110 mysql_version_is_at_least "4.1" \ 107mysql_version_is_at_least "4.1" \
111 && IUSE="${IUSE} latin1" 108&& IUSE="${IUSE} latin1"
112 109
113 mysql_version_is_at_least "4.1.3" \ 110mysql_version_is_at_least "4.1.3" \
114 && IUSE="${IUSE} cluster extraengine" 111&& IUSE="${IUSE} cluster extraengine"
115 112
116 mysql_version_is_at_least "5.0" \ 113mysql_version_is_at_least "5.0" \
117 || IUSE="${IUSE} raid" 114|| IUSE="${IUSE} raid"
118 115
119 mysql_version_is_at_least "5.0.18" \ 116mysql_version_is_at_least "5.0.18" \
120 && IUSE="${IUSE} max-idx-128" 117&& IUSE="${IUSE} max-idx-128"
121 118
122 mysql_version_is_at_least "5.1" \ 119mysql_version_is_at_least "5.1" \
123 && IUSE="${IUSE} innodb" 120&& IUSE="${IUSE} innodb"
124 121
125 mysql_version_is_at_least "5.1" \ 122mysql_version_is_at_least "5.1" \
126 || IUSE="${IUSE} berkdb" 123|| IUSE="${IUSE} berkdb"
127 124
128 mysql_version_is_at_least "5.1.12" \ 125mysql_version_is_at_least "5.1.12" \
129 && IUSE="${IUSE} pbxt" 126&& IUSE="${IUSE} pbxt"
130 127
131 RDEPEND="${DEPEND} 128RDEPEND="${DEPEND}
132 sys-apps/mysql 129!minimal? ( sys-apps/mysql )
133 selinux? ( sec-policy/selinux-mysql ) 130selinux? ( sec-policy/selinux-mysql )
134 " 131"
135
136fi # if [[ "${_MYPVR}" != "${PVR}" ]]
137 132
138EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ 133EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
139 pkg_postinst pkg_config pkg_postrm 134 pkg_postinst pkg_config pkg_postrm
140 135
141# 136#
177 172
178 if [[ ! -d "${wc_path}" ]]; then 173 if [[ ! -d "${wc_path}" ]]; then
179 local options="-r+" 174 local options="-r+"
180 # first check out 175 # first check out
181 einfo "bitkeeper check out start -->" 176 einfo "bitkeeper check out start -->"
182 einfo " repository: ${repo_uri}" 177 elog " repository: ${repo_uri}"
183 ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \ 178 ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \
184 || die "${EBK}: can't fetch from ${repo_uri}." 179 || die "${EBK}: can't fetch from ${repo_uri}."
185 else 180 else
186 if [[ ! -d "${wc_path}/BK" ]]; then 181 if [[ ! -d "${wc_path}/BK" ]]; then
187 popd 182 popd
188 die "Look like ${wc_path} is not a bitkeeper path." 183 die "Look like ${wc_path} is not a bitkeeper path."
189 fi 184 fi
190 185
191 # update working copy 186 # update working copy
192 einfo "bitkeeper update start -->" 187 einfo "bitkeeper update start -->"
193 einfo " repository: ${repo_uri}" 188 elog " repository: ${repo_uri}"
194 189
195 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \ 190 ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \
196 || die "BK: can't update from ${repo_uri} to ${wc_path}." 191 || die "BK: can't update from ${repo_uri} to ${wc_path}."
197 fi 192 fi
198 193
350 345
351 if useq "ssl" ; then 346 if useq "ssl" ; then
352 # --with-vio is not needed anymore, it's on by default and 347 # --with-vio is not needed anymore, it's on by default and
353 # has been removed from configure 348 # has been removed from configure
354 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio" 349 mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio"
350 fi
351
355 if mysql_version_is_at_least "5.0.6" ; then 352 if mysql_version_is_at_least "5.1.11" ; then
356 # myconf="${myconf} --with-yassl"
357 myconf="${myconf} --with-ssl" 353 myconf="${myconf} $(use_with ssl)"
358 else 354 else
359 myconf="${myconf} --with-openssl" 355 myconf="${myconf} $(use_with ssl openssl)"
360 fi
361 else
362 myconf="${myconf} --without-openssl"
363 fi 356 fi
364 357
365 # The following fix is due to a bug with bdb on SPARC's. See: 358 # The following fix is due to a bug with bdb on SPARC's. See:
366 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8 359 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
367 # It comes down to non-64-bit safety problems. 360 # It comes down to non-64-bit safety problems.
805 for script in scripts/mysql* ; do 798 for script in scripts/mysql* ; do
806 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 799 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
807 done 800 done
808 fi 801 fi
809 802
810 einfo "you may want to read slotting upgrade documents in the overlay" 803 #einfo "you may want to read slotting upgrade documents in the overlay"
811 if useq "pbxt" && mysql_version_is_at_least "5.1" ; then 804 if mysql_version_is_at_least "5.1" && useq "pbxt" ; then
812 # TODO tell it better ;-) 805 # TODO tell it better ;-)
813 einfo "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';" 806 elog "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';"
814 einfo "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;" 807 elog "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;"
815 einfo "if, after that you cannot start the mysql server" 808 elog "if, after that you cannot start the mysql server"
816 einfo "remove the ${MY_DATADIR}/mysql/plugin.* files, then" 809 elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then"
817 einfo "use the mysql upgrade script to restore the table" 810 elog "use the mysql upgrade script to restore the table"
818 einfo " or " 811 elog " or "
819 einfo "CREATE TABLE IF NOT EXISTS plugin (" 812 elog "CREATE TABLE IF NOT EXISTS plugin ("
820 einfo " name char(64) binary DEFAULT '' NOT NULL," 813 elog " name char(64) binary DEFAULT '' NOT NULL,"
821 einfo " dl char(128) DEFAULT '' NOT NULL," 814 elog " dl char(128) DEFAULT '' NOT NULL,"
822 einfo " PRIMARY KEY (name)" 815 elog " PRIMARY KEY (name)"
823 einfo ") CHARACTER SET utf8 COLLATE utf8_bin;" 816 elog ") CHARACTER SET utf8 COLLATE utf8_bin;"
824 fi 817 fi
825 mysql_check_version_range "4.0 to 5.0.99.99" \ 818 mysql_check_version_range "4.0 to 5.0.99.99" \
826 && useq "berkdb" \ 819 && useq "berkdb" \
827 && elog "Berkeley DB support is deprecated and will be removed in future versions!" 820 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
828} 821}

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

  ViewVC Help
Powered by ViewVC 1.1.20