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

Diff of /eclass/mysql.eclass

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

Revision 1.38 Revision 1.42
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.38 2006/10/20 13:14:21 chtekk Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.42 2006/10/21 14:32:21 chtekk Exp $
4 4
5# Author: Francesco Riosa <vivo@gentoo.org> 5# Author: Francesco Riosa <vivo@gentoo.org>
6# Maintainer: Luca Longinotti <chtekk@gentoo.org> 6# Maintainer: Luca Longinotti <chtekk@gentoo.org>
7 7
8# Both MYSQL_VERSION_ID and MYSQL_PATCHSET_REV must be set in the ebuild too 8# Both MYSQL_VERSION_ID and MYSQL_PATCHSET_REV must be set in the ebuild too
23 done 23 done
24 # strip leading "0" (otherwise it's considered an octal number by BASH) 24 # strip leading "0" (otherwise it's considered an octal number by BASH)
25 MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"} 25 MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
26fi 26fi
27 27
28DEPEND="${DEPEND} 28inherit eutils flag-o-matic gnuconfig autotools mysql_fx
29
30# Be warned, *DEPEND are version-dependant
31DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d )
32 userland_GNU? ( sys-process/procps )
33 >=sys-apps/sed-4
34 >=sys-apps/texinfo-4.7-r1
29 >=sys-libs/readline-4.1 35 >=sys-libs/readline-4.1
30 berkdb? ( sys-apps/ed )
31 ssl? ( >=dev-libs/openssl-0.9.6d )
32 userland_GNU? ( sys-process/procps )
33 >=sys-libs/zlib-1.2.3 36 >=sys-libs/zlib-1.2.3"
34 >=sys-apps/texinfo-4.7-r1 37
35 >=sys-apps/sed-4" 38mysql_version_is_at_least "5.01.00.00" \
39|| DEPEND="${DEPEND} berkdb? ( sys-apps/ed )"
36 40
37RDEPEND="${DEPEND} selinux? ( sec-policy/selinux-mysql )" 41RDEPEND="${DEPEND} selinux? ( sec-policy/selinux-mysql )"
38 42
39# dev-perl/DBD-mysql is needed by some scripts installed by MySQL 43# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
40PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" 44PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
41 45
42inherit eutils flag-o-matic gnuconfig autotools mysql_fx
43
44# Shorten the path because the socket path length must be shorter than 107 chars 46# Shorten the path because the socket path length must be shorter than 107 chars
45# and we will run a mysql server during test phase 47# and we will run a mysql server during test phase
46S="${WORKDIR}/${PN}" 48S="${WORKDIR}/${PN/_alpha/-bk-}" # BitKeeper ebuilds
47 49
48# Define $MY_FIXED_PV for MySQL patchsets 50# Define $MY_FIXED_PV for MySQL patchsets
49MY_FIXED_PV="${PV/_alpha/}" 51MY_FIXED_PV="${PV/_alpha/}"
50#MY_FIXED_PV="${MY_FIXED_PV/_beta/}" 52#MY_FIXED_PV="${MY_FIXED_PV/_beta/}"
51#MY_FIXED_PV="${MY_FIXED_PV/_rc/}" 53#MY_FIXED_PV="${MY_FIXED_PV/_rc/}"
52 54
55MY_P="${P/_/-}"
56MY_P="${MY_P/-alpha/-bk-}" # BitKeeper ebuilds
57
53# Define correct SRC_URIs 58# Define correct SRC_URIs
54SRC_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/${P/_/-}${MYSQL_RERELEASE}.tar.gz" 59SRC_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/${MY_P}${MYSQL_RERELEASE}.tar.gz"
55if [[ -n "${MYSQL_PATCHSET_REV}" ]] ; then 60if [[ -n "${MYSQL_PATCHSET_REV}" ]] ; then
56 MYSQL_PATCHSET_FILENAME="${PN}-patchset-${MY_FIXED_PV}-r${MYSQL_PATCHSET_REV}.tar.bz2" 61 MYSQL_PATCHSET_FILENAME="${PN}-patchset-${MY_FIXED_PV}-r${MYSQL_PATCHSET_REV}.tar.bz2"
57 # We add the Gentoo mirror here, as we only use primaryuri for the MySQL tarball 62 # We add the Gentoo mirror here, as we only use primaryuri for the MySQL tarball
58 SRC_URI="${SRC_URI} http://gentoo.longitekk.com/${MYSQL_PATCHSET_FILENAME}" 63 SRC_URI="${SRC_URI} http://gentoo.longitekk.com/${MYSQL_PATCHSET_FILENAME}"
59fi 64fi
60 65
61DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 66DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
62HOMEPAGE="http://www.mysql.com/" 67HOMEPAGE="http://www.mysql.com/"
63SLOT="0" 68SLOT="0"
64LICENSE="GPL-2" 69LICENSE="GPL-2"
65IUSE="big-tables berkdb debug embedded minimal perl selinux srvdir ssl static" 70IUSE="big-tables debug embedded minimal perl selinux srvdir ssl static"
66RESTRICT="confcache" 71RESTRICT="confcache"
67 72
68mysql_version_is_at_least "4.01.00.00" \ 73mysql_version_is_at_least "4.01.00.00" \
69&& IUSE="${IUSE} latin1" 74&& IUSE="${IUSE} latin1"
70 75
77mysql_version_is_at_least "5.00.18.00" \ 82mysql_version_is_at_least "5.00.18.00" \
78&& IUSE="${IUSE} max-idx-128" 83&& IUSE="${IUSE} max-idx-128"
79 84
80mysql_version_is_at_least "5.01.00.00" \ 85mysql_version_is_at_least "5.01.00.00" \
81&& IUSE="${IUSE} innodb" 86&& IUSE="${IUSE} innodb"
87
88mysql_version_is_at_least "5.01.00.00" \
89|| IUSE="${IUSE} berkdb"
82 90
83EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ 91EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
84 pkg_postinst pkg_config pkg_postrm 92 pkg_postinst pkg_config pkg_postrm
85 93
86# 94#
121 else 129 else
122 DATADIR="${MY_LOCALSTATEDIR}" 130 DATADIR="${MY_LOCALSTATEDIR}"
123 fi 131 fi
124 einfo "Using default DATADIR" 132 einfo "Using default DATADIR"
125 fi 133 fi
126 einfo "MySQL DATADIR is ${DATADIR}" 134 elog "MySQL DATADIR is ${DATADIR}"
127 135
128 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then 136 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
129 if [[ -e "${DATADIR}" ]] ; then 137 if [[ -e "${DATADIR}" ]] ; then
130 ewarn "Previous datadir found, it's YOUR job to change" 138 elog "Previous datadir found, it's YOUR job to change"
131 ewarn "ownership and take care of it" 139 elog "ownership and take care of it"
132 PREVIOUS_DATADIR="yes" 140 PREVIOUS_DATADIR="yes"
133 else 141 else
134 PREVIOUS_DATADIR="no" 142 PREVIOUS_DATADIR="no"
135 fi 143 fi
136 export PREVIOUS_DATADIR 144 export PREVIOUS_DATADIR
142 export MY_INCLUDEDIR 150 export MY_INCLUDEDIR
143 export DATADIR 151 export DATADIR
144} 152}
145 153
146configure_minimal() { 154configure_minimal() {
147 # these are things we exclude from a minimal build 155 # These are things we exclude from a minimal build, please
148 # note that the server actually does get built and installed 156 # note that the server actually does get built and installed,
149 # but we then delete it before packaging. 157 # but we then delete it before packaging.
150 local minimal_exclude_list="server embedded-server extra-tools innodb bench berkeley-db row-based-replication" 158 local minimal_exclude_list="server embedded-server extra-tools innodb bench berkeley-db row-based-replication"
151 159
152 for i in ${minimal_exclude_list}; do 160 for i in ${minimal_exclude_list} ; do
153 myconf="${myconf} --without-${i}" 161 myconf="${myconf} --without-${i}"
154 done 162 done
155 myconf="${myconf} --with-extra-charsets=none" 163 myconf="${myconf} --with-extra-charsets=none"
156} 164}
157 165
158configure_common() { 166configure_common() {
167 myconf="${myconf} $(use_with big-tables)"
159 myconf="${myconf} --enable-local-infile" 168 myconf="${myconf} --enable-local-infile"
160 myconf="${myconf} --with-extra-charsets=all" 169 myconf="${myconf} --with-extra-charsets=all"
161 myconf="${myconf} --with-mysqld-user=mysql" 170 myconf="${myconf} --with-mysqld-user=mysql"
171 myconf="${myconf} --with-server"
162 myconf="${myconf} --with-unix-socket-path='/var/run/mysqld/mysqld.sock'" 172 myconf="${myconf} --with-unix-socket-path='/var/run/mysqld/mysqld.sock'"
163 myconf="${myconf} --without-libwrap" 173 myconf="${myconf} --without-libwrap"
164 174
165 if useq "static" ; then 175 if useq "static" ; then
166 myconf="${myconf} --with-mysqld-ldflags=-all-static" 176 myconf="${myconf} --with-mysqld-ldflags=-all-static"
167 myconf="${myconf} --with-client-ldflags=-all-static" 177 myconf="${myconf} --with-client-ldflags=-all-static"
168 myconf="${myconf} --disable-shared" 178 myconf="${myconf} --disable-shared"
169 else 179 else
176 myconf="${myconf} --without-debug" 186 myconf="${myconf} --without-debug"
177 mysql_version_is_at_least "4.01.03.00" \ 187 mysql_version_is_at_least "4.01.03.00" \
178 && useq "cluster" \ 188 && useq "cluster" \
179 && myconf="${myconf} --without-ndb-debug" 189 && myconf="${myconf} --without-ndb-debug"
180 fi 190 fi
181 191
182 if mysql_version_is_at_least "4.01.00.00" && ! useq "latin1" ; then 192 if mysql_version_is_at_least "4.01.00.00" && ! useq "latin1" ; then
183 myconf="${myconf} --with-charset=utf8" 193 myconf="${myconf} --with-charset=utf8"
184 myconf="${myconf} --with-collation=utf8_general_ci" 194 myconf="${myconf} --with-collation=utf8_general_ci"
185 else 195 else
186 myconf="${myconf} --with-charset=latin1" 196 myconf="${myconf} --with-charset=latin1"
187 myconf="${myconf} --with-collation=latin1_swedish_ci" 197 myconf="${myconf} --with-collation=latin1_swedish_ci"
188 fi 198 fi
189 199
190 if useq "embedded" ; then 200 if useq "embedded" ; then
191 myconf="${myconf} --with-embedded-privilege-control" 201 myconf="${myconf} --with-embedded-privilege-control"
192 myconf="${myconf} --with-embedded-server" 202 myconf="${myconf} --with-embedded-server"
193 else 203 else
194 myconf="${myconf} --without-embedded-privilege-control" 204 myconf="${myconf} --without-embedded-privilege-control"
221 231
222 # The following fix is due to a bug with bdb on SPARC's. See: 232 # The following fix is due to a bug with bdb on SPARC's. See:
223 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8 233 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
224 # It comes down to non-64-bit safety problems. 234 # It comes down to non-64-bit safety problems.
225 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" || useq "amd64" ; then 235 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" || useq "amd64" ; then
226 ewarn "bdb berkeley-db disabled due to incompatible arch" 236 elog "Berkeley DB support was disabled due to incompatible arch"
227 myconf="${myconf} --without-berkeley-db" 237 myconf="${myconf} --without-berkeley-db"
228 else 238 else
239 if useq "berkdb" ; then
229 useq "berkdb" && myconf="${myconf} --with-berkeley-db=./bdb" 240 myconf="${myconf} --with-berkeley-db=./bdb"
241 else
242 myconf="${myconf} --without-berkeley-db"
243 fi
230 fi 244 fi
231 245
232 if mysql_version_is_at_least "4.01.03.00" ; then 246 if mysql_version_is_at_least "4.01.03.00" ; then
233 myconf="${myconf} --with-geometry" 247 myconf="${myconf} --with-geometry"
234 myconf="${myconf} $(use_with cluster ndbcluster)" 248 myconf="${myconf} $(use_with cluster ndbcluster)"
235 fi 249 fi
236
237 mysql_version_is_at_least "4.01.11.00" \
238 && myconf="${myconf} $(use_with big-tables)"
239 250
240 if mysql_version_is_at_least "4.01.03.00" && useq "extraengine" ; then 251 if mysql_version_is_at_least "4.01.03.00" && useq "extraengine" ; then
241 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html 252 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
242 myconf="${myconf} --with-archive-storage-engine" 253 myconf="${myconf} --with-archive-storage-engine"
243 254
249 260
250 # http://dev.mysql.com/doc/mysql/en/federated-storage-engine.html 261 # http://dev.mysql.com/doc/mysql/en/federated-storage-engine.html
251 # http://dev.mysql.com/doc/mysql/en/federated-description.html 262 # http://dev.mysql.com/doc/mysql/en/federated-description.html
252 # http://dev.mysql.com/doc/mysql/en/federated-limitations.html 263 # http://dev.mysql.com/doc/mysql/en/federated-limitations.html
253 if mysql_version_is_at_least "5.00.03.00" ; then 264 if mysql_version_is_at_least "5.00.03.00" ; then
254 einfo "Before using the Federated storage engine, please be sure to read" 265 elog "Before using the Federated storage engine, please be sure to read"
255 einfo "http://dev.mysql.com/doc/mysql/en/federated-limitations.html" 266 elog "http://dev.mysql.com/doc/mysql/en/federated-limitations.html"
256 myconf="${myconf} --with-federated-storage-engine" 267 myconf="${myconf} --with-federated-storage-engine"
257 fi 268 fi
258 fi 269 fi
259 270
260 mysql_version_is_at_least "5.00.18.00" \ 271 mysql_version_is_at_least "5.00.18.00" \
261 && useq "max-idx-128" \ 272 && useq "max-idx-128" \
262 && myconf="${myconf} --with-max-indexes=128" 273 && myconf="${myconf} --with-max-indexes=128"
263} 274}
264 275
265configure_51() { 276configure_51() {
266 # TODO : !!!!! readd --withouth-readline 277 # TODO: !!!! readd --without-readline
267 # the failure depend upon config/ac-macros/readline.m4 checking into 278 # the failure depend upon config/ac-macros/readline.m4 checking into
268 # readline.h instead of history.h 279 # readline.h instead of history.h
269 myconf="${myconf} $(use_with big-tables)"
270 myconf="${myconf} $(use_with ssl)" 280 myconf="${myconf} $(use_with ssl)"
271 myconf="${myconf} --enable-assembler" 281 myconf="${myconf} --enable-assembler"
272 myconf="${myconf} --with-geometry" 282 myconf="${myconf} --with-geometry"
273 myconf="${myconf} --with-readline" 283 myconf="${myconf} --with-readline"
274 myconf="${myconf} --with-row-based-replication" 284 myconf="${myconf} --with-row-based-replication"
275 myconf="${myconf} --with-zlib=/usr/$(get_libdir)" 285 myconf="${myconf} --with-zlib=/usr/$(get_libdir)"
276 myconf="${myconf} --without-pstack" 286 myconf="${myconf} --without-pstack"
277 useq "max-idx-128" && myconf="${myconf} --with-max-indexes=128" 287 useq "max-idx-128" && myconf="${myconf} --with-max-indexes=128"
278 288
279 # 5.1 introduces a new way to manage storage engines (plugins) 289 # 5.1 introduces a new way to manage storage engines (plugins)
280 # like configuration=none 290 # like configuration=none
281 local plugins="csv,myisam,myisammrg,heap" 291 local plugins="csv,myisam,myisammrg,heap"
282 if useq "extraengine" ; then 292 if useq "extraengine" ; then
283 # like configuration=max-no-ndb, archive and example removed in 5.1.11 293 # like configuration=max-no-ndb, archive and example removed in 5.1.11
284 plugins="${plugins},blackhole,federated,ftexample,partition" 294 plugins="${plugins},archive,blackhole,example,federated,ftexample,partition"
285 295
286 einfo "before to use federated engine be sure to read" 296 elog "Before using the Federated storage engine, please be sure to read"
287 einfo "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html" 297 elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html"
288 fi 298 fi
289 299
290 if useq "innodb" ; then 300 if useq "innodb" ; then
291 plugins="${plugins},innobase" 301 plugins="${plugins},innobase"
292 fi 302 fi
305# 315#
306 316
307mysql_pkg_setup() { 317mysql_pkg_setup() {
308 enewgroup mysql 60 || die "problem adding 'mysql' group" 318 enewgroup mysql 60 || die "problem adding 'mysql' group"
309 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" 319 enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
310 320
311 if mysql_version_is_at_least "5.01.12.00" && useq "innodb" ; then 321 if mysql_version_is_at_least "5.01.12.00" && useq "innodb" ; then
322 eerror "InnoDB now uses cmake to build, this is a TODO item, will be fixed shortly!"
312 die "innodb now use cmake to build this is a TODO item" 323 die "InnoDB now uses cmake to build, this is a TODO item, will be fixed shortly!"
313 fi 324 fi
314 325
315 # Check for USE flag problems in pkg_setup 326 # Check for USE flag problems in pkg_setup
316 if useq "static" && useq "ssl" ; then 327 if useq "static" && useq "ssl" ; then
317 eerror "MySQL does not support being built statically with SSL support enabled!" 328 eerror "MySQL does not support being built statically with SSL support enabled!"
330 && ( useq "cluster" || useq "extraengine" ) \ 341 && ( useq "cluster" || useq "extraengine" ) \
331 && useq "minimal" ; then 342 && useq "minimal" ; then
332 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 343 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
333 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 344 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
334 fi 345 fi
335 346
347 mysql_check_version_range "4.00.00.00 to 5.00.99.99" \
348 && useq "berkdb" \
336 useq "berkdb" && ewarn "Berkley DB support is deprecated and will be removed in future versions" 349 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
337} 350}
338 351
339mysql_src_unpack() { 352mysql_src_unpack() {
340 # Initialize the proper variables first 353 # Initialize the proper variables first
341 mysql_init_vars 354 mysql_init_vars
342 355
343 unpack ${A} 356 unpack ${A}
344 357
345 mv -f "${WORKDIR}/${P/_/-}${MYSQL_RERELEASE}" "${S}" 358 mv -f "${WORKDIR}/${MY_P}${MYSQL_RERELEASE}" "${S}"
346 cd "${S}" 359 cd "${S}"
347 360
348 # Apply the patches for this MySQL version 361 # Apply the patches for this MySQL version
349 if [[ -d "${WORKDIR}/${MY_FIXED_PV}" ]] ; then 362 if [[ -d "${WORKDIR}/${MY_FIXED_PV}" ]] ; then
350 EPATCH_SOURCE="${WORKDIR}/${MY_FIXED_PV}" EPATCH_SUFFIX="patch" epatch 363 EPATCH_SOURCE="${WORKDIR}/${MY_FIXED_PV}" EPATCH_SUFFIX="patch" epatch
359 find . -name 'Makefile.am' \ 372 find . -name 'Makefile.am' \
360 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \; 373 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
361 374
362 # Manage mysqlmanager 375 # Manage mysqlmanager
363 mysql_version_is_at_least "5.00.15.00" \ 376 mysql_version_is_at_least "5.00.15.00" \
364 && sed -i -e "s!@GENTOO_EXT@!${MY_SUFFIX}!g" \ 377 && sed -i -e "s!@GENTOO_EXT@!!g" \
365 -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" \ 378 -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" \
366 "${S}/server-tools/instance-manager/Makefile.am" 379 "${S}/server-tools/instance-manager/Makefile.am"
367 380
368 if mysql_version_is_at_least "4.01.00.00" ; then 381 if mysql_version_is_at_least "4.01.00.00" ; then
369 # Remove what needs to be recreated, so we're sure it's actually done 382 # Remove what needs to be recreated, so we're sure it's actually done
375 rm -f "scripts/mysqlbug" 388 rm -f "scripts/mysqlbug"
376 fi 389 fi
377 390
378 local rebuilddirlist bdbdir d 391 local rebuilddirlist bdbdir d
379 392
380 if mysql_version_is_at_least "5.01.00.00" ; then 393 if mysql_version_is_at_least "5.01.12.00" ; then
381 rebuilddirlist=". storage/innobase" 394 # TODO: innodb is using cmake now?
382 bdbdir='storage/bdb/dist' 395 rebuilddirlist="."
396 bdbdir=''
383 else 397 else
384 rebuilddirlist=". innobase" 398 rebuilddirlist=". innobase"
385 bdbdir='bdb/dist' 399 bdbdir='bdb/dist'
386 fi 400 fi
387 401
390 pushd "${d}" &>/dev/null 404 pushd "${d}" &>/dev/null
391 AT_GNUCONF_UPDATE="yes" eautoreconf 405 AT_GNUCONF_UPDATE="yes" eautoreconf
392 popd &>/dev/null 406 popd &>/dev/null
393 done 407 done
394 408
395 # TODO: berkdb in MySQL 5.1 needs to be worked on
396 if useq "berkdb" \
397 && ! mysql_check_version_range "4.00.00.00 to 4.00.99.99" \ 409 if mysql_check_version_range "4.01.00.00 to 5.00.99.99" \
398 && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then 410 && useq "berkdb" ; then
399 [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f "ltmain.sh" "${bdbdir}/ltmain.sh" 411 [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f "ltmain.sh" "${bdbdir}/ltmain.sh"
400 pushd "${bdbdir}" \ 412 pushd "${bdbdir}" \
401 && sh s_all \ 413 && sh s_all \
402 || die "Failed bdb reconfigure" \ 414 || die "Failed bdb reconfigure" \
403 &>/dev/null 415 &>/dev/null
407 419
408mysql_src_compile() { 420mysql_src_compile() {
409 # Make sure the vars are correctly initialized 421 # Make sure the vars are correctly initialized
410 mysql_init_vars 422 mysql_init_vars
411 423
424 # $myconf is modified by the configure_* functions
412 local myconf 425 local myconf=""
413 426
414 if useq "static" ; then 427 if useq "minimal" ; then
415 myconf="${myconf} --with-mysqld-ldflags=-all-static" 428 configure_minimal
416 myconf="${myconf} --with-client-ldflags=-all-static"
417 myconf="${myconf} --disable-shared"
418 else 429 else
419 myconf="${myconf} --enable-shared --enable-static" 430 configure_common
420 fi
421
422 myconf="${myconf} --without-libwrap"
423
424 if useq "ssl" ; then
425 # --with-vio is not needed anymore, it's on by default and
426 # has been removed from configure
427 mysql_version_is_at_least "5.00.04.00" || myconf="${myconf} --with-vio"
428 if mysql_version_is_at_least "5.00.06.00" ; then 431 if mysql_version_is_at_least "5.01.10.00" ; then
429 # yassl-0.96 is still young and breaks with GCC-4.X or amd64 432 configure_51
430 # myconf="${myconf} --with-yassl"
431 myconf="${myconf} --with-openssl"
432 else 433 else
433 myconf="${myconf} --with-openssl" 434 configure_40_41_50
434 fi
435 else
436 myconf="${myconf} --without-openssl"
437 fi
438
439 if useq "debug" ; then
440 myconf="${myconf} --with-debug=full"
441 else
442 myconf="${myconf} --without-debug"
443
444 mysql_version_is_at_least "4.01.03.00" && useq "cluster" \
445 && myconf="${myconf} --without-ndb-debug"
446 fi
447
448 # These are things we exclude from a minimal build.
449 # Note that the server actually does get built and installed,
450 # but we then delete it.
451 local minimal_exclude_list="server embedded-server extra-tools innodb bench"
452
453 if ! useq "minimal" ; then
454 myconf="${myconf} --with-server"
455 myconf="${myconf} --with-extra-tools"
456
457 if ! mysql_version_is_at_least "5.00.00.00" ; then
458 if useq "raid" ; then
459 myconf="${myconf} --with-raid"
460 else
461 myconf="${myconf} --without-raid"
462 fi 435 fi
463 fi
464
465 if mysql_version_is_at_least "4.01.00.00" && ! useq "latin1" ; then
466 myconf="${myconf} --with-charset=utf8"
467 myconf="${myconf} --with-collation=utf8_general_ci"
468 else
469 myconf="${myconf} --with-charset=latin1"
470 myconf="${myconf} --with-collation=latin1_swedish_ci"
471 fi
472
473 # Optional again with MySQL 5.1
474 if mysql_version_is_at_least "5.01.00.00" ; then
475 if useq "innodb" ; then
476 myconf="${myconf} --with-innodb"
477 else
478 myconf="${myconf} --without-innodb"
479 fi
480 fi
481
482 # Lots of charsets
483 myconf="${myconf} --with-extra-charsets=all"
484
485 # The following fix is due to a bug with bdb on SPARC's. See:
486 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
487 # It comes down to non-64-bit safety problems.
488 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" || useq "amd64" ; then
489 ewarn "bdb berkeley-db disabled due to incompatible arch"
490 myconf="${myconf} --without-berkeley-db"
491 else
492 # TODO: berkdb in MySQL 5.1 needs to be worked on
493 if useq "berkdb" && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
494 myconf="${myconf} --with-berkeley-db=./bdb"
495 else
496 myconf="${myconf} --without-berkeley-db"
497 fi
498 fi
499
500 if mysql_version_is_at_least "4.01.03.00" ; then
501 myconf="${myconf} --with-geometry"
502
503 if useq "cluster" ; then
504 myconf="${myconf} --with-ndbcluster"
505 else
506 myconf="${myconf} --without-ndbcluster"
507 fi
508 fi
509
510 if useq "big-tables" ; then
511 myconf="${myconf} --with-big-tables"
512 else
513 myconf="${myconf} --without-big-tables"
514 fi
515
516 mysql_version_is_at_least "5.01.06.00" \
517 && myconf="${myconf} --with-ndb-binlog"
518
519 if useq "embedded" ; then
520 myconf="${myconf} --with-embedded-privilege-control"
521 myconf="${myconf} --with-embedded-server"
522 else
523 myconf="${myconf} --without-embedded-privilege-control"
524 myconf="${myconf} --without-embedded-server"
525 fi
526
527 # Benchmarking stuff needs Perl
528 if useq "perl" ; then
529 myconf="${myconf} --with-bench"
530 else
531 myconf="${myconf} --without-bench"
532 fi
533 else
534 for i in ${minimal_exclude_list} ; do
535 myconf="${myconf} --without-${i}"
536 done
537 myconf="${myconf} --without-berkeley-db"
538 myconf="${myconf} --with-extra-charsets=none"
539 fi
540
541 if mysql_version_is_at_least "4.01.03.00" && useq "extraengine" ; then
542 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
543 myconf="${myconf} --with-archive-storage-engine"
544
545 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
546 myconf="${myconf} --with-csv-storage-engine"
547
548 # http://dev.mysql.com/doc/mysql/en/blackhole-storage-engine.html
549 myconf="${myconf} --with-blackhole-storage-engine"
550
551 # http://dev.mysql.com/doc/mysql/en/federated-storage-engine.html
552 # http://dev.mysql.com/doc/mysql/en/federated-description.html
553 # http://dev.mysql.com/doc/mysql/en/federated-limitations.html
554 if mysql_version_is_at_least "5.00.03.00" ; then
555 einfo "Before using the Federated storage engine, please be sure to read"
556 einfo "http://dev.mysql.com/doc/mysql/en/federated-limitations.html"
557 myconf="${myconf} --with-federated-storage-engine"
558 fi
559
560 # http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html
561 if mysql_version_is_at_least "5.01.00.00" ; then
562 myconf="${myconf} --with-partition"
563 fi
564 fi
565
566 mysql_version_is_at_least "5.00.18.00" \
567 && useq "max-idx-128" \
568 && myconf="${myconf} --with-max-indexes=128"
569
570 mysql_version_is_at_least "5.01.05.00" \
571 && myconf="${myconf} --with-row-based-replication"
572
573 # TODO: Rechek again later, there were problems with assembler enabled
574 # and some combination of USE flags with MySQL 5.1
575 if mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
576 myconf="${myconf} --disable-assembler"
577 else
578 myconf="${myconf} --enable-assembler"
579 fi 436 fi
580 437
581 # Bug #114895, bug #110149 438 # Bug #114895, bug #110149
582 filter-flags "-O" "-O[01]" 439 filter-flags "-O" "-O[01]"
583 440
586 443
587 append-flags "-fno-exceptions -fno-strict-aliasing" 444 append-flags "-fno-exceptions -fno-strict-aliasing"
588 CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti" 445 CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti"
589 mysql_version_is_at_least "5.00.00.00" \ 446 mysql_version_is_at_least "5.00.00.00" \
590 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 447 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
591 export CXXFLAGS="${CXXFLAGS}" 448 export CXXFLAGS
592 449
593 econf \ 450 econf \
594 --libexecdir="/usr/sbin" \ 451 --libexecdir="/usr/sbin" \
595 --sysconfdir="${MY_SYSCONFDIR}" \ 452 --sysconfdir="${MY_SYSCONFDIR}" \
596 --localstatedir="${MY_LOCALSTATEDIR}" \ 453 --localstatedir="${MY_LOCALSTATEDIR}" \
597 --sharedstatedir="${MY_SHAREDSTATEDIR}" \ 454 --sharedstatedir="${MY_SHAREDSTATEDIR}" \
598 --libdir="${MY_LIBDIR}" \ 455 --libdir="${MY_LIBDIR}" \
599 --includedir="${MY_INCLUDEDIR}" \ 456 --includedir="${MY_INCLUDEDIR}" \
600 --with-low-memory \ 457 --with-low-memory \
601 --enable-local-infile \
602 --with-mysqld-user=mysql \
603 --with-client-ldflags=-lstdc++ \ 458 --with-client-ldflags=-lstdc++ \
604 --enable-thread-safe-client \ 459 --enable-thread-safe-client \
605 --with-comment="Gentoo Linux ${PF}" \ 460 --with-comment="Gentoo Linux ${PF}" \
606 --with-unix-socket-path="/var/run/mysqld/mysqld.sock" \
607 --without-readline \
608 --without-docs \ 461 --without-docs \
609 ${myconf} || die "bad ./configure" 462 ${myconf} || die "econf failed"
610 463
611 # TODO: Move this before autoreconf !!! 464 # TODO: Move this before autoreconf !!!
612 find . -type f -name Makefile -print0 \ 465 find . -type f -name Makefile -print0 \
613 | xargs -0 -n100 sed -i \ 466 | xargs -0 -n100 sed -i \
614 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|' 467 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
615 468
616 emake || die "compile problem" 469 emake || die "emake failed"
617} 470}
618 471
619mysql_src_install() { 472mysql_src_install() {
620 # Make sure the vars are correctly initialized 473 # Make sure the vars are correctly initialized
621 mysql_init_vars 474 mysql_init_vars
622 475
623 make install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "make install error" 476 emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed"
624 477
625 insinto "${MY_INCLUDEDIR}" 478 insinto "${MY_INCLUDEDIR}"
626 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 479 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
627 480
628 # Convenience links 481 # Convenience links
735 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 588 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
736 589
737 if ! useq "minimal" ; then 590 if ! useq "minimal" ; then
738 # Your friendly public service announcement ... 591 # Your friendly public service announcement ...
739 einfo 592 einfo
740 einfo "You might want to run:" 593 elog "You might want to run:"
741 einfo "\"emerge --config =${CATEGORY}/${PF}\"" 594 elog "\"emerge --config =${CATEGORY}/${PF}\""
742 einfo "if this is a new install." 595 elog "if this is a new install."
743 einfo 596 einfo
744 mysql_version_is_at_least "5.01.00.00" \ 597 mysql_version_is_at_least "5.01.00.00" \
745 || einfo "InnoDB is *not* optional as of MySQL-4.0.24, at the request of upstream." 598 || elog "InnoDB is *not* optional as of MySQL-4.0.24, at the request of upstream."
746 fi 599 fi
600 mysql_check_version_range "4.00.00.00 to 5.00.99.99" \
601 && useq "berkdb" \
747 useq "berkdb" && ewarn "Berkley DB support is deprecated and will be removed in future versions" 602 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
748} 603}
749 604
750mysql_pkg_config() { 605mysql_pkg_config() {
751 # Make sure the vars are correctly initialized 606 # Make sure the vars are correctly initialized
752 mysql_init_vars 607 mysql_init_vars

Legend:
Removed from v.1.38  
changed lines
  Added in v.1.42

  ViewVC Help
Powered by ViewVC 1.1.20