summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Longinotti <chtekk@gentoo.org>2006-05-05 19:49:43 +0000
committerLuca Longinotti <chtekk@gentoo.org>2006-05-05 19:49:43 +0000
commit7081b180c9398572d5c576d752a9d50d6a63989d (patch)
treeedaf8ce2efe3a9cd31f297d2727cda1b191ba4ed /eclass/mysql.eclass
parentChange MySQL utf8 USE to latin1. (diff)
downloadhistorical-7081b180c9398572d5c576d752a9d50d6a63989d.tar.gz
historical-7081b180c9398572d5c576d752a9d50d6a63989d.tar.bz2
historical-7081b180c9398572d5c576d752a9d50d6a63989d.zip
Sync with overlay.
Diffstat (limited to 'eclass/mysql.eclass')
-rw-r--r--eclass/mysql.eclass465
1 files changed, 243 insertions, 222 deletions
diff --git a/eclass/mysql.eclass b/eclass/mysql.eclass
index 7baa7ecef385..efc74659c2a5 100644
--- a/eclass/mysql.eclass
+++ b/eclass/mysql.eclass
@@ -1,59 +1,69 @@
-# Copyright 1999-2005 Gentoo Foundation
+# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.29 2006/04/12 21:15:17 chtekk Exp $
-# $ID: $
-
-# Author: Francesco Riosa <vivo at gentoo.org>
-# Maintainer: Luca Longinotti <chtekk at gentoo.org>
-
-# MYSQL_VERSION_ID will be
-# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo magic number, all [0..99]
-# this is an important piece, becouse from this variable depends many of the
-# choices the ebuild will do.
-# in particular the code below work only with PVR like "5.0.18-r3"
-# the result with the previous PVR is "5001803"
-if [[ -z ${MYSQL_VERSION_ID} ]] ; then
+# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.30 2006/05/05 19:49:43 chtekk Exp $
+
+# Author: Francesco Riosa <vivo@gentoo.org>
+# Maintainer: Luca Longinotti <chtekk@gentoo.org>
+
+# Both MYSQL_VERSION_ID and MYSQL_PATCHSET_REV must be set in the ebuild too
+# Note that MYSQL_VERSION_ID must be empty !!!
+
+# MYSQL_VERSION_ID will be:
+# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo revision number, all [0..99]
+# This is an important part, because many of the choices the MySQL ebuild will do
+# depend on this variable.
+# In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803"
+
+if [[ -z "${MYSQL_VERSION_ID}" ]] ; then
tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
- for vatom in 0 1 2 3; do
- # pad to lenght 2
+ for vatom in 0 1 2 3 ; do
+ # pad to length 2
tpv[${vatom}]="00${tpv[${vatom}]}"
MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
done
- # strip leading "0" (otherwise it's considered an octal number from bash)
+ # strip leading "0" (otherwise it's considered an octal number by BASH)
MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
fi
-[[ -z ${MY_EXTRAS_VER} ]] && MY_EXTRAS_VER="20060411"
-
DEPEND="${DEPEND}
- >=sys-libs/readline-4.1
- berkdb? ( sys-apps/ed )
- ssl? ( >=dev-libs/openssl-0.9.6d )
- userland_GNU? ( sys-process/procps )
- >=sys-libs/zlib-1.2.3
- >=sys-apps/texinfo-4.7-r1
- >=sys-apps/sed-4"
+ >=sys-libs/readline-4.1
+ berkdb? ( sys-apps/ed )
+ ssl? ( >=dev-libs/openssl-0.9.6d )
+ userland_GNU? ( sys-process/procps )
+ >=sys-libs/zlib-1.2.3
+ >=sys-apps/texinfo-4.7-r1
+ >=sys-apps/sed-4"
+
RDEPEND="${DEPEND} selinux? ( sec-policy/selinux-mysql )"
+
# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
inherit eutils flag-o-matic gnuconfig autotools mysql_fx
-SLOT=0
-
-# shorten the path because the socket path length must be shorter than 107 chars
+# Shorten the path because the socket path length must be shorter than 107 chars
# and we will run a mysql server during test phase
S="${WORKDIR}/${PN}"
-DESCRIPTION="A fast, multi-threaded, multi-user SQL database server"
+# Define $MY_FIXED_PV for MySQL patchsets
+MY_FIXED_PV="${PV/_alpha/}"
+MY_FIXED_PV="${MY_FIXED_PV/_beta/}"
+MY_FIXED_PV="${MY_FIXED_PV/_rc/}"
+
+# Define correct SRC_URIs
+SRC_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/${P/_/-}.tar.gz"
+[[ -n "${MYSQL_PATCHSET_REV}" ]] && SRC_URI="${SRC_URI} http://gentoo.longitekk.com/${PN}-patchset-${MY_FIXED_PV}-r${MYSQL_PATCHSET_REV}.tar.bz2"
+
+DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
HOMEPAGE="http://www.mysql.com/"
-NEWP="${P/_/-}"
-SRC_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/${NEWP}.tar.gz
- mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
+SLOT="0"
LICENSE="GPL-2"
IUSE="big-tables berkdb debug embedded minimal perl selinux srvdir ssl static"
RESTRICT="primaryuri confcache"
+mysql_version_is_at_least "4.01.00.00" \
+&& IUSE="${IUSE} latin1"
+
mysql_version_is_at_least "4.01.03.00" \
&& IUSE="${IUSE} cluster extraengine"
@@ -67,28 +77,28 @@ mysql_version_is_at_least "5.01.00.00" \
&& IUSE="${IUSE} innodb"
EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
- pkg_postinst pkg_config pkg_postrm
+ pkg_postinst pkg_config pkg_postrm
# void mysql_init_vars()
#
-# initialize global variables
-# 2005-11-19 <vivo at gentoo.org>
-mysql_init_vars() {
+# Initialize global variables
+# 2005-11-19 <vivo@gentoo.org>
- MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql"}
+mysql_init_vars() {
+ MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"}
MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"}
MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"}
MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"}
- if [ -z "${DATADIR}" ]; then
+ if [[ -z "${DATADIR}" ]] ; then
DATADIR=""
- if [ -f "${MY_SYSCONFDIR}/my.cnf" ] ; then
+ if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
| sed -ne '/datadir/s|^--datadir=||p' \
| tail -n1`
- if [ -z "${DATADIR}" ]; then
+ if [[ -z "${DATADIR}" ]] ; then
if useq "srvdir" ; then
DATADIR="${ROOT}/srv/localhost/mysql/datadir"
else
@@ -97,7 +107,7 @@ mysql_init_vars() {
fi
fi
fi
- if [ -z "${DATADIR}" ]; then
+ if [[ -z "${DATADIR}" ]] ; then
if useq "srvdir" ; then
DATADIR="${ROOT}/srv/localhost/mysql/datadir"
else
@@ -107,16 +117,15 @@ mysql_init_vars() {
fi
einfo "MySQL DATADIR is ${DATADIR}"
- if [ -z "${PREVIOUS_DATADIR}" ] ; then
- if [ -a "${DATADIR}" ] ; then
+ if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
+ if [[ -e "${DATADIR}" ]] ; then
ewarn "Previous datadir found, it's YOUR job to change"
- ewarn "ownership and have care of it"
+ ewarn "ownership and take care of it"
PREVIOUS_DATADIR="yes"
- export PREVIOUS_DATADIR
else
PREVIOUS_DATADIR="no"
- export PREVIOUS_DATADIR
fi
+ export PREVIOUS_DATADIR
fi
fi
@@ -127,62 +136,67 @@ mysql_init_vars() {
}
mysql_pkg_setup() {
+ enewgroup mysql 60 || die "problem adding 'mysql' group"
+ enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
- enewgroup mysql 60 || die "problem adding group mysql"
- enewuser mysql 60 -1 /dev/null mysql \
- || die "problem adding user mysql"
-}
-
-mysql_src_unpack() {
-
- mysql_init_vars
-
+ # Check for USE flag problems in pkg_setup
if useq "static" && useq "ssl" ; then
- local msg="MySQL does not support building statically with SSL support"
- eerror "${msg}"
- die "${msg}"
+ eerror "MySQL does not support being built statically with SSL support enabled!"
+ die "MySQL does not support being built statically with SSL support enabled!"
+ fi
+
+ if ! mysql_version_is_at_least "5.00.00.00" \
+ && useq "raid" \
+ && useq "static" ; then
+ eerror "USE flags 'raid' and 'static' conflict, you cannot build MySQL statically"
+ eerror "with RAID support enabled."
+ die "USE flags 'raid' and 'static' conflict!"
fi
if mysql_version_is_at_least "4.01.03.00" \
- && useq "cluster" \
- || useq "extraengine" \
+ && ( useq "cluster" || useq "extraengine" ) \
&& useq "minimal" ; then
- die "USEs cluster, extraengine conflicts with \"minimal\""
+ eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
+ die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
fi
+}
- unpack ${A} || die
+mysql_src_unpack() {
+ # Initialize the proper variables first
+ mysql_init_vars
- mv -f "${WORKDIR}/${NEWP}" "${S}"
+ unpack ${A}
+
+ mv -f "${WORKDIR}/${P/_/-}" "${S}"
cd "${S}"
- EPATCH_SUFFIX="patch"
- mkdir -p "${EPATCH_SOURCE}" || die "unable to create epatch directory"
- mysql_mv_patches
- epatch || die "failed to apply all patches"
+ # Apply the patches for this MySQL version
+ if [[ -d "${WORKDIR}/${MY_FIXED_PV}" ]] ; then
+ EPATCH_SOURCE="${WORKDIR}/${MY_FIXED_PV}" EPATCH_SUFFIX="patch" epatch
+ fi
- # additional check, remove bundled zlib
+ # Additional checks, remove bundled zlib
rm -f "${S}/zlib/"*.[ch]
sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
- rm -f scripts/mysqlbug
+ rm -f "scripts/mysqlbug"
# Make charsets install in the right place
- find . -name 'Makefile.am' \
- -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
+ find . -name 'Makefile.am' -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
# Manage mysqlmanager
mysql_version_is_at_least "5.00.15.00" \
- && sed -i -e "s!@GENTOO_EXT@!!g" \
- -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" \
- "${S}/server-tools/instance-manager/Makefile.am"
-
- # remove what need to be recreated, so we are sure it's actually done
- find . -name Makefile \
- -o -name Makefile.in \
- -o -name configure \
- -exec rm -f {} \;
- rm ltmain.sh
+ && sed -i -e "s!@GENTOO_EXT@!!g" -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" "${S}/server-tools/instance-manager/Makefile.am"
+
+ if mysql_version_is_at_least "4.01.00.00" ; then
+ # Remove what needs to be recreated, so we're sure it's actually done
+ find . -name Makefile \
+ -o -name Makefile.in \
+ -o -name configure \
+ -exec rm -f {} \;
+ rm -f "ltmain.sh"
+ fi
- local rebuilddirlist d buildstep bdbdir
+ local rebuilddirlist bdbdir d
if mysql_version_is_at_least "5.01.00.00" ; then
rebuilddirlist=". storage/innobase"
@@ -192,29 +206,30 @@ mysql_src_unpack() {
bdbdir='bdb/dist'
fi
- for d in ${rebuilddirlist}; do
- einfo "reconfiguring dir \"${d}\""
+ for d in ${rebuilddirlist} ; do
+ einfo "Reconfiguring dir '${d}'"
pushd "${d}" &>/dev/null
AT_GNUCONF_UPDATE="yes" eautoreconf
popd &>/dev/null
done
- #TODO berkdb in 5.1 need to be worked on
- if useq "berkdb" && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99"
- then
- [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f ltmain.sh "${bdbdir}/ltmain.sh"
+ # TODO: berkdb in MySQL 5.1 needs to be worked on
+ if useq "berkdb" \
+ && ! mysql_check_version_range "4.00.00.00 to 4.00.99.99" \
+ && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
+ [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f "ltmain.sh" "${bdbdir}/ltmain.sh"
pushd "${bdbdir}" \
- && sh s_all \
- || die "failed bdb reconfigure" \
- &>/dev/null
+ && sh s_all \
+ || die "Failed bdb reconfigure" \
+ &>/dev/null
popd &>/dev/null
fi
-
}
mysql_src_compile() {
-
+ # Make sure the vars are correctly initialized
mysql_init_vars
+
local myconf
if useq "static" ; then
@@ -225,7 +240,6 @@ mysql_src_compile() {
myconf="${myconf} --enable-shared --enable-static"
fi
- #myconf="${myconf} `use_with tcpd libwrap`"
myconf="${myconf} --without-libwrap"
if useq "ssl" ; then
@@ -233,8 +247,8 @@ mysql_src_compile() {
# has been removed from configure
mysql_version_is_at_least "5.00.04.00" || myconf="${myconf} --with-vio"
if mysql_version_is_at_least "5.00.06.00" ; then
- # yassl-0.96 is young break with gcc-4.0 || amd64
- #myconf="${myconf} --with-yassl"
+ # yassl-0.96 is still young and breaks with GCC-4.X or amd64
+ # myconf="${myconf} --with-yassl"
myconf="${myconf} --with-openssl"
else
myconf="${myconf} --with-openssl"
@@ -243,36 +257,33 @@ mysql_src_compile() {
myconf="${myconf} --without-openssl"
fi
- if useq "debug"; then
+ if useq "debug" ; then
myconf="${myconf} --with-debug=full"
else
myconf="${myconf} --without-debug"
- mysql_version_is_at_least "4.01.03.00" \
- && useq "cluster" \
+
+ mysql_version_is_at_least "4.01.03.00" && useq "cluster" \
&& myconf="${myconf} --without-ndb-debug"
fi
- # these are things we exclude from a minimal build
- # note that the server actually does get built and installed
- # but we then delete it before packaging.
+ # These are things we exclude from a minimal build.
+ # Note that the server actually does get built and installed,
+ # but we then delete it.
local minimal_exclude_list="server embedded-server extra-tools innodb bench"
if ! useq "minimal" ; then
myconf="${myconf} --with-server"
myconf="${myconf} --with-extra-tools"
- if useq "static" ; then
- myconf="${myconf} --without-raid"
- ewarn "disabling raid support, has problem with static"
- else
- if mysql_version_is_at_least "5.00.00.00" ; then
- myconf="${myconf} --without-raid"
+ if ! mysql_version_is_at_least "5.00.00.00" ; then
+ if useq "raid" ; then
+ myconf="${myconf} --with-raid"
else
- myconf="${myconf} `use_with raid`"
+ myconf="${myconf} --without-raid"
fi
fi
- if mysql_version_is_at_least "4.01.00.00" ; then
+ if mysql_version_is_at_least "4.01.00.00" && ! useq "latin1" ; then
myconf="${myconf} --with-charset=utf8"
myconf="${myconf} --with-collation=utf8_general_ci"
else
@@ -280,116 +291,122 @@ mysql_src_compile() {
myconf="${myconf} --with-collation=latin1_swedish_ci"
fi
- # optional again from 2005-12-05
+ # Optional again with MySQL 5.1
if mysql_version_is_at_least "5.01.00.00" ; then
- myconf="${myconf} $(use_with innodb)"
- else
- myconf="${myconf} --with-innodb"
+ if useq "innodb" ; then
+ myconf="${myconf} --with-innodb"
+ else
+ myconf="${myconf} --without-innodb"
+ fi
fi
- # lots of chars
+ # Lots of charsets
myconf="${myconf} --with-extra-charsets=all"
- #The following fix is due to a bug with bdb on sparc's. See:
- #http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
- # it comes down to non-64-bit safety problems
- if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" \
- || useq "amd64" || mysql_check_version_range "5.01.00.00 to 5.01.06.99"
- then
- ewarn "bdb berkeley-db disabled due to arch or version"
+ # The following fix is due to a bug with bdb on SPARC's. See:
+ # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
+ # It comes down to non-64-bit safety problems.
+ if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" || useq "amd64" ; then
+ ewarn "bdb berkeley-db disabled due to incompatible arch"
myconf="${myconf} --without-berkeley-db"
else
- #TODO berkdb in 5.1 need to be worked on
- useq "berkdb" && \
- ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" \
- && myconf="${myconf} --with-berkeley-db=./bdb" \
- || myconf="${myconf} --without-berkeley-db"
+ # TODO: berkdb in MySQL 5.1 needs to be worked on
+ if useq "berkdb" && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
+ myconf="${myconf} --with-berkeley-db=./bdb"
+ else
+ myconf="${myconf} --without-berkeley-db"
+ fi
fi
if mysql_version_is_at_least "4.01.03.00" ; then
- #myconf="${myconf} $(use_with geometry)"
myconf="${myconf} --with-geometry"
- myconf="${myconf} $(use_with cluster ndbcluster)"
+
+ if useq "cluster" ; then
+ myconf="${myconf} --with-ndbcluster"
+ else
+ myconf="${myconf} --without-ndbcluster"
+ fi
fi
- mysql_version_is_at_least "4.01.11.00" \
- && myconf="${myconf} `use_with big-tables`"
+ if useq "big-tables" ; then
+ myconf="${myconf} --with-big-tables"
+ else
+ myconf="${myconf} --without-big-tables"
+ fi
mysql_version_is_at_least "5.01.06.00" \
&& myconf="${myconf} --with-ndb-binlog"
if useq "embedded" ; then
- #REMIND, need the privilege control enabled ?
- myconf="${myconf} --without-embedded-privilege-control"
+ myconf="${myconf} --with-embedded-privilege-control"
myconf="${myconf} --with-embedded-server"
else
myconf="${myconf} --without-embedded-privilege-control"
myconf="${myconf} --without-embedded-server"
fi
- # benchmarking stuff needs perl
+ # Benchmarking stuff needs Perl
if useq "perl" ; then
myconf="${myconf} --with-bench"
else
myconf="${myconf} --without-bench"
fi
else
- for i in ${minimal_exclude_list}; do
+ for i in ${minimal_exclude_list} ; do
myconf="${myconf} --without-${i}"
done
myconf="${myconf} --without-berkeley-db"
myconf="${myconf} --with-extra-charsets=none"
fi
- if mysql_version_is_at_least "4.01.03.00" && useq "extraengine"; then
+ if mysql_version_is_at_least "4.01.03.00" && useq "extraengine" ; then
# http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
myconf="${myconf} --with-archive-storage-engine"
- # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
- mysql_version_is_at_least "4.01.04.00" \
- && myconf="${myconf} --with-csv-storage-engine"
+ # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
+ myconf="${myconf} --with-csv-storage-engine"
- mysql_version_is_at_least "4.01.11.00" \
- && myconf="${myconf} --with-blackhole-storage-engine"
+ # http://dev.mysql.com/doc/mysql/en/blackhole-storage-engine.html
+ myconf="${myconf} --with-blackhole-storage-engine"
+ # http://dev.mysql.com/doc/mysql/en/federated-storage-engine.html
# http://dev.mysql.com/doc/mysql/en/federated-description.html
# http://dev.mysql.com/doc/mysql/en/federated-limitations.html
if mysql_version_is_at_least "5.00.03.00" ; then
- einfo "before to use federated engine be sure to read"
- einfo "http://dev.mysql.com/doc/refman/5.0/en/federated-limitations.html"
+ einfo "Before using the Federated storage engine, please be sure to read"
+ einfo "http://dev.mysql.com/doc/mysql/en/federated-limitations.html"
myconf="${myconf} --with-federated-storage-engine"
-
- # http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html
- if mysql_version_is_at_least "5.01.00.00" ; then
- myconf="${myconf} --with-partition"
- fi
fi
+ # http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html
+ if mysql_version_is_at_least "5.01.00.00" ; then
+ myconf="${myconf} --with-partition"
+ fi
fi
mysql_version_is_at_least "5.00.18.00" \
&& useq "max-idx-128" \
&& myconf="${myconf} --with-max-indexes=128"
- if mysql_version_is_at_least "5.01.05.00" ; then
- myconf="${myconf} --with-row-based-replication"
- fi
+ mysql_version_is_at_least "5.01.05.00" \
+ && myconf="${myconf} --with-row-based-replication"
- #TODO rechek again later, had problem with assembler enabled
- # and some combination of use-flags with 5.1
+ # TODO: Rechek again later, there were problems with assembler enabled
+ # and some combination of USE flags with MySQL 5.1
if mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
myconf="${myconf} --disable-assembler"
else
myconf="${myconf} --enable-assembler"
fi
- #Bug #114895,Bug #110149
+ # Bug #114895, bug #110149
filter-flags "-O" "-O[01]"
- #glibc-2.3.2_pre fix; bug #16496
+
+ # glib-2.3.2_pre fix, bug #16496
append-flags "-DHAVE_ERRNO_AS_DEFINE=1"
- #the compiler flags are as per their "official" spec ;)
- #CFLAGS="${CFLAGS/-O?/} -O3" \
+ # The compiler flags are as their "official" spec says ;)
+ # CFLAGS="${CFLAGS/-O?/} -O3"
export CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-exceptions -fno-rtti"
mysql_version_is_at_least "5.00.00.00" \
&& export CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
@@ -412,7 +429,7 @@ mysql_src_compile() {
--without-docs \
${myconf} || die "bad ./configure"
- # TODO Move this before autoreconf !!!
+ # TODO: Move this before autoreconf !!!
find . -type f -name Makefile -print0 \
| xargs -0 -n100 sed -i \
-e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
@@ -421,60 +438,65 @@ mysql_src_compile() {
}
mysql_src_install() {
-
+ # Make sure the vars are correctly initialized
mysql_init_vars
- make install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die
+
+ make install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "make install error"
insinto "${MY_INCLUDEDIR}"
doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
- # convenience links
+ # Convenience links
dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
- # various junk (my-*.cnf moved elsewhere)
- rm -rf "${D}/usr/share/info"
- for removeme in "mysql-log-rotate" mysql.server* \
- binary-configure* my-*.cnf mi_test_all*
- do
- rm -f ${D}/usr/share/mysql/${removeme}
+ # Various junk (my-*.cnf moved elsewhere)
+ rm -Rf "${D}/usr/share/info"
+ for removeme in "mysql-log-rotate" mysql.server* binary-configure* my-*.cnf mi_test_all* ; do
+ rm -f "${D}"/usr/share/mysql/${removeme}
done
- # clean up stuff for a minimal build
- # this is anything server-specific
+ # Clean up stuff for a minimal build
if useq "minimal" ; then
- rm -rf ${D}${MY_SHAREDSTATEDIR}/{mysql-test,sql-bench}
- 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}
+ rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench}
+ 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}
rm -f "${D}/usr/sbin/mysqld"
- rm -f ${D}${MY_LIBDIR}/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
+ rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
fi
- # config stuff
+ # Configuration stuff
+ if mysql_version_is_at_least "4.01.00.00" ; then
+ mysql_mycnf_version="4.1"
+ else
+ mysql_mycnf_version="4.0"
+ fi
insinto "${MY_SYSCONFDIR}"
- doins scripts/mysqlaccess.conf
- sed -e "s!@MY_SUFFIX@!!g" \
- -e "s!@DATADIR@!${DATADIR}!g" \
- "${FILESDIR}/my.cnf-4.1-r1" \
+ doins "scripts/mysqlaccess.conf"
+ sed -e "s!@DATADIR@!${DATADIR}!g" \
+ "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \
> "${TMPDIR}/my.cnf.ok"
+ if mysql_version_is_at_least "4.01.00.00" && useq "latin1" ; then
+ sed -e "s|utf8|latin1|g" -i "${TMPDIR}/my.cnf.ok"
+ fi
newins "${TMPDIR}/my.cnf.ok" my.cnf
insinto "/etc/conf.d"
- newins "${FILESDIR}/mysql.conf.d-r1" "mysql"
+ newins "${FILESDIR}/mysql.conf.d" "mysql"
mysql_version_is_at_least "5.00.11.00" \
&& newins "${FILESDIR}/mysqlmanager.conf.d" "mysqlmanager"
- # minimal builds don't have the server
+ # Minimal builds don't have the MySQL server
if ! useq "minimal" ; then
- exeinto /etc/init.d
- newexe "${FILESDIR}/mysql.rc6-r3" "mysql"
-
+ exeinto "/etc/init.d"
+ newexe "${FILESDIR}/mysql.rc6" "mysql"
mysql_version_is_at_least "5.00.11.00" \
&& newexe "${FILESDIR}/mysqlmanager.rc6" "mysqlmanager"
- insinto /etc/logrotate.d
+
+ insinto "/etc/logrotate.d"
newins "${FILESDIR}/logrotate.mysql" "mysql"
- #empty dirs...
+ # Empty directories ...
diropts "-m0750"
if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
dodir "${DATADIR}"
@@ -490,9 +512,10 @@ mysql_src_install() {
done
fi
- # docs
+ # Docs
dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
- # minimal builds don't have the server
+
+ # Minimal builds don't have the MySQL server
if ! useq "minimal" ; then
docinto "support-files"
for script in \
@@ -513,42 +536,41 @@ mysql_src_install() {
}
mysql_pkg_preinst() {
-
- enewgroup mysql 60 || die "problem adding group mysql"
- enewuser mysql 60 -1 /dev/null mysql \
- || die "problem adding user mysql"
+ enewgroup mysql 60 || die "problem adding 'mysql' group"
+ enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
}
mysql_pkg_postinst() {
-
+ # Make sure the vars are correctly initialized
mysql_init_vars
- # mind at FEATURES=collision-protect before to remove this
- [ -d "${ROOT}/var/log/mysql" ] \
- || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
+ # Check FEATURES="collision-protect" before removing this
+ [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
- #secure the logfiles... does this bother anybody?
+ # Secure the logfiles
touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
if ! useq "minimal" ; then
- # your friendly public service announcement...
+ # Your friendly public service announcement ...
einfo
einfo "You might want to run:"
einfo "\"emerge --config =${CATEGORY}/${PF}\""
einfo "if this is a new install."
einfo
mysql_version_is_at_least "5.01.00.00" \
- || einfo "InnoDB is not optional as of MySQL-4.0.24, at the request of upstream."
+ || einfo "InnoDB is *not* optional as of MySQL-4.0.24, at the request of upstream."
fi
}
mysql_pkg_config() {
+ # Make sure the vars are correctly initialized
mysql_init_vars
- [[ -z "${DATADIR}" ]] && die "sorry, unable to find DATADIR"
- if built_with_use dev-db/mysql minimal; then
+ [[ -z "${DATADIR}" ]] && die "Sorry, unable to find DATADIR"
+
+ if built_with_use dev-db/mysql minimal ; then
die "Minimal builds do NOT include the MySQL server"
fi
@@ -564,13 +586,13 @@ mysql_pkg_config() {
fi
einfo "Creating the mysql database and setting proper"
- einfo "permissions on it..."
+ einfo "permissions on it ..."
einfo "Insert a password for the mysql 'root' user"
ewarn "Avoid [\"'\\_%] characters in the password"
-
read -rsp " >" pwd1 ; echo
- einfo "Check the password"
+
+ einfo "Retype the password"
read -rsp " >" pwd2 ; echo
if [[ "x$pwd1" != "x$pwd2" ]] ; then
@@ -580,35 +602,34 @@ mysql_pkg_config() {
local options=""
local sqltmp="$(emktemp)"
- local help_tables="${MY_SHAREDSTATEDIR}/fill_help_tables.sql"
+ local help_tables="${ROOT}${MY_SHAREDSTATEDIR}/fill_help_tables.sql"
[[ -r "${help_tables}" ]] \
&& cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
|| touch "${TMPDIR}/fill_help_tables.sql"
help_tables="${TMPDIR}/fill_help_tables.sql"
pushd "${TMPDIR}" &>/dev/null
- ${ROOT}/usr/bin/mysql_install_db | grep -B5 -A999 -i "ERROR"
+ "${ROOT}/usr/bin/mysql_install_db" | grep -B5 -A999 -i "ERROR"
popd &>/dev/null
- [[ -f ${ROOT}/${DATADIR}/mysql/user.frm ]] \
+ [[ -f "${ROOT}/${DATADIR}/mysql/user.frm" ]] \
|| die "MySQL databases not installed"
- chown -R mysql:mysql ${ROOT}/${DATADIR} 2> /dev/null
- chmod 0750 ${ROOT}/${DATADIR} 2> /dev/null
+ chown -R mysql:mysql "${ROOT}/${DATADIR}" 2> /dev/null
+ chmod 0750 "${ROOT}/${DATADIR}" 2> /dev/null
if mysql_version_is_at_least "4.01.03.00" ; then
options="--skip-ndbcluster"
# Filling timezones, see
# http://dev.mysql.com/doc/mysql/en/time-zone-support.html
- ${ROOT}/usr/bin/mysql_tzinfo_to_sql ${ROOT}/usr/share/zoneinfo \
- > "${sqltmp}" 2>/dev/null
+ "${ROOT}/usr/bin/mysql_tzinfo_to_sql" "${ROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null
if [[ -r "${help_tables}" ]] ; then
cat "${help_tables}" >> "${sqltmp}"
fi
fi
- local socket=${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock
- local pidfile=${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid
+ local socket="${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock"
+ local pidfile="${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid"
local mysqld="${ROOT}/usr/sbin/mysqld \
${options} \
--user=mysql \
@@ -622,35 +643,35 @@ mysql_pkg_config() {
--net_buffer_length=16K \
--socket=${socket} \
--pid-file=${pidfile}"
- $mysqld &
+ ${mysqld} &
while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
- maxtry=$(($maxtry-1))
+ maxtry=$((${maxtry}-1))
echo -n "."
sleep 1
done
- # do this from memory we don't want clear text password in temp files
+ # Do this from memory, as we don't want clear text passwords in temp files
local sql="UPDATE mysql.user SET Password = PASSWORD('${pwd1}') WHERE USER='root'"
- ${ROOT}/usr/bin/mysql \
+ "${ROOT}/usr/bin/mysql" \
--socket=${socket} \
-hlocalhost \
-e "${sql}"
- einfo "Loading \"zoneinfo\" this step may require few seconds"
+ einfo "Loading \"zoneinfo\", this step may require a few seconds ..."
- ${ROOT}/usr/bin/mysql \
+ "${ROOT}/usr/bin/mysql" \
--socket=${socket} \
-hlocalhost \
-uroot \
-p"${pwd1}" \
mysql < "${sqltmp}"
- # server stop and cleanup
+ # Stop the server and cleanup
kill $(< "${pidfile}" )
- rm "${sqltmp}"
- einfo "stopping the server,"
+ rm -f "${sqltmp}"
+ einfo "Stopping the server ..."
wait %1
- einfo "done"
+ einfo "Done"
}
mysql_pkg_postrm() {