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

Diff of /eclass/mysql.eclass

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

Revision 1.30 Revision 1.43
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.30 2006/05/05 19:49:43 chtekk Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.43 2006/10/23 12:26:45 vivo 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/}"
50MY_FIXED_PV="${MY_FIXED_PV/_beta/}" 52#MY_FIXED_PV="${MY_FIXED_PV/_beta/}"
51MY_FIXED_PV="${MY_FIXED_PV/_rc/}" 53#MY_FIXED_PV="${MY_FIXED_PV/_rc/}"
54
55MY_P="${P/_/-}"
56MY_P="${MY_P/-alpha/-bk-}" # BitKeeper ebuilds
52 57
53# Define correct SRC_URIs 58# Define correct SRC_URIs
54SRC_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/${P/_/-}.tar.gz" 59SRC_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/${MY_P}${MYSQL_RERELEASE}.tar.gz"
55[[ -n "${MYSQL_PATCHSET_REV}" ]] && SRC_URI="${SRC_URI} http://gentoo.longitekk.com/${PN}-patchset-${MY_FIXED_PV}-r${MYSQL_PATCHSET_REV}.tar.bz2" 60if [[ -n "${MYSQL_PATCHSET_REV}" ]] ; then
61 MYSQL_PATCHSET_FILENAME="${PN}-patchset-${MY_FIXED_PV}-r${MYSQL_PATCHSET_REV}.tar.bz2"
62 # We add the Gentoo mirror here, as we only use primaryuri for the MySQL tarball
63 SRC_URI="${SRC_URI} http://gentoo.longitekk.com/${MYSQL_PATCHSET_FILENAME}"
64fi
56 65
57DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." 66DESCRIPTION="A fast, multi-threaded, multi-user SQL database server."
58HOMEPAGE="http://www.mysql.com/" 67HOMEPAGE="http://www.mysql.com/"
59SLOT="0" 68SLOT="0"
60LICENSE="GPL-2" 69LICENSE="GPL-2"
61IUSE="big-tables berkdb debug embedded minimal perl selinux srvdir ssl static" 70IUSE="big-tables debug embedded minimal perl selinux srvdir ssl static"
62RESTRICT="primaryuri confcache" 71RESTRICT="confcache"
63 72
64mysql_version_is_at_least "4.01.00.00" \ 73mysql_version_is_at_least "4.01.00.00" \
65&& IUSE="${IUSE} latin1" 74&& IUSE="${IUSE} latin1"
66 75
67mysql_version_is_at_least "4.01.03.00" \ 76mysql_version_is_at_least "4.01.03.00" \
74&& IUSE="${IUSE} max-idx-128" 83&& IUSE="${IUSE} max-idx-128"
75 84
76mysql_version_is_at_least "5.01.00.00" \ 85mysql_version_is_at_least "5.01.00.00" \
77&& IUSE="${IUSE} innodb" 86&& IUSE="${IUSE} innodb"
78 87
88mysql_version_is_at_least "5.01.00.00" \
89|| IUSE="${IUSE} berkdb"
90
79EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ 91EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
80 pkg_postinst pkg_config pkg_postrm 92 pkg_postinst pkg_config pkg_postrm
93
94#
95# HELPER FUNCTIONS:
96#
81 97
82# void mysql_init_vars() 98# void mysql_init_vars()
83# 99#
84# Initialize global variables 100# Initialize global variables
85# 2005-11-19 <vivo@gentoo.org> 101# 2005-11-19 <vivo@gentoo.org>
113 else 129 else
114 DATADIR="${MY_LOCALSTATEDIR}" 130 DATADIR="${MY_LOCALSTATEDIR}"
115 fi 131 fi
116 einfo "Using default DATADIR" 132 einfo "Using default DATADIR"
117 fi 133 fi
118 einfo "MySQL DATADIR is ${DATADIR}" 134 elog "MySQL DATADIR is ${DATADIR}"
119 135
120 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then 136 if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
121 if [[ -e "${DATADIR}" ]] ; then 137 if [[ -e "${DATADIR}" ]] ; then
122 ewarn "Previous datadir found, it's YOUR job to change" 138 elog "Previous datadir found, it's YOUR job to change"
123 ewarn "ownership and take care of it" 139 elog "ownership and take care of it"
124 PREVIOUS_DATADIR="yes" 140 PREVIOUS_DATADIR="yes"
125 else 141 else
126 PREVIOUS_DATADIR="no" 142 PREVIOUS_DATADIR="no"
127 fi 143 fi
128 export PREVIOUS_DATADIR 144 export PREVIOUS_DATADIR
133 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 149 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
134 export MY_INCLUDEDIR 150 export MY_INCLUDEDIR
135 export DATADIR 151 export DATADIR
136} 152}
137 153
154configure_minimal() {
155 # These are things we exclude from a minimal build, please
156 # note that the server actually does get built and installed,
157 # but we then delete it before packaging.
158 local minimal_exclude_list="server embedded-server extra-tools innodb bench berkeley-db row-based-replication"
159
160 for i in ${minimal_exclude_list} ; do
161 myconf="${myconf} --without-${i}"
162 done
163 myconf="${myconf} --with-extra-charsets=none"
164}
165
166configure_common() {
167 myconf="${myconf} $(use_with big-tables)"
168 myconf="${myconf} --enable-local-infile"
169 myconf="${myconf} --with-extra-charsets=all"
170 myconf="${myconf} --with-mysqld-user=mysql"
171 myconf="${myconf} --with-server"
172 myconf="${myconf} --with-unix-socket-path=/var/run/mysqld/mysqld.sock"
173 myconf="${myconf} --without-libwrap"
174
175 if useq "static" ; then
176 myconf="${myconf} --with-mysqld-ldflags=-all-static"
177 myconf="${myconf} --with-client-ldflags=-all-static"
178 myconf="${myconf} --disable-shared"
179 else
180 myconf="${myconf} --enable-shared --enable-static"
181 fi
182
183 if useq "debug" ; then
184 myconf="${myconf} --with-debug=full"
185 else
186 myconf="${myconf} --without-debug"
187 mysql_version_is_at_least "4.01.03.00" \
188 && useq "cluster" \
189 && myconf="${myconf} --without-ndb-debug"
190 fi
191
192 if mysql_version_is_at_least "4.01.00.00" && ! useq "latin1" ; then
193 myconf="${myconf} --with-charset=utf8"
194 myconf="${myconf} --with-collation=utf8_general_ci"
195 else
196 myconf="${myconf} --with-charset=latin1"
197 myconf="${myconf} --with-collation=latin1_swedish_ci"
198 fi
199
200 if useq "embedded" ; then
201 myconf="${myconf} --with-embedded-privilege-control"
202 myconf="${myconf} --with-embedded-server"
203 else
204 myconf="${myconf} --without-embedded-privilege-control"
205 myconf="${myconf} --without-embedded-server"
206 fi
207
208}
209
210configure_40_41_50() {
211 myconf="${myconf} $(use_with perl bench)"
212 myconf="${myconf} --enable-assembler"
213 myconf="${myconf} --with-extra-tools"
214 myconf="${myconf} --with-innodb"
215 myconf="${myconf} --without-readline"
216 mysql_version_is_at_least "5.00.00.00" || myconf="${myconf} $(use_with raid)"
217
218 if useq "ssl" ; then
219 # --with-vio is not needed anymore, it's on by default and
220 # has been removed from configure
221 mysql_version_is_at_least "5.00.04.00" || myconf="${myconf} --with-vio"
222 if mysql_version_is_at_least "5.00.06.00" ; then
223 # myconf="${myconf} --with-yassl"
224 myconf="${myconf} --with-openssl"
225 else
226 myconf="${myconf} --with-openssl"
227 fi
228 else
229 myconf="${myconf} --without-openssl"
230 fi
231
232 # The following fix is due to a bug with bdb on SPARC's. See:
233 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
234 # It comes down to non-64-bit safety problems.
235 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" || useq "amd64" ; then
236 elog "Berkeley DB support was disabled due to incompatible arch"
237 myconf="${myconf} --without-berkeley-db"
238 else
239 if useq "berkdb" ; then
240 myconf="${myconf} --with-berkeley-db=./bdb"
241 else
242 myconf="${myconf} --without-berkeley-db"
243 fi
244 fi
245
246 if mysql_version_is_at_least "4.01.03.00" ; then
247 myconf="${myconf} --with-geometry"
248 myconf="${myconf} $(use_with cluster ndbcluster)"
249 fi
250
251 if mysql_version_is_at_least "4.01.03.00" && useq "extraengine" ; then
252 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
253 myconf="${myconf} --with-archive-storage-engine"
254
255 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
256 myconf="${myconf} --with-csv-storage-engine"
257
258 # http://dev.mysql.com/doc/mysql/en/blackhole-storage-engine.html
259 myconf="${myconf} --with-blackhole-storage-engine"
260
261 # http://dev.mysql.com/doc/mysql/en/federated-storage-engine.html
262 # http://dev.mysql.com/doc/mysql/en/federated-description.html
263 # http://dev.mysql.com/doc/mysql/en/federated-limitations.html
264 if mysql_version_is_at_least "5.00.03.00" ; then
265 elog "Before using the Federated storage engine, please be sure to read"
266 elog "http://dev.mysql.com/doc/mysql/en/federated-limitations.html"
267 myconf="${myconf} --with-federated-storage-engine"
268 fi
269 fi
270
271 mysql_version_is_at_least "5.00.18.00" \
272 && useq "max-idx-128" \
273 && myconf="${myconf} --with-max-indexes=128"
274}
275
276configure_51() {
277 # TODO: !!!! readd --without-readline
278 # the failure depend upon config/ac-macros/readline.m4 checking into
279 # readline.h instead of history.h
280 myconf="${myconf} $(use_with ssl)"
281 myconf="${myconf} --enable-assembler"
282 myconf="${myconf} --with-geometry"
283 myconf="${myconf} --with-readline"
284 myconf="${myconf} --with-row-based-replication"
285 myconf="${myconf} --with-zlib=/usr/$(get_libdir)"
286 myconf="${myconf} --without-pstack"
287 useq "max-idx-128" && myconf="${myconf} --with-max-indexes=128"
288
289 # 5.1 introduces a new way to manage storage engines (plugins)
290 # like configuration=none
291 local plugins="csv,myisam,myisammrg,heap"
292 if useq "extraengine" ; then
293 # like configuration=max-no-ndb, archive and example removed in 5.1.11
294 plugins="${plugins},archive,blackhole,example,federated,ftexample,partition"
295
296 elog "Before using the Federated storage engine, please be sure to read"
297 elog "http://dev.mysql.com/doc/refman/5.1/en/federated-limitations.html"
298 fi
299
300 if useq "innodb" ; then
301 plugins="${plugins},innobase"
302 fi
303
304 # like configuration=max-no-ndb
305 if useq "cluster" ; then
306 plugins="${plugins},ndbcluster"
307 myconf="${myconf} --with-ndb-binlog"
308 fi
309
310 myconf="${myconf} --with-plugins=${plugins}"
311}
312
313#
314# EBUILD FUNCTIONS
315#
316
138mysql_pkg_setup() { 317mysql_pkg_setup() {
139 enewgroup mysql 60 || die "problem adding 'mysql' group" 318 enewgroup mysql 60 || die "problem adding 'mysql' group"
140 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"
320
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!"
323 die "InnoDB now uses cmake to build, this is a TODO item, will be fixed shortly!"
324 fi
141 325
142 # Check for USE flag problems in pkg_setup 326 # Check for USE flag problems in pkg_setup
143 if useq "static" && useq "ssl" ; then 327 if useq "static" && useq "ssl" ; then
144 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!"
145 die "MySQL does not support being built statically with SSL support enabled!" 329 die "MySQL does not support being built statically with SSL support enabled!"
157 && ( useq "cluster" || useq "extraengine" ) \ 341 && ( useq "cluster" || useq "extraengine" ) \
158 && useq "minimal" ; then 342 && useq "minimal" ; then
159 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 343 eerror "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
160 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!" 344 die "USE flags 'cluster' and 'extraengine' conflict with 'minimal' USE flag!"
161 fi 345 fi
346
347 mysql_check_version_range "4.00.00.00 to 5.00.99.99" \
348 && useq "berkdb" \
349 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
162} 350}
163 351
164mysql_src_unpack() { 352mysql_src_unpack() {
165 # Initialize the proper variables first 353 # Initialize the proper variables first
166 mysql_init_vars 354 mysql_init_vars
167 355
168 unpack ${A} 356 unpack ${A}
169 357
170 mv -f "${WORKDIR}/${P/_/-}" "${S}" 358 mv -f "${WORKDIR}/${MY_P}${MYSQL_RERELEASE}" "${S}"
171 cd "${S}" 359 cd "${S}"
172 360
173 # Apply the patches for this MySQL version 361 # Apply the patches for this MySQL version
174 if [[ -d "${WORKDIR}/${MY_FIXED_PV}" ]] ; then 362 if [[ -d "${WORKDIR}/${MY_FIXED_PV}" ]] ; then
175 EPATCH_SOURCE="${WORKDIR}/${MY_FIXED_PV}" EPATCH_SUFFIX="patch" epatch 363 EPATCH_SOURCE="${WORKDIR}/${MY_FIXED_PV}" EPATCH_SUFFIX="patch" epatch
179 rm -f "${S}/zlib/"*.[ch] 367 rm -f "${S}/zlib/"*.[ch]
180 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" 368 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
181 rm -f "scripts/mysqlbug" 369 rm -f "scripts/mysqlbug"
182 370
183 # Make charsets install in the right place 371 # Make charsets install in the right place
372 find . -name 'Makefile.am' \
184 find . -name 'Makefile.am' -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \; 373 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
185 374
186 # Manage mysqlmanager 375 # Manage mysqlmanager
187 mysql_version_is_at_least "5.00.15.00" \ 376 mysql_version_is_at_least "5.00.15.00" \
188 && sed -i -e "s!@GENTOO_EXT@!!g" -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" "${S}/server-tools/instance-manager/Makefile.am" 377 && sed -i -e "s!@GENTOO_EXT@!!g" \
378 -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" \
379 "${S}/server-tools/instance-manager/Makefile.am"
189 380
190 if mysql_version_is_at_least "4.01.00.00" ; then 381 if mysql_version_is_at_least "4.01.00.00" ; then
191 # 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
192 find . -name Makefile \ 383 find . -name Makefile \
193 -o -name Makefile.in \ 384 -o -name Makefile.in \
194 -o -name configure \ 385 -o -name configure \
195 -exec rm -f {} \; 386 -exec rm -f {} \;
196 rm -f "ltmain.sh" 387 rm -f "ltmain.sh"
388 rm -f "scripts/mysqlbug"
197 fi 389 fi
198 390
199 local rebuilddirlist bdbdir d 391 local rebuilddirlist bdbdir d
200 392
201 if mysql_version_is_at_least "5.01.00.00" ; then 393 if mysql_version_is_at_least "5.01.12.00" ; then
202 rebuilddirlist=". storage/innobase" 394 # TODO: innodb is using cmake now?
203 bdbdir='storage/bdb/dist' 395 rebuilddirlist="."
396 bdbdir=''
204 else 397 else
205 rebuilddirlist=". innobase" 398 rebuilddirlist=". innobase"
206 bdbdir='bdb/dist' 399 bdbdir='bdb/dist'
207 fi 400 fi
208 401
211 pushd "${d}" &>/dev/null 404 pushd "${d}" &>/dev/null
212 AT_GNUCONF_UPDATE="yes" eautoreconf 405 AT_GNUCONF_UPDATE="yes" eautoreconf
213 popd &>/dev/null 406 popd &>/dev/null
214 done 407 done
215 408
216 # TODO: berkdb in MySQL 5.1 needs to be worked on
217 if useq "berkdb" \
218 && ! 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" \
219 && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then 410 && useq "berkdb" ; then
220 [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f "ltmain.sh" "${bdbdir}/ltmain.sh" 411 [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f "ltmain.sh" "${bdbdir}/ltmain.sh"
221 pushd "${bdbdir}" \ 412 pushd "${bdbdir}" \
222 && sh s_all \ 413 && sh s_all \
223 || die "Failed bdb reconfigure" \ 414 || die "Failed bdb reconfigure" \
224 &>/dev/null 415 &>/dev/null
228 419
229mysql_src_compile() { 420mysql_src_compile() {
230 # Make sure the vars are correctly initialized 421 # Make sure the vars are correctly initialized
231 mysql_init_vars 422 mysql_init_vars
232 423
424 # $myconf is modified by the configure_* functions
233 local myconf 425 local myconf=""
234 426
235 if useq "static" ; then 427 if useq "minimal" ; then
236 myconf="${myconf} --with-mysqld-ldflags=-all-static" 428 configure_minimal
237 myconf="${myconf} --with-client-ldflags=-all-static"
238 myconf="${myconf} --disable-shared"
239 else 429 else
240 myconf="${myconf} --enable-shared --enable-static" 430 configure_common
241 fi
242
243 myconf="${myconf} --without-libwrap"
244
245 if useq "ssl" ; then
246 # --with-vio is not needed anymore, it's on by default and
247 # has been removed from configure
248 mysql_version_is_at_least "5.00.04.00" || myconf="${myconf} --with-vio"
249 if mysql_version_is_at_least "5.00.06.00" ; then 431 if mysql_version_is_at_least "5.01.10.00" ; then
250 # yassl-0.96 is still young and breaks with GCC-4.X or amd64 432 configure_51
251 # myconf="${myconf} --with-yassl"
252 myconf="${myconf} --with-openssl"
253 else 433 else
254 myconf="${myconf} --with-openssl" 434 configure_40_41_50
255 fi
256 else
257 myconf="${myconf} --without-openssl"
258 fi
259
260 if useq "debug" ; then
261 myconf="${myconf} --with-debug=full"
262 else
263 myconf="${myconf} --without-debug"
264
265 mysql_version_is_at_least "4.01.03.00" && useq "cluster" \
266 && myconf="${myconf} --without-ndb-debug"
267 fi
268
269 # These are things we exclude from a minimal build.
270 # Note that the server actually does get built and installed,
271 # but we then delete it.
272 local minimal_exclude_list="server embedded-server extra-tools innodb bench"
273
274 if ! useq "minimal" ; then
275 myconf="${myconf} --with-server"
276 myconf="${myconf} --with-extra-tools"
277
278 if ! mysql_version_is_at_least "5.00.00.00" ; then
279 if useq "raid" ; then
280 myconf="${myconf} --with-raid"
281 else
282 myconf="${myconf} --without-raid"
283 fi 435 fi
284 fi
285
286 if mysql_version_is_at_least "4.01.00.00" && ! useq "latin1" ; then
287 myconf="${myconf} --with-charset=utf8"
288 myconf="${myconf} --with-collation=utf8_general_ci"
289 else
290 myconf="${myconf} --with-charset=latin1"
291 myconf="${myconf} --with-collation=latin1_swedish_ci"
292 fi
293
294 # Optional again with MySQL 5.1
295 if mysql_version_is_at_least "5.01.00.00" ; then
296 if useq "innodb" ; then
297 myconf="${myconf} --with-innodb"
298 else
299 myconf="${myconf} --without-innodb"
300 fi
301 fi
302
303 # Lots of charsets
304 myconf="${myconf} --with-extra-charsets=all"
305
306 # The following fix is due to a bug with bdb on SPARC's. See:
307 # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
308 # It comes down to non-64-bit safety problems.
309 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" || useq "amd64" ; then
310 ewarn "bdb berkeley-db disabled due to incompatible arch"
311 myconf="${myconf} --without-berkeley-db"
312 else
313 # TODO: berkdb in MySQL 5.1 needs to be worked on
314 if useq "berkdb" && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
315 myconf="${myconf} --with-berkeley-db=./bdb"
316 else
317 myconf="${myconf} --without-berkeley-db"
318 fi
319 fi
320
321 if mysql_version_is_at_least "4.01.03.00" ; then
322 myconf="${myconf} --with-geometry"
323
324 if useq "cluster" ; then
325 myconf="${myconf} --with-ndbcluster"
326 else
327 myconf="${myconf} --without-ndbcluster"
328 fi
329 fi
330
331 if useq "big-tables" ; then
332 myconf="${myconf} --with-big-tables"
333 else
334 myconf="${myconf} --without-big-tables"
335 fi
336
337 mysql_version_is_at_least "5.01.06.00" \
338 && myconf="${myconf} --with-ndb-binlog"
339
340 if useq "embedded" ; then
341 myconf="${myconf} --with-embedded-privilege-control"
342 myconf="${myconf} --with-embedded-server"
343 else
344 myconf="${myconf} --without-embedded-privilege-control"
345 myconf="${myconf} --without-embedded-server"
346 fi
347
348 # Benchmarking stuff needs Perl
349 if useq "perl" ; then
350 myconf="${myconf} --with-bench"
351 else
352 myconf="${myconf} --without-bench"
353 fi
354 else
355 for i in ${minimal_exclude_list} ; do
356 myconf="${myconf} --without-${i}"
357 done
358 myconf="${myconf} --without-berkeley-db"
359 myconf="${myconf} --with-extra-charsets=none"
360 fi
361
362 if mysql_version_is_at_least "4.01.03.00" && useq "extraengine" ; then
363 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
364 myconf="${myconf} --with-archive-storage-engine"
365
366 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
367 myconf="${myconf} --with-csv-storage-engine"
368
369 # http://dev.mysql.com/doc/mysql/en/blackhole-storage-engine.html
370 myconf="${myconf} --with-blackhole-storage-engine"
371
372 # http://dev.mysql.com/doc/mysql/en/federated-storage-engine.html
373 # http://dev.mysql.com/doc/mysql/en/federated-description.html
374 # http://dev.mysql.com/doc/mysql/en/federated-limitations.html
375 if mysql_version_is_at_least "5.00.03.00" ; then
376 einfo "Before using the Federated storage engine, please be sure to read"
377 einfo "http://dev.mysql.com/doc/mysql/en/federated-limitations.html"
378 myconf="${myconf} --with-federated-storage-engine"
379 fi
380
381 # http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html
382 if mysql_version_is_at_least "5.01.00.00" ; then
383 myconf="${myconf} --with-partition"
384 fi
385 fi
386
387 mysql_version_is_at_least "5.00.18.00" \
388 && useq "max-idx-128" \
389 && myconf="${myconf} --with-max-indexes=128"
390
391 mysql_version_is_at_least "5.01.05.00" \
392 && myconf="${myconf} --with-row-based-replication"
393
394 # TODO: Rechek again later, there were problems with assembler enabled
395 # and some combination of USE flags with MySQL 5.1
396 if mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
397 myconf="${myconf} --disable-assembler"
398 else
399 myconf="${myconf} --enable-assembler"
400 fi 436 fi
401 437
402 # Bug #114895, bug #110149 438 # Bug #114895, bug #110149
403 filter-flags "-O" "-O[01]" 439 filter-flags "-O" "-O[01]"
404 440
405 # glib-2.3.2_pre fix, bug #16496 441 # glib-2.3.2_pre fix, bug #16496
406 append-flags "-DHAVE_ERRNO_AS_DEFINE=1" 442 append-flags "-DHAVE_ERRNO_AS_DEFINE=1"
407 443
408 # The compiler flags are as their "official" spec says ;) 444 append-flags "-fno-exceptions -fno-strict-aliasing"
409 # CFLAGS="${CFLAGS/-O?/} -O3"
410 export CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-exceptions -fno-rtti" 445 CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti"
411 mysql_version_is_at_least "5.00.00.00" \ 446 mysql_version_is_at_least "5.00.00.00" \
412 && export CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 447 && CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
448 export CXXFLAGS
413 449
414 econf \ 450 econf \
415 --libexecdir="/usr/sbin" \ 451 --libexecdir="/usr/sbin" \
416 --sysconfdir="${MY_SYSCONFDIR}" \ 452 --sysconfdir="${MY_SYSCONFDIR}" \
417 --localstatedir="${MY_LOCALSTATEDIR}" \ 453 --localstatedir="${MY_LOCALSTATEDIR}" \
418 --sharedstatedir="${MY_SHAREDSTATEDIR}" \ 454 --sharedstatedir="${MY_SHAREDSTATEDIR}" \
419 --libdir="${MY_LIBDIR}" \ 455 --libdir="${MY_LIBDIR}" \
420 --includedir="${MY_INCLUDEDIR}" \ 456 --includedir="${MY_INCLUDEDIR}" \
421 --with-low-memory \ 457 --with-low-memory \
422 --enable-local-infile \
423 --with-mysqld-user=mysql \
424 --with-client-ldflags=-lstdc++ \ 458 --with-client-ldflags=-lstdc++ \
425 --enable-thread-safe-client \ 459 --enable-thread-safe-client \
426 --with-comment="Gentoo Linux ${PF}" \ 460 --with-comment="Gentoo Linux ${PF}" \
427 --with-unix-socket-path="/var/run/mysqld/mysqld.sock" \
428 --without-readline \
429 --without-docs \ 461 --without-docs \
430 ${myconf} || die "bad ./configure" 462 ${myconf} || die "econf failed"
431 463
432 # TODO: Move this before autoreconf !!! 464 # TODO: Move this before autoreconf !!!
433 find . -type f -name Makefile -print0 \ 465 find . -type f -name Makefile -print0 \
434 | xargs -0 -n100 sed -i \ 466 | xargs -0 -n100 sed -i \
435 -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)|'
436 468
437 emake || die "compile problem" 469 emake || die "emake failed"
438} 470}
439 471
440mysql_src_install() { 472mysql_src_install() {
441 # Make sure the vars are correctly initialized 473 # Make sure the vars are correctly initialized
442 mysql_init_vars 474 mysql_init_vars
443 475
444 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"
445 477
446 insinto "${MY_INCLUDEDIR}" 478 insinto "${MY_INCLUDEDIR}"
447 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 479 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
448 480
449 # Convenience links 481 # Convenience links
451 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" 483 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
452 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize" 484 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
453 485
454 # Various junk (my-*.cnf moved elsewhere) 486 # Various junk (my-*.cnf moved elsewhere)
455 rm -Rf "${D}/usr/share/info" 487 rm -Rf "${D}/usr/share/info"
456 for removeme in "mysql-log-rotate" mysql.server* binary-configure* my-*.cnf mi_test_all* ; do 488 for removeme in "mysql-log-rotate" mysql.server* \
489 binary-configure* my-*.cnf mi_test_all*
490 do
457 rm -f "${D}"/usr/share/mysql/${removeme} 491 rm -f "${D}"/usr/share/mysql/${removeme}
458 done 492 done
459 493
460 # Clean up stuff for a minimal build 494 # Clean up stuff for a minimal build
461 if useq "minimal" ; then 495 if useq "minimal" ; then
543mysql_pkg_postinst() { 577mysql_pkg_postinst() {
544 # Make sure the vars are correctly initialized 578 # Make sure the vars are correctly initialized
545 mysql_init_vars 579 mysql_init_vars
546 580
547 # Check FEATURES="collision-protect" before removing this 581 # Check FEATURES="collision-protect" before removing this
582 [[ -d "${ROOT}/var/log/mysql" ]] \
548 [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" 583 || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
549 584
550 # Secure the logfiles 585 # Secure the logfiles
551 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 586 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
552 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 587 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
553 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 588 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
554 589
555 if ! useq "minimal" ; then 590 if ! useq "minimal" ; then
556 # Your friendly public service announcement ... 591 # Your friendly public service announcement ...
557 einfo 592 einfo
558 einfo "You might want to run:" 593 elog "You might want to run:"
559 einfo "\"emerge --config =${CATEGORY}/${PF}\"" 594 elog "\"emerge --config =${CATEGORY}/${PF}\""
560 einfo "if this is a new install." 595 elog "if this is a new install."
561 einfo 596 einfo
562 mysql_version_is_at_least "5.01.00.00" \ 597 mysql_version_is_at_least "5.01.00.00" \
563 || 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."
564 fi 599 fi
600 mysql_check_version_range "4.00.00.00 to 5.00.99.99" \
601 && useq "berkdb" \
602 && elog "Berkeley DB support is deprecated and will be removed in future versions!"
565} 603}
566 604
567mysql_pkg_config() { 605mysql_pkg_config() {
568 # Make sure the vars are correctly initialized 606 # Make sure the vars are correctly initialized
569 mysql_init_vars 607 mysql_init_vars

Legend:
Removed from v.1.30  
changed lines
  Added in v.1.43

  ViewVC Help
Powered by ViewVC 1.1.20