| 1 | # Copyright 1999-2011 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-autotools.eclass,v 1.1 2011/07/13 07:07:15 robbat2 Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/mysql-autotools.eclass,v 1.8 2012/06/02 19:16:31 zmedico Exp $ |
| 4 | |
4 | |
| 5 | # @ECLASS: mysql-autotools.eclass |
5 | # @ECLASS: mysql-autotools.eclass |
| 6 | # @MAINTAINER: |
6 | # @MAINTAINER: |
| 7 | # Author: Francesco Riosa (Retired) <vivo@gentoo.org> |
|
|
| 8 | # Maintainers: |
|
|
| 9 | # - MySQL Team <mysql-bugs@gentoo.org> |
7 | # MySQL Team <mysql-bugs@gentoo.org> |
| 10 | # - Robin H. Johnson <robbat2@gentoo.org> |
8 | # Robin H. Johnson <robbat2@gentoo.org> |
| 11 | # - Jorge Manuel B. S. Vicetto <jmbsvicetto@gentoo.org> |
9 | # Jorge Manuel B. S. Vicetto <jmbsvicetto@gentoo.org> |
| 12 | # - Luca Longinotti <chtekk@gentoo.org> |
10 | # Luca Longinotti <chtekk@gentoo.org> |
|
|
11 | # @AUTHOR: |
|
|
12 | # Francesco Riosa <vivo@gentoo.org> (retired) |
| 13 | # @BLURB: This eclass provides support for autotools based mysql releases |
13 | # @BLURB: This eclass provides support for autotools based mysql releases |
| 14 | # @DESCRIPTION: |
14 | # @DESCRIPTION: |
| 15 | # The mysql-autotools.eclass provides the support to build the mysql |
15 | # The mysql-autotools.eclass provides the support to build the mysql |
| 16 | # ebuilds using the autotools build system. This eclass provides |
16 | # ebuilds using the autotools build system. This eclass provides |
| 17 | # the src_unpack, src_prepare, src_configure, src_compile, scr_install, |
17 | # the src_unpack, src_prepare, src_configure, src_compile, scr_install, |
| 18 | # pkg_preinst, pkg_postinst, pkg_config and pkg_postrm phase hooks. |
18 | # pkg_preinst, pkg_postinst, pkg_config and pkg_postrm phase hooks. |
| 19 | |
19 | |
| 20 | inherit autotools |
20 | inherit autotools multilib |
| 21 | |
21 | |
| 22 | # |
22 | # |
| 23 | # HELPER FUNCTIONS: |
23 | # HELPER FUNCTIONS: |
| 24 | # |
24 | # |
| 25 | |
25 | |
| … | |
… | |
| 106 | myconf="${myconf} $(use_with big-tables)" |
106 | myconf="${myconf} $(use_with big-tables)" |
| 107 | myconf="${myconf} --enable-local-infile" |
107 | myconf="${myconf} --enable-local-infile" |
| 108 | myconf="${myconf} --with-extra-charsets=all" |
108 | myconf="${myconf} --with-extra-charsets=all" |
| 109 | myconf="${myconf} --with-mysqld-user=mysql" |
109 | myconf="${myconf} --with-mysqld-user=mysql" |
| 110 | myconf="${myconf} --with-server" |
110 | myconf="${myconf} --with-server" |
| 111 | myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock" |
111 | myconf="${myconf} --with-unix-socket-path=${EPREFIX}/var/run/mysqld/mysqld.sock" |
| 112 | myconf="${myconf} --without-libwrap" |
112 | myconf="${myconf} --without-libwrap" |
| 113 | |
113 | |
| 114 | if use static ; then |
114 | if use static ; then |
| 115 | myconf="${myconf} --with-mysqld-ldflags=-all-static" |
115 | myconf="${myconf} --with-mysqld-ldflags=-all-static" |
| 116 | myconf="${myconf} --with-client-ldflags=-all-static" |
116 | myconf="${myconf} --with-client-ldflags=-all-static" |
| … | |
… | |
| 121 | |
121 | |
| 122 | if use debug ; then |
122 | if use debug ; then |
| 123 | myconf="${myconf} --with-debug=full" |
123 | myconf="${myconf} --with-debug=full" |
| 124 | else |
124 | else |
| 125 | myconf="${myconf} --without-debug" |
125 | myconf="${myconf} --without-debug" |
| 126 | if ( use cluster || [[ "${PN}" == "mysql-cluster" ]] ); then |
126 | if ( use cluster ); then |
| 127 | myconf="${myconf} --without-ndb-debug" |
127 | myconf="${myconf} --without-ndb-debug" |
| 128 | fi |
128 | fi |
| 129 | fi |
129 | fi |
| 130 | |
130 | |
| 131 | if [ -n "${MYSQL_DEFAULT_CHARSET}" -a -n "${MYSQL_DEFAULT_COLLATION}" ]; then |
131 | if [ -n "${MYSQL_DEFAULT_CHARSET}" -a -n "${MYSQL_DEFAULT_COLLATION}" ]; then |
| … | |
… | |
| 158 | mysql-autotools_configure_51() { |
158 | mysql-autotools_configure_51() { |
| 159 | |
159 | |
| 160 | # TODO: !!!! readd --without-readline |
160 | # TODO: !!!! readd --without-readline |
| 161 | # the failure depend upon config/ac-macros/readline.m4 checking into |
161 | # the failure depend upon config/ac-macros/readline.m4 checking into |
| 162 | # readline.h instead of history.h |
162 | # readline.h instead of history.h |
| 163 | myconf="${myconf} $(use_with ssl ssl /usr)" |
163 | myconf="${myconf} $(use_with ssl ssl "${EPREFIX}"/usr)" |
| 164 | myconf="${myconf} --enable-assembler" |
164 | myconf="${myconf} --enable-assembler" |
| 165 | myconf="${myconf} --with-geometry" |
165 | myconf="${myconf} --with-geometry" |
| 166 | myconf="${myconf} --with-readline" |
166 | myconf="${myconf} --with-readline" |
| 167 | myconf="${myconf} --with-zlib-dir=/usr/" |
167 | myconf="${myconf} --with-zlib-dir=${EPREFIX}/usr/" |
| 168 | myconf="${myconf} --without-pstack" |
168 | myconf="${myconf} --without-pstack" |
| 169 | myconf="${myconf} --with-plugindir=/usr/$(get_libdir)/mysql/plugin" |
169 | myconf="${myconf} --with-plugindir=${EPREFIX}/usr/$(get_libdir)/mysql/plugin" |
| 170 | |
170 | |
| 171 | # This is an explict die here, because if we just forcibly disable it, then the |
171 | # This is an explict die here, because if we just forcibly disable it, then the |
| 172 | # user's data is not accessible. |
172 | # user's data is not accessible. |
| 173 | use max-idx-128 && die "Bug #336027: upstream has a corruption issue with max-idx-128 presently" |
173 | use max-idx-128 && die "Bug #336027: upstream has a corruption issue with max-idx-128 presently" |
| 174 | #use max-idx-128 && myconf="${myconf} --with-max-indexes=128" |
174 | #use max-idx-128 && myconf="${myconf} --with-max-indexes=128" |
| 175 | if [ "${MYSQL_COMMUNITY_FEATURES}" == "1" ]; then |
|
|
| 176 | myconf="${myconf} $(use_enable community community-features)" |
175 | myconf="${myconf} $(use_enable community community-features)" |
| 177 | if use community; then |
176 | if use community; then |
| 178 | myconf="${myconf} $(use_enable profiling)" |
177 | myconf="${myconf} $(use_enable profiling)" |
| 179 | else |
178 | else |
| 180 | myconf="${myconf} --disable-profiling" |
179 | myconf="${myconf} --disable-profiling" |
| 181 | fi |
|
|
| 182 | fi |
180 | fi |
| 183 | |
181 | |
| 184 | # Scan for all available plugins |
182 | # Scan for all available plugins |
| 185 | local plugins_avail="$( |
183 | local plugins_avail="$( |
| 186 | LANG=C \ |
184 | LANG=C \ |
| … | |
… | |
| 217 | plugins_sta="${plugins_sta} partition" |
215 | plugins_sta="${plugins_sta} partition" |
| 218 | |
216 | |
| 219 | if [[ "${PN}" != "mariadb" ]] ; then |
217 | if [[ "${PN}" != "mariadb" ]] ; then |
| 220 | elog "Before using the Federated storage engine, please be sure to read" |
218 | elog "Before using the Federated storage engine, please be sure to read" |
| 221 | elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html" |
219 | elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html" |
| 222 | plugins_dyn="${plugins_sta} federatedx" |
220 | plugins_dyn="${plugins_dyn} federated" |
| 223 | else |
221 | else |
| 224 | elog "MariaDB includes the FederatedX engine. Be sure to read" |
222 | elog "MariaDB includes the FederatedX engine. Be sure to read" |
| 225 | elog "http://askmonty.org/wiki/index.php/Manual:FederatedX_storage_engine" |
223 | elog "http://askmonty.org/wiki/index.php/Manual:FederatedX_storage_engine" |
| 226 | plugins_dyn="${plugins_sta} federated" |
224 | plugins_dyn="${plugins_dyn} federatedx" |
| 227 | fi |
225 | fi |
| 228 | else |
226 | else |
| 229 | plugins_dis="${plugins_dis} partition federated" |
227 | plugins_dis="${plugins_dis} partition federated" |
| 230 | fi |
228 | fi |
| 231 | |
229 | |
| … | |
… | |
| 238 | for i in innodb_plugin ; do |
236 | for i in innodb_plugin ; do |
| 239 | [ -e "${S}"/storage/${i} ] && plugins_dyn="${plugins_dyn} ${i}" |
237 | [ -e "${S}"/storage/${i} ] && plugins_dyn="${plugins_dyn} ${i}" |
| 240 | done |
238 | done |
| 241 | |
239 | |
| 242 | # like configuration=max-no-ndb |
240 | # like configuration=max-no-ndb |
| 243 | if ( use cluster || [[ "${PN}" == "mysql-cluster" ]] ) ; then |
241 | if ( use cluster ) ; then |
| 244 | plugins_sta="${plugins_sta} ndbcluster partition" |
242 | plugins_sta="${plugins_sta} ndbcluster partition" |
| 245 | plugins_dis="${plugins_dis//partition}" |
243 | plugins_dis="${plugins_dis//partition}" |
| 246 | myconf="${myconf} --with-ndb-binlog" |
244 | myconf="${myconf} --with-ndb-binlog" |
| 247 | else |
245 | else |
| 248 | plugins_dis="${plugins_dis} ndbcluster" |
246 | plugins_dis="${plugins_dis} ndbcluster" |
| … | |
… | |
| 287 | fi |
285 | fi |
| 288 | fi |
286 | fi |
| 289 | |
287 | |
| 290 | if pbxt_available && [[ "${PBXT_NEWSTYLE}" == "1" ]]; then |
288 | if pbxt_available && [[ "${PBXT_NEWSTYLE}" == "1" ]]; then |
| 291 | use pbxt \ |
289 | use pbxt \ |
| 292 | && plugins_dyn="${plugins_dyn} pbxt" \ |
290 | && plugins_sta="${plugins_sta} pbxt" \ |
| 293 | || plugins_dis="${plugins_dis} pbxt" |
291 | || plugins_dis="${plugins_dis} pbxt" |
| 294 | fi |
292 | fi |
| 295 | |
293 | |
| 296 | use static && \ |
294 | use static && \ |
| 297 | plugins_sta="${plugins_sta} ${plugins_dyn}" && \ |
295 | plugins_sta="${plugins_sta} ${plugins_dyn}" && \ |
| … | |
… | |
| 318 | |
316 | |
| 319 | einfo "Reconfiguring dir '${PWD}'" |
317 | einfo "Reconfiguring dir '${PWD}'" |
| 320 | eautoreconf |
318 | eautoreconf |
| 321 | |
319 | |
| 322 | local myconf="" |
320 | local myconf="" |
| 323 | myconf="${myconf} --with-mysql=${S} --libdir=/usr/$(get_libdir)" |
321 | myconf="${myconf} --with-mysql=${S} --libdir=${EPREFIX}/usr/$(get_libdir)" |
| 324 | use debug && myconf="${myconf} --with-debug=full" |
322 | use debug && myconf="${myconf} --with-debug=full" |
| 325 | econf ${myconf} || die "Problem configuring PBXT storage engine" |
323 | econf ${myconf} || die "Problem configuring PBXT storage engine" |
| 326 | } |
324 | } |
| 327 | |
325 | |
| 328 | pbxt_src_compile() { |
326 | pbxt_src_compile() { |
| … | |
… | |
| 364 | |
362 | |
| 365 | # last -fPIC fixup, per bug #305873 |
363 | # last -fPIC fixup, per bug #305873 |
| 366 | i="${S}"/storage/innodb_plugin/plug.in |
364 | i="${S}"/storage/innodb_plugin/plug.in |
| 367 | [ -f "${i}" ] && sed -i -e '/CFLAGS/s,-prefer-non-pic,,g' "${i}" |
365 | [ -f "${i}" ] && sed -i -e '/CFLAGS/s,-prefer-non-pic,,g' "${i}" |
| 368 | |
366 | |
| 369 | # Additional checks, remove bundled zlib (Cluster needs this, for static |
367 | # Additional checks, remove bundled zlib |
| 370 | # memory management in zlib, leave available for Cluster) |
|
|
| 371 | if [[ "${PN}" != "mysql-cluster" ]] ; then |
|
|
| 372 | rm -f "${S}/zlib/"*.[ch] |
368 | rm -f "${S}/zlib/"*.[ch] |
| 373 | sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" |
369 | sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" |
| 374 | fi |
|
|
| 375 | rm -f "scripts/mysqlbug" |
370 | rm -f "scripts/mysqlbug" |
| 376 | |
371 | |
| 377 | # Make charsets install in the right place |
372 | # Make charsets install in the right place |
| 378 | find . -name 'Makefile.am' \ |
373 | find . -name 'Makefile.am' \ |
| 379 | -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \; |
374 | -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \; |
| … | |
… | |
| 475 | use x86 && version_is_at_least "4.3.3" "$(gcc-fullversion)" && \ |
470 | use x86 && version_is_at_least "4.3.3" "$(gcc-fullversion)" && \ |
| 476 | append-flags -fno-omit-frame-pointer && \ |
471 | append-flags -fno-omit-frame-pointer && \ |
| 477 | filter-flags -fomit-frame-pointer |
472 | filter-flags -fomit-frame-pointer |
| 478 | |
473 | |
| 479 | econf \ |
474 | econf \ |
| 480 | --libexecdir="/usr/sbin" \ |
475 | --libexecdir="${EPREFIX}/usr/sbin" \ |
| 481 | --sysconfdir="${MY_SYSCONFDIR}" \ |
476 | --sysconfdir="${MY_SYSCONFDIR}" \ |
| 482 | --localstatedir="${MY_LOCALSTATEDIR}" \ |
477 | --localstatedir="${MY_LOCALSTATEDIR}" \ |
| 483 | --sharedstatedir="${MY_SHAREDSTATEDIR}" \ |
478 | --sharedstatedir="${MY_SHAREDSTATEDIR}" \ |
| 484 | --libdir="${MY_LIBDIR}" \ |
479 | --libdir="${MY_LIBDIR}" \ |
| 485 | --includedir="${MY_INCLUDEDIR}" \ |
480 | --includedir="${MY_INCLUDEDIR}" \ |
| … | |
… | |
| 537 | dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" |
532 | dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" |
| 538 | dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize" |
533 | dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize" |
| 539 | |
534 | |
| 540 | # Various junk (my-*.cnf moved elsewhere) |
535 | # Various junk (my-*.cnf moved elsewhere) |
| 541 | einfo "Removing duplicate /usr/share/mysql files" |
536 | einfo "Removing duplicate /usr/share/mysql files" |
| 542 | rm -Rf "${D}/usr/share/info" |
537 | rm -Rf "${ED}/usr/share/info" |
| 543 | for removeme in "mysql-log-rotate" mysql.server* \ |
538 | for removeme in "mysql-log-rotate" mysql.server* \ |
| 544 | binary-configure* my-*.cnf mi_test_all* |
539 | binary-configure* my-*.cnf mi_test_all* |
| 545 | do |
540 | do |
| 546 | rm -f "${D}"/${MY_SHAREDSTATEDIR}/${removeme} |
541 | rm -f "${D}"/${MY_SHAREDSTATEDIR}/${removeme} |
| 547 | done |
542 | done |
| 548 | |
543 | |
| 549 | # Clean up stuff for a minimal build |
544 | # Clean up stuff for a minimal build |
| 550 | if use minimal ; then |
545 | if use minimal ; then |
| 551 | einfo "Remove all extra content for minimal build" |
546 | einfo "Remove all extra content for minimal build" |
| 552 | rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} |
547 | rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} |
| 553 | 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} |
548 | rm -f "${ED}"/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} |
| 554 | rm -f "${D}/usr/sbin/mysqld" |
549 | rm -f "${ED}/usr/sbin/mysqld" |
| 555 | rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a |
550 | rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a |
| 556 | fi |
551 | fi |
| 557 | |
552 | |
| 558 | # Unless they explicitly specific USE=test, then do not install the |
553 | # Unless they explicitly specific USE=test, then do not install the |
| 559 | # testsuite. It DOES have a use to be installed, esp. when you want to do a |
554 | # testsuite. It DOES have a use to be installed, esp. when you want to do a |
| … | |
… | |
| 565 | # Configuration stuff |
560 | # Configuration stuff |
| 566 | case ${MYSQL_PV_MAJOR} in |
561 | case ${MYSQL_PV_MAJOR} in |
| 567 | 5.[1-9]|6*|7*) mysql_mycnf_version="5.1" ;; |
562 | 5.[1-9]|6*|7*) mysql_mycnf_version="5.1" ;; |
| 568 | esac |
563 | esac |
| 569 | einfo "Building default my.cnf (${mysql_mycnf_version})" |
564 | einfo "Building default my.cnf (${mysql_mycnf_version})" |
| 570 | insinto "${MY_SYSCONFDIR}" |
565 | insinto "${MY_SYSCONFDIR#${EPREFIX}}" |
| 571 | doins scripts/mysqlaccess.conf |
566 | doins scripts/mysqlaccess.conf |
| 572 | mycnf_src="my.cnf-${mysql_mycnf_version}" |
567 | mycnf_src="my.cnf-${mysql_mycnf_version}" |
| 573 | sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ |
568 | sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ |
|
|
569 | -e "s!/tmp!${EPREFIX}/tmp!" \ |
|
|
570 | -e "s!/usr!${EPREFIX}/usr!" \ |
|
|
571 | -e "s!= /var!= ${EPREFIX}/var!" \ |
| 574 | "${FILESDIR}/${mycnf_src}" \ |
572 | "${FILESDIR}/${mycnf_src}" \ |
| 575 | > "${TMPDIR}/my.cnf.ok" |
573 | > "${TMPDIR}/my.cnf.ok" |
| 576 | if use latin1 ; then |
574 | if use latin1 ; then |
| 577 | sed -i \ |
575 | sed -i \ |
| 578 | -e "/character-set/s|utf8|latin1|g" \ |
576 | -e "/character-set/s|utf8|latin1|g" \ |
| … | |
… | |
| 584 | if ! use minimal ; then |
582 | if ! use minimal ; then |
| 585 | einfo "Creating initial directories" |
583 | einfo "Creating initial directories" |
| 586 | # Empty directories ... |
584 | # Empty directories ... |
| 587 | diropts "-m0750" |
585 | diropts "-m0750" |
| 588 | if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then |
586 | if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then |
| 589 | dodir "${MY_DATADIR}" |
587 | dodir "${MY_DATADIR#${EPREFIX}}" |
| 590 | keepdir "${MY_DATADIR}" |
588 | keepdir "${MY_DATADIR#${EPREFIX}}" |
| 591 | chown -R mysql:mysql "${D}/${MY_DATADIR}" |
589 | chown -R mysql:mysql "${D}/${MY_DATADIR}" |
| 592 | fi |
590 | fi |
| 593 | |
591 | |
| 594 | diropts "-m0755" |
592 | diropts "-m0755" |
| 595 | for folder in "${MY_LOGDIR}" "/var/run/mysqld" ; do |
593 | for folder in "${MY_LOGDIR#${EPREFIX}}" "/var/run/mysqld" ; do |
| 596 | dodir "${folder}" |
594 | dodir "${folder}" |
| 597 | keepdir "${folder}" |
595 | keepdir "${folder}" |
| 598 | chown -R mysql:mysql "${D}/${folder}" |
596 | chown -R mysql:mysql "${ED}/${folder}" |
| 599 | done |
597 | done |
| 600 | fi |
598 | fi |
| 601 | |
599 | |
| 602 | # Docs |
600 | # Docs |
| 603 | einfo "Installing docs" |
601 | einfo "Installing docs" |
| … | |
… | |
| 623 | [[ -f "$script" ]] && [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" |
621 | [[ -f "$script" ]] && [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" |
| 624 | done |
622 | done |
| 625 | |
623 | |
| 626 | fi |
624 | fi |
| 627 | |
625 | |
| 628 | mysql_lib_symlinks "${D}" |
626 | mysql_lib_symlinks "${ED}" |
| 629 | } |
627 | } |