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

Diff of /eclass/mysql-autotools.eclass

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

Revision 1.1 Revision 1.9
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.9 2012/06/07 22:06:04 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
20inherit autotools 20inherit autotools flag-o-matic 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
158mysql-autotools_configure_51() { 158mysql-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
328pbxt_src_compile() { 326pbxt_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}

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.20