| 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.63 2007/01/05 22:57:24 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 | |
| 13 | ECLASS="mysql" |
13 | ECLASS="mysql" |
| 14 | INHERITED="$INHERITED $ECLASS" |
14 | INHERITED="$INHERITED $ECLASS" |
|
|
15 | WANT_AUTOCONF="latest" |
|
|
16 | WANT_AUTOMAKE="latest" |
| 15 | inherit eutils flag-o-matic gnuconfig autotools mysql_fx |
17 | inherit 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 |
| 18 | if [[ "${_MYPVR}" != "${PVR}" ]] && [[ -n "${PVR}" ]] |
20 | # and we will run a mysql server during test phase |
| 19 | then |
21 | S="${WORKDIR}/mysql" |
| 20 | _MYPVR=${PVR} |
|
|
| 21 | |
22 | |
| 22 | [[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20070104" |
23 | [[ "${MY_EXTRAS_VER}" == "latest" ]] && MY_EXTRAS_VER="20070105" |
| 23 | |
24 | |
| 24 | if [[ ${PR#r} -lt 60 ]] ; then |
25 | if [[ ${PR#r} -lt 60 ]] ; then |
| 25 | IS_BITKEEPER=0 |
26 | IS_BITKEEPER=0 |
| 26 | elif [[ ${PR#r} -lt 90 ]] ; then |
27 | elif [[ ${PR#r} -lt 90 ]] ; then |
| 27 | IS_BITKEEPER=60 |
28 | IS_BITKEEPER=60 |
| 28 | else |
29 | else |
| 29 | IS_BITKEEPER=90 |
30 | IS_BITKEEPER=90 |
| 30 | fi |
31 | fi |
| 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="" |
38 | MYSQL_VERSION_ID="" |
| 38 | tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}" |
39 | tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}" |
| 39 | for vatom in 0 1 2 3 ; do |
40 | for 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}" |
|
|
44 | done |
|
|
45 | # strip leading "0" (otherwise it's considered an octal number by BASH) |
|
|
46 | MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"} |
|
|
47 | |
|
|
48 | # Be warned, *DEPEND are version-dependant |
|
|
49 | DEPEND="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 |
|
|
58 | for i in "" "-community" "-slotted" ; do |
|
|
59 | [[ "${i}" == ${PN#mysql} ]] || |
|
|
60 | DEPEND="${DEPEND} !dev-db/mysql${i}" |
|
|
61 | done |
|
|
62 | |
|
|
63 | mysql_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 |
|
|
67 | PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" |
|
|
68 | |
|
|
69 | if mysql_version_is_at_least "5.1.12" ; then |
|
|
70 | DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )" |
|
|
71 | fi |
|
|
72 | |
|
|
73 | # BitKeeper dependency, compile-time only |
|
|
74 | [[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client" |
|
|
75 | |
|
|
76 | if [[ ${PN} == "mysql-slotted" ]] ; then |
|
|
77 | DEPEND="${DEPEND} app-admin/eselect-mysql" |
|
|
78 | fi |
|
|
79 | |
|
|
80 | if [[ ${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 |
88 | else |
| 92 | SLOT="0" |
89 | SLOT="0" |
| 93 | fi |
90 | fi |
| 94 | |
91 | |
| 95 | # Define correct SRC_URIs |
92 | # Define correct SRC_URIs |
| 96 | SRC_URI=" |
93 | SRC_URI=" |
| 97 | ${SERVER_URI} |
94 | ${SERVER_URI} |
| 98 | http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 |
95 | http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 |
| 99 | " |
96 | " |
| 100 | mysql_version_is_at_least "5.1.12" \ |
97 | mysql_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." |
101 | DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." |
| 105 | HOMEPAGE="http://www.mysql.com/" |
102 | HOMEPAGE="http://www.mysql.com/" |
| 106 | LICENSE="GPL-2" |
103 | LICENSE="GPL-2" |
| 107 | IUSE="big-tables debug embedded minimal perl selinux ssl static" |
104 | IUSE="big-tables debug embedded minimal perl selinux ssl static" |
| 108 | RESTRICT="confcache" |
105 | RESTRICT="confcache" |
| 109 | |
106 | |
| 110 | mysql_version_is_at_least "4.1" \ |
107 | mysql_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" \ |
110 | mysql_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" \ |
113 | mysql_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" \ |
116 | mysql_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" \ |
119 | mysql_version_is_at_least "5.1" \ |
| 123 | && IUSE="${IUSE} innodb" |
120 | && IUSE="${IUSE} innodb" |
| 124 | |
121 | |
| 125 | mysql_version_is_at_least "5.1" \ |
122 | mysql_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" \ |
125 | mysql_version_is_at_least "5.1.12" \ |
| 129 | && IUSE="${IUSE} pbxt" |
126 | && IUSE="${IUSE} pbxt" |
| 130 | |
127 | |
| 131 | RDEPEND="${DEPEND} |
128 | RDEPEND="${DEPEND} |
| 132 | sys-apps/mysql |
129 | sys-apps/mysql |
| 133 | selinux? ( sec-policy/selinux-mysql ) |
130 | selinux? ( sec-policy/selinux-mysql ) |
| 134 | " |
131 | " |
| 135 | |
|
|
| 136 | fi # if [[ "${_MYPVR}" != "${PVR}" ]] |
|
|
| 137 | |
132 | |
| 138 | EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ |
133 | EXPORT_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 useq "pbxt" && mysql_version_is_at_least "5.1" ; 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 | } |