| 1 | # Copyright 1999-2012 Gentoo Foundation |
1 | # Copyright 1999-2012 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-v2.eclass,v 1.14 2012/01/09 10:42:19 grobian Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/mysql-v2.eclass,v 1.15 2012/04/18 02:08:34 robbat2 Exp $ |
| 4 | |
4 | |
| 5 | # @ECLASS: mysql-v2.eclass |
5 | # @ECLASS: mysql-v2.eclass |
| 6 | # @MAINTAINER: |
6 | # @MAINTAINER: |
| 7 | # Maintainers: |
7 | # Maintainers: |
| 8 | # - MySQL Team <mysql-bugs@gentoo.org> |
8 | # - MySQL Team <mysql-bugs@gentoo.org> |
| … | |
… | |
| 77 | # @DESCRIPTION: |
77 | # @DESCRIPTION: |
| 78 | # Upstream MySQL considers the first two parts of the version number to be the |
78 | # Upstream MySQL considers the first two parts of the version number to be the |
| 79 | # major version. Upgrades that change major version should always run |
79 | # major version. Upgrades that change major version should always run |
| 80 | # mysql_upgrade. |
80 | # mysql_upgrade. |
| 81 | MYSQL_PV_MAJOR="$(get_version_component_range 1-2 ${PV})" |
81 | MYSQL_PV_MAJOR="$(get_version_component_range 1-2 ${PV})" |
| 82 | |
|
|
| 83 | # Cluster is a special case... |
|
|
| 84 | if [[ "${PN}" == "mysql-cluster" ]]; then |
|
|
| 85 | case $PV in |
|
|
| 86 | 6.1*|7.0*|7.1*) MYSQL_PV_MAJOR=5.1 ;; |
|
|
| 87 | esac |
|
|
| 88 | fi |
|
|
| 89 | |
|
|
| 90 | |
82 | |
| 91 | # @ECLASS-VARIABLE: MYSQL_VERSION_ID |
83 | # @ECLASS-VARIABLE: MYSQL_VERSION_ID |
| 92 | # @DESCRIPTION: |
84 | # @DESCRIPTION: |
| 93 | # MYSQL_VERSION_ID will be: |
85 | # MYSQL_VERSION_ID will be: |
| 94 | # major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99] |
86 | # major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99] |
| … | |
… | |
| 108 | MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"} |
100 | MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"} |
| 109 | |
101 | |
| 110 | # This eclass should only be used with at least mysql-5.1.50 |
102 | # This eclass should only be used with at least mysql-5.1.50 |
| 111 | mysql_version_is_at_least "5.1.50" || die "This eclass should only be used with >=mysql-5.1.50" |
103 | mysql_version_is_at_least "5.1.50" || die "This eclass should only be used with >=mysql-5.1.50" |
| 112 | |
104 | |
| 113 | # @ECLASS-VARIABLE: MYSQL_COMMUNITY_FEATURES |
|
|
| 114 | # @DESCRIPTION: |
|
|
| 115 | # Specifiy if community features are available. Possible values are 1 (yes) |
|
|
| 116 | # and 0 (no). |
|
|
| 117 | # Community features are available in mysql-community |
|
|
| 118 | # AND in the re-merged mysql-5.0.82 and newer |
|
|
| 119 | if [ "${PN}" == "mysql-community" -o "${PN}" == "mariadb" ]; then |
|
|
| 120 | MYSQL_COMMUNITY_FEATURES=1 |
|
|
| 121 | elif [ "${MYSQL_PV_MAJOR}" == "5.1" ]; then |
|
|
| 122 | MYSQL_COMMUNITY_FEATURES=1 |
|
|
| 123 | elif mysql_version_is_at_least "5.4.0"; then |
|
|
| 124 | MYSQL_COMMUNITY_FEATURES=1 |
|
|
| 125 | else |
|
|
| 126 | MYSQL_COMMUNITY_FEATURES=0 |
|
|
| 127 | fi |
|
|
| 128 | |
|
|
| 129 | |
|
|
| 130 | # @ECLASS-VARIABLE: XTRADB_VER |
105 | # @ECLASS-VARIABLE: XTRADB_VER |
| 131 | # @DEFAULT_UNSET |
106 | # @DEFAULT_UNSET |
| 132 | # @DESCRIPTION: |
107 | # @DESCRIPTION: |
| 133 | # Version of the XTRADB storage engine |
108 | # Version of the XTRADB storage engine |
| 134 | |
109 | |
| … | |
… | |
| 139 | |
114 | |
| 140 | # Work out the default SERVER_URI correctly |
115 | # Work out the default SERVER_URI correctly |
| 141 | if [ -z "${SERVER_URI}" ]; then |
116 | if [ -z "${SERVER_URI}" ]; then |
| 142 | [ -z "${MY_PV}" ] && MY_PV="${PV//_/-}" |
117 | [ -z "${MY_PV}" ] && MY_PV="${PV//_/-}" |
| 143 | if [ "${PN}" == "mariadb" ]; then |
118 | if [ "${PN}" == "mariadb" ]; then |
| 144 | MARIA_FULL_PV="$(replace_version_separator 3 '-' ${PV})" |
119 | MARIA_FULL_PV="$(replace_version_separator 3 '-' ${MY_PV})" |
| 145 | MARIA_FULL_P="${PN}-${MARIA_FULL_PV}" |
120 | MARIA_FULL_P="${PN}-${MARIA_FULL_PV}" |
| 146 | SERVER_URI=" |
121 | SERVER_URI=" |
| 147 | http://ftp.osuosl.org/pub/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz |
122 | http://ftp.osuosl.org/pub/mariadb/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz |
| 148 | http://ftp.rediris.es/mirror/MariaDB/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz |
123 | http://ftp.rediris.es/mirror/MariaDB/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz |
| 149 | http://maria.llarian.net/download/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz |
124 | http://maria.llarian.net/download/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz |
| 150 | http://launchpad.net/maria/${MYSQL_PV_MAJOR}/ongoing/+download/${MARIA_FULL_P}.tar.gz |
125 | http://launchpad.net/maria/${MYSQL_PV_MAJOR}/ongoing/+download/${MARIA_FULL_P}.tar.gz |
| 151 | http://mirrors.fe.up.pt/pub/${PN}/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz |
126 | http://mirrors.fe.up.pt/pub/${PN}/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz |
| 152 | http://ftp-stud.hs-esslingen.de/pub/Mirrors/${PN}/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz |
127 | http://ftp-stud.hs-esslingen.de/pub/Mirrors/${PN}/${MARIA_FULL_P}/kvm-tarbake-jaunty-x86/${MARIA_FULL_P}.tar.gz |
| 153 | " |
128 | " |
| 154 | # The community and cluster builds are on the mirrors |
|
|
| 155 | elif [[ "${MYSQL_COMMUNITY_FEATURES}" == "1" || ${PN} == "mysql-cluster" ]] ; then |
|
|
| 156 | if [[ "${PN}" == "mysql-cluster" ]] ; then |
|
|
| 157 | URI_DIR="MySQL-Cluster" |
|
|
| 158 | URI_FILE="mysql-cluster-gpl" |
|
|
| 159 | else |
129 | else |
| 160 | URI_DIR="MySQL" |
130 | URI_DIR="MySQL" |
| 161 | URI_FILE="mysql" |
131 | URI_FILE="mysql" |
| 162 | fi |
|
|
| 163 | URI_A="${URI_FILE}-${MY_PV}.tar.gz" |
132 | URI_A="${URI_FILE}-${MY_PV}.tar.gz" |
| 164 | MIRROR_PV=$(get_version_component_range 1-2 ${PV}) |
133 | MIRROR_PV=$(get_version_component_range 1-2 ${PV}) |
| 165 | # Recently upstream switched to an archive site, and not on mirrors |
134 | # Recently upstream switched to an archive site, and not on mirrors |
| 166 | SERVER_URI="http://downloads.mysql.com/archives/${URI_FILE}-${MIRROR_PV}/${URI_A} |
135 | SERVER_URI="http://downloads.mysql.com/archives/${URI_FILE}-${MIRROR_PV}/${URI_A} |
| 167 | mirror://mysql/Downloads/${URI_DIR}-${PV%.*}/${URI_A}" |
136 | mirror://mysql/Downloads/${URI_DIR}-${PV%.*}/${URI_A}" |
| 168 | # The (old) enterprise source is on the primary site only |
|
|
| 169 | elif [ "${PN}" == "mysql" ]; then |
|
|
| 170 | SERVER_URI="ftp://ftp.mysql.com/pub/mysql/src/mysql-${MY_PV}.tar.gz" |
|
|
| 171 | fi |
137 | fi |
| 172 | fi |
138 | fi |
| 173 | |
139 | |
| 174 | # Define correct SRC_URIs |
140 | # Define correct SRC_URIs |
| 175 | SRC_URI="${SERVER_URI}" |
141 | SRC_URI="${SERVER_URI}" |
| … | |
… | |
| 185 | DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." |
151 | DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." |
| 186 | HOMEPAGE="http://www.mysql.com/" |
152 | HOMEPAGE="http://www.mysql.com/" |
| 187 | if [[ "${PN}" == "mariadb" ]]; then |
153 | if [[ "${PN}" == "mariadb" ]]; then |
| 188 | HOMEPAGE="http://mariadb.org/" |
154 | HOMEPAGE="http://mariadb.org/" |
| 189 | DESCRIPTION="MariaDB is a MySQL fork with 3rd-party patches and additional storage engines merged." |
155 | DESCRIPTION="MariaDB is a MySQL fork with 3rd-party patches and additional storage engines merged." |
| 190 | fi |
|
|
| 191 | if [[ "${PN}" == "mysql-community" ]]; then |
|
|
| 192 | DESCRIPTION="${DESCRIPTION} (obsolete, move to dev-db/mysql)" |
|
|
| 193 | fi |
156 | fi |
| 194 | LICENSE="GPL-2" |
157 | LICENSE="GPL-2" |
| 195 | SLOT="0" |
158 | SLOT="0" |
| 196 | |
159 | |
| 197 | case "${BUILD}" in |
160 | case "${BUILD}" in |
| … | |
… | |
| 204 | esac |
167 | esac |
| 205 | |
168 | |
| 206 | IUSE="${IUSE} latin1" |
169 | IUSE="${IUSE} latin1" |
| 207 | |
170 | |
| 208 | IUSE="${IUSE} extraengine" |
171 | IUSE="${IUSE} extraengine" |
| 209 | if [[ ${PN} != "mysql-cluster" ]] ; then |
|
|
| 210 | IUSE="${IUSE} cluster" |
172 | IUSE="${IUSE} cluster" |
| 211 | fi |
|
|
| 212 | |
173 | |
| 213 | IUSE="${IUSE} max-idx-128" |
174 | IUSE="${IUSE} max-idx-128" |
| 214 | IUSE="${IUSE} berkdb" |
175 | IUSE="${IUSE} berkdb" |
| 215 | |
|
|
| 216 | [[ ${MYSQL_COMMUNITY_FEATURES} == 1 ]] \ |
|
|
| 217 | && IUSE="${IUSE} +community profiling" |
176 | IUSE="${IUSE} +community profiling" |
| 218 | |
177 | |
| 219 | [[ ${PN} == "mariadb" ]] \ |
178 | [[ ${PN} == "mariadb" ]] \ |
| 220 | && IUSE="${IUSE} libevent" |
179 | && IUSE="${IUSE} libevent" |
| 221 | |
180 | |
| 222 | [[ ${PN} == "mariadb" ]] \ |
181 | [[ ${PN} == "mariadb" ]] \ |
| … | |
… | |
| 247 | |
206 | |
| 248 | [[ ${PN} == mariadb ]] \ |
207 | [[ ${PN} == mariadb ]] \ |
| 249 | && DEPEND="${DEPEND} libevent? ( >=dev-libs/libevent-1.4 )" |
208 | && DEPEND="${DEPEND} libevent? ( >=dev-libs/libevent-1.4 )" |
| 250 | |
209 | |
| 251 | # Having different flavours at the same time is not a good idea |
210 | # Having different flavours at the same time is not a good idea |
| 252 | for i in "mysql" "mysql-community" "mysql-cluster" "mariadb" ; do |
211 | for i in "mysql" "mariadb" ; do |
| 253 | [[ ${i} == ${PN} ]] || |
212 | [[ ${i} == ${PN} ]] || |
| 254 | DEPEND="${DEPEND} !dev-db/${i}" |
213 | DEPEND="${DEPEND} !dev-db/${i}" |
| 255 | done |
214 | done |
| 256 | |
215 | |
| 257 | # prefix: first need to implement something for #196294 |
216 | # prefix: first need to implement something for #196294 |
| … | |
… | |
| 287 | # dev-perl/DBD-mysql is needed by some scripts installed by MySQL |
246 | # dev-perl/DBD-mysql is needed by some scripts installed by MySQL |
| 288 | PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" |
247 | PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" |
| 289 | |
248 | |
| 290 | # For other stuff to bring us in |
249 | # For other stuff to bring us in |
| 291 | PDEPEND="${PDEPEND} =virtual/mysql-${MYSQL_PV_MAJOR}" |
250 | PDEPEND="${PDEPEND} =virtual/mysql-${MYSQL_PV_MAJOR}" |
| 292 | |
|
|
| 293 | |
251 | |
| 294 | # |
252 | # |
| 295 | # External patches |
253 | # External patches |
| 296 | # |
254 | # |
| 297 | |
255 | |
| … | |
… | |
| 324 | |
282 | |
| 325 | PBXT_P="pbxt-${PBXT_VERSION}" |
283 | PBXT_P="pbxt-${PBXT_VERSION}" |
| 326 | PBXT_SRC_URI="http://www.primebase.org/download/${PBXT_P}.tar.gz mirror://sourceforge/pbxt/${PBXT_P}.tar.gz" |
284 | PBXT_SRC_URI="http://www.primebase.org/download/${PBXT_P}.tar.gz mirror://sourceforge/pbxt/${PBXT_P}.tar.gz" |
| 327 | SRC_URI="${SRC_URI} pbxt? ( ${PBXT_SRC_URI} )" |
285 | SRC_URI="${SRC_URI} pbxt? ( ${PBXT_SRC_URI} )" |
| 328 | |
286 | |
|
|
287 | fi |
|
|
288 | |
| 329 | # PBXT_NEWSTYLE means pbxt is in storage/ and gets enabled as other plugins |
289 | # PBXT_NEWSTYLE means pbxt is in storage/ and gets enabled as other plugins |
| 330 | # vs. built outside the dir |
290 | # vs. built outside the dir |
| 331 | if pbxt_available; then |
291 | if pbxt_available; then |
| 332 | |
292 | |
| 333 | IUSE="${IUSE} pbxt" |
293 | IUSE="${IUSE} pbxt" |
| 334 | PBXT_NEWSTYLE=1 |
294 | PBXT_NEWSTYLE=1 |
| 335 | fi |
|
|
| 336 | fi |
295 | fi |
| 337 | |
296 | |
| 338 | if xtradb_patch_available; then |
297 | if xtradb_patch_available; then |
| 339 | XTRADB_P="percona-xtradb-${XTRADB_VER}" |
298 | XTRADB_P="percona-xtradb-${XTRADB_VER}" |
| 340 | XTRADB_SRC_URI_COMMON="${PERCONA_VER}/source/${XTRADB_P}.tar.gz" |
299 | XTRADB_SRC_URI_COMMON="${PERCONA_VER}/source/${XTRADB_P}.tar.gz" |
| … | |
… | |
| 423 | |
382 | |
| 424 | # This should come after all of the die statements |
383 | # This should come after all of the die statements |
| 425 | enewgroup mysql 60 || die "problem adding 'mysql' group" |
384 | enewgroup mysql 60 || die "problem adding 'mysql' group" |
| 426 | enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" |
385 | enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" |
| 427 | |
386 | |
| 428 | if [ "${PN}" != "mysql-cluster" ] && use cluster; then |
387 | if use cluster; then |
| 429 | ewarn "Upstream has noted that the NDB cluster support in the 5.0 and" |
388 | ewarn "Upstream has noted that the NDB cluster support in the 5.0 and" |
| 430 | ewarn "5.1 series should NOT be put into production. In the near" |
389 | ewarn "5.1 series should NOT be put into production. In the near" |
| 431 | ewarn "future, it will be disabled from building." |
390 | ewarn "future, it will be disabled from building." |
| 432 | ewarn "" |
|
|
| 433 | ewarn "If you need NDB support, you should instead move to the new" |
|
|
| 434 | ewarn "mysql-cluster package that represents that upstream NDB" |
|
|
| 435 | ewarn "development." |
|
|
| 436 | fi |
391 | fi |
| 437 | } |
392 | } |
| 438 | |
393 | |
| 439 | # @FUNCTION: mysql-v2_src_unpack |
394 | # @FUNCTION: mysql-v2_src_unpack |
| 440 | # @DESCRIPTION: |
395 | # @DESCRIPTION: |