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

Diff of /eclass/mysql.eclass

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

Revision 1.8 Revision 1.28
1# Copyright 1999-2005 Gentoo Foundation 1# Copyright 1999-2005 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/Attic/mysql.eclass,v 1.8 2006/01/24 19:14:00 vivo Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/Attic/mysql.eclass,v 1.28 2006/04/11 17:23:42 vivo Exp $
4# $ID: $
4 5
5# Author: Francesco Riosa <vivo at gentoo.org> 6# Author: Francesco Riosa <vivo at gentoo.org>
6# Maintainer: Francesco Riosa <vivo at gentoo.org> 7# Maintainer: Luca Longinotti <chtekk at gentoo.org>
7 8
9# MYSQL_VERSION_ID will be
10# major * 10e6 + minor * 10e4 + micro * 10e2 + gentoo magic number, all [0..99]
11# this is an important piece, becouse from this variable depends many of the
12# choices the ebuild will do.
13# in particular the code below work only with PVR like "5.0.18-r3"
14# the result with the previous PVR is "5001803"
15if [[ -z ${MYSQL_VERSION_ID} ]] ; then
16 tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}"
17 for vatom in 0 1 2 3; do
18 # pad to lenght 2
19 tpv[${vatom}]="00${tpv[${vatom}]}"
20 MYSQL_VERSION_ID="${MYSQL_VERSION_ID}${tpv[${vatom}]:0-2}"
21 done
22 # strip leading "0" (otherwise it's considered an octal number from bash)
23 MYSQL_VERSION_ID=${MYSQL_VERSION_ID##"0"}
24fi
25
26[[ -z ${MY_EXTRAS_VER} ]] && MY_EXTRAS_VER="20060411"
27
28DEPEND="${DEPEND}
29 >=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
34 >=sys-apps/texinfo-4.7-r1
35 >=sys-apps/sed-4"
36RDEPEND="${DEPEND} selinux? ( sec-policy/selinux-mysql )"
37# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
38PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
39
8inherit eutils flag-o-matic gnuconfig 40inherit eutils flag-o-matic gnuconfig autotools mysql_fx
9 41
10#major, minor only in the slot 42SLOT=0
11SLOT=$(( ${MYSQL_VERSION_ID} / 10000 ))
12 43
13# shorten the path because the socket path length must be shorter than 107 chars 44# shorten the path because the socket path length must be shorter than 107 chars
14# and we will run a mysql server during test phase 45# and we will run a mysql server during test phase
15S="${WORKDIR}/${PN}" 46S="${WORKDIR}/${PN}"
16 47
17DESCRIPTION="A fast, multi-threaded, multi-user SQL database server" 48DESCRIPTION="A fast, multi-threaded, multi-user SQL database server"
18HOMEPAGE="http://www.mysql.com/" 49HOMEPAGE="http://www.mysql.com/"
19NEWP="${P/_/-}" 50NEWP="${P/_/-}"
20SRC_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/${NEWP}.tar.gz 51SRC_URI="mirror://mysql/Downloads/MySQL-${PV%.*}/${NEWP}.tar.gz
21 mirror://gentoo/mysql-extras-20060115.tar.bz2" 52 mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
22LICENSE="GPL-2" 53LICENSE="GPL-2"
23IUSE="big-tables berkdb debug minimal perl selinux srvdir ssl static" 54IUSE="big-tables berkdb debug embedded minimal perl selinux srvdir ssl static"
24RESTRICT="primaryuri confcache" 55RESTRICT="primaryuri confcache"
25DEPEND="app-admin/eselect-mysql"
26 56
27mysql_version_is_at_least "4.01.03.00" \ 57mysql_version_is_at_least "4.01.03.00" \
28&& IUSE="${IUSE} cluster extraengine" 58&& IUSE="${IUSE} cluster extraengine"
29 59
60mysql_version_is_at_least "5.00.00.00" \
61|| IUSE="${IUSE} raid"
62
30mysql_version_is_at_least "5.00.18.00" \ 63mysql_version_is_at_least "5.00.18.00" \
31&& IUSE="${IUSE} max-idx-128" 64&& IUSE="${IUSE} max-idx-128"
32 65
33mysql_version_is_at_least "5.01.00.00" \ 66mysql_version_is_at_least "5.01.00.00" \
34&& IUSE="${IUSE} innodb" 67&& IUSE="${IUSE} innodb"
35 68
36EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst pkg_postinst pkg_config pkg_postrm 69EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \
70 pkg_postinst pkg_config pkg_postrm
37 71
38# void mysql_init_vars() 72# void mysql_init_vars()
39# 73#
40# initialize global variables 74# initialize global variables
41# 2005-11-19 <vivo at gentoo.org> 75# 2005-11-19 <vivo at gentoo.org>
42mysql_init_vars() { 76mysql_init_vars() {
43 77
44 if [[ ${SLOT} -eq 0 ]] ; then
45 MY_SUFFIX=""
46 else
47 MY_SUFFIX=${MY_SUFFIX:-"-${SLOT}"}
48 fi
49 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql${MY_SUFFIX}"} 78 MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql"}
50 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql${MY_SUFFIX}"} 79 MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"}
51 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql${MY_SUFFIX}"} 80 MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql$"}
52 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql${MY_SUFFIX}"} 81 MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"}
53 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql${MY_SUFFIX}"} 82 MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"}
54 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql${MY_SUFFIX}"} 83 MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"}
55 84
56 if [ -z "${DATADIR}" ]; then 85 if [ -z "${DATADIR}" ]; then
57 DATADIR="" 86 DATADIR=""
58 if [ -f "${SYSCONFDIR}/my.cnf" ] ; then 87 if [ -f "${MY_SYSCONFDIR}/my.cnf" ] ; then
59 DATADIR=`"my_print_defaults${MY_SUFFIX}" mysqld 2>/dev/null | sed -ne '/datadir/s|^--datadir=||p' | tail -n1` 88 DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
89 | sed -ne '/datadir/s|^--datadir=||p' \
90 | tail -n1`
60 if [ -z "${DATADIR}" ]; then 91 if [ -z "${DATADIR}" ]; then
61 if useq "srvdir" ; then 92 if useq "srvdir" ; then
62 DATADIR="/srv/localhost/mysql/datadir" 93 DATADIR="${ROOT}/srv/localhost/mysql/datadir"
63 else 94 else
64 DATADIR=`grep ^datadir "${SYSCONFDIR}/my.cnf" | sed -e 's/.*=\s*//'` 95 DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
96 | sed -e 's/.*=\s*//'`
65 fi 97 fi
66 fi 98 fi
67 fi 99 fi
68 if [ -z "${DATADIR}" ]; then 100 if [ -z "${DATADIR}" ]; then
101 if useq "srvdir" ; then
102 DATADIR="${ROOT}/srv/localhost/mysql/datadir"
103 else
69 DATADIR="${MY_LOCALSTATEDIR}" 104 DATADIR="${MY_LOCALSTATEDIR}"
105 fi
70 einfo "Using default DATADIR" 106 einfo "Using default DATADIR"
71 fi 107 fi
72 einfo "MySQL DATADIR is ${DATADIR}" 108 einfo "MySQL DATADIR is ${DATADIR}"
73 109
74 if [ -z "${PREVIOUS_DATADIR}" ] ; then 110 if [ -z "${PREVIOUS_DATADIR}" ] ; then
82 export PREVIOUS_DATADIR 118 export PREVIOUS_DATADIR
83 fi 119 fi
84 fi 120 fi
85 fi 121 fi
86 122
87 export MY_SUFFIX MY_SHAREDSTATEDIR MY_SYSCONFDIR 123 export MY_SHAREDSTATEDIR MY_SYSCONFDIR
88 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR 124 export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR
89 export MY_INCLUDEDIR 125 export MY_INCLUDEDIR
90 export DATADIR 126 export DATADIR
91} 127}
92 128
99 135
100mysql_src_unpack() { 136mysql_src_unpack() {
101 137
102 mysql_init_vars 138 mysql_init_vars
103 139
104 if useq static && useq ssl; then 140 if useq "static" && useq "ssl" ; then
105 local msg="MySQL does not support building statically with SSL support" 141 local msg="MySQL does not support building statically with SSL support"
106 eerror "${msg}" 142 eerror "${msg}"
107 die "${msg}" 143 die "${msg}"
108 fi 144 fi
109 145
110 if mysql_version_is_at_least "4.01.03.00" \ 146 if mysql_version_is_at_least "4.01.03.00" \
111 && useq cluster \ 147 && useq "cluster" \
112 || useq extraengine \ 148 || useq "extraengine" \
113 && useq minimal ; then 149 && useq "minimal" ; then
114 die "USEs cluster, extraengine conflicts with \"minimal\"" 150 die "USEs cluster, extraengine conflicts with \"minimal\""
115 fi 151 fi
116 152
117 unpack ${A} || die 153 unpack ${A} || die
118 154
127 # additional check, remove bundled zlib 163 # additional check, remove bundled zlib
128 rm -f "${S}/zlib/"*.[ch] 164 rm -f "${S}/zlib/"*.[ch]
129 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in" 165 sed -i -e "s/zlib\/Makefile dnl/dnl zlib\/Makefile/" "${S}/configure.in"
130 rm -f scripts/mysqlbug 166 rm -f scripts/mysqlbug
131 167
132 # Multilib issue with zlib detection
133 mysql_version_is_at_least "5.00.15.00" \
134 && sed -i -e "s:zlib_dir/lib:zlib_dir/$(get_libdir):g" \
135 "${S}/config/ac-macros/zlib.m4"
136
137 # Make charsets install in the right place 168 # Make charsets install in the right place
138 find . -name 'Makefile.am' \ 169 find . -name 'Makefile.am' \
139 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \; 170 -exec sed --in-place -e 's!$(pkgdatadir)!'${MY_SHAREDSTATEDIR}'!g' {} \;
140 171
141 # Manage mysqlmanager 172 # Manage mysqlmanager
142 mysql_version_is_at_least "5.00.15.00" \ 173 mysql_version_is_at_least "5.00.15.00" \
143 && sed -i -e "s!@GENTOO_EXT@!${MY_SUFFIX}!g" \ 174 && sed -i -e "s!@GENTOO_EXT@!!g" \
144 -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" \ 175 -e "s!@GENTOO_SOCK_PATH@!var/run/mysqld!g" \
145 "${S}/server-tools/instance-manager/Makefile.am" 176 "${S}/server-tools/instance-manager/Makefile.am"
146 177
147 # remove what need to be recreated, so we are sure it's actually done 178 # remove what need to be recreated, so we are sure it's actually done
148 find . -name Makefile -o -name Makefile.in -o -name configure -exec rm -f {} \; 179 find . -name Makefile \
180 -o -name Makefile.in \
181 -o -name configure \
182 -exec rm -f {} \;
149 rm ltmain.sh 183 rm ltmain.sh
150 184
151 local rebuilddirlist d buildstep bdbdir 185 local rebuilddirlist d buildstep bdbdir
152 186
153 if mysql_version_is_at_least "5.01.00.00" ; then 187 if mysql_version_is_at_least "5.01.00.00" ; then
159 fi 193 fi
160 194
161 for d in ${rebuilddirlist}; do 195 for d in ${rebuilddirlist}; do
162 einfo "reconfiguring dir \"${d}\"" 196 einfo "reconfiguring dir \"${d}\""
163 pushd "${d}" &>/dev/null 197 pushd "${d}" &>/dev/null
164 for buildstep in \ 198 AT_GNUCONF_UPDATE="yes" eautoreconf
165 'libtoolize --copy --force' \
166 'aclocal --force' \
167 'autoheader --force -Wnone' \
168 'autoconf --force -Wnone' \
169 'automake --force --force-missing -Wnone' \
170 'gnuconfig_update'
171 do
172 einfo "performing ${buildstep}"
173 ${buildstep} || die "failed ${buildstep/ */} dir \"${d}\""
174 done
175 popd &>/dev/null 199 popd &>/dev/null
176 done 200 done
177 201
202 #TODO berkdb in 5.1 need to be worked on
178 if useq berkdb && ! mysql_check_version_range "5.01.00.00 to 5.01.06.99" 203 if useq "berkdb" && ! mysql_check_version_range "5.01.00.00 to 5.01.08.99"
179 then 204 then
180 [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f ltmain.sh "${bdbdir}/ltmain.sh" 205 [[ -w "${bdbdir}/ltmain.sh" ]] && cp -f ltmain.sh "${bdbdir}/ltmain.sh"
181 pushd "${bdbdir}" && sh s_all || die "failed bdb reconfigure" &>/dev/null 206 pushd "${bdbdir}" \
207 && sh s_all \
208 || die "failed bdb reconfigure" \
209 &>/dev/null
182 popd &>/dev/null 210 popd &>/dev/null
183 fi 211 fi
184 212
185} 213}
186 214
187mysql_src_compile() { 215mysql_src_compile() {
188 216
189 mysql_init_vars 217 mysql_init_vars
190 local myconf 218 local myconf
191 219
192 if useq static ; then 220 if useq "static" ; then
193 myconf="${myconf} --with-mysqld-ldflags=-all-static" 221 myconf="${myconf} --with-mysqld-ldflags=-all-static"
194 myconf="${myconf} --with-client-ldflags=-all-static" 222 myconf="${myconf} --with-client-ldflags=-all-static"
195 myconf="${myconf} --disable-shared" 223 myconf="${myconf} --disable-shared"
196 else 224 else
197 myconf="${myconf} --enable-shared --enable-static" 225 myconf="${myconf} --enable-shared --enable-static"
198 fi 226 fi
199 227
200 #myconf="${myconf} `use_with tcpd libwrap`" 228 #myconf="${myconf} `use_with tcpd libwrap`"
201 myconf="${myconf} --without-libwrap" 229 myconf="${myconf} --without-libwrap"
202 230
203 if useq ssl ; then 231 if useq "ssl" ; then
204 # --with-vio is not needed anymore, it's on by default and 232 # --with-vio is not needed anymore, it's on by default and
205 # has been removed from configure 233 # has been removed from configure
206 mysql_version_is_at_least "5.00.04.00" || myconf="${myconf} --with-vio" 234 mysql_version_is_at_least "5.00.04.00" || myconf="${myconf} --with-vio"
207 if mysql_version_is_at_least "5.00.06.00" ; then 235 if mysql_version_is_at_least "5.00.06.00" ; then
208 # yassl-0.96 is young break with gcc-4.0 || amd64 236 # yassl-0.96 is young break with gcc-4.0 || amd64
213 fi 241 fi
214 else 242 else
215 myconf="${myconf} --without-openssl" 243 myconf="${myconf} --without-openssl"
216 fi 244 fi
217 245
218 if useq debug; then 246 if useq "debug"; then
219 myconf="${myconf} --with-debug=full" 247 myconf="${myconf} --with-debug=full"
220 else 248 else
221 myconf="${myconf} --without-debug" 249 myconf="${myconf} --without-debug"
222 mysql_version_is_at_least "4.01.03.00" && useq cluster && myconf="${myconf} --without-ndb-debug" 250 mysql_version_is_at_least "4.01.03.00" \
223 fi 251 && useq "cluster" \
224
225 # benchmarking stuff needs perl
226 # and shouldn't be bothered with on minimal builds
227 if useq perl && ! useq minimal; then
228 myconf="${myconf} --with-bench"
229 else
230 myconf="${myconf} --without-bench" 252 && myconf="${myconf} --without-ndb-debug"
231 fi 253 fi
232 254
233 # these are things we exclude from a minimal build 255 # these are things we exclude from a minimal build
234 # note that the server actually does get built and installed 256 # note that the server actually does get built and installed
235 # but we then delete it before packaging. 257 # but we then delete it before packaging.
236 local minimal_exclude_list="server embedded-server extra-tools innodb" 258 local minimal_exclude_list="server embedded-server extra-tools innodb bench"
259
237 if ! useq minimal; then 260 if ! useq "minimal" ; then
238 for i in ${minimal_exclude_list}; do
239 myconf="${myconf} --with-${i}" 261 myconf="${myconf} --with-server"
240 done 262 myconf="${myconf} --with-extra-tools"
241 263
242 if useq static ; then 264 if useq "static" ; then
243 myconf="${myconf} --without-raid" 265 myconf="${myconf} --without-raid"
244 ewarn "disabling raid support, has problem with static" 266 ewarn "disabling raid support, has problem with static"
245 else 267 else
268 if mysql_version_is_at_least "5.00.00.00" ; then
246 myconf="${myconf} --with-raid" 269 myconf="${myconf} --without-raid"
270 else
271 myconf="${myconf} `use_with raid`"
272 fi
247 fi 273 fi
248 274
249 if ! mysql_version_is_at_least "5.00.00.00" ; then 275 if ! mysql_version_is_at_least "5.00.00.00" ; then
250 if mysql_version_is_at_least "4.01.00.00" ; then 276 if mysql_version_is_at_least "4.01.00.00" ; then
251 myconf="${myconf} --with-charset=utf8" 277 myconf="${myconf} --with-charset=utf8"
267 myconf="${myconf} --with-extra-charsets=all" 293 myconf="${myconf} --with-extra-charsets=all"
268 294
269 #The following fix is due to a bug with bdb on sparc's. See: 295 #The following fix is due to a bug with bdb on sparc's. See:
270 #http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8 296 #http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8
271 # it comes down to non-64-bit safety problems 297 # it comes down to non-64-bit safety problems
272 if useq sparc || useq alpha || useq hppa || useq mips || useq amd64 \ 298 if useq "sparc" || useq "alpha" || useq "hppa" || useq "mips" \
273 || mysql_check_version_range "5.01.00.00 to 5.01.06.99" 299 || useq "amd64" || mysql_check_version_range "5.01.00.00 to 5.01.06.99"
274 then 300 then
275 ewarn "bdb berkeley-db disabled due to arch or version" 301 ewarn "bdb berkeley-db disabled due to arch or version"
276 myconf="${myconf} --without-berkeley-db" 302 myconf="${myconf} --without-berkeley-db"
277 else 303 else
304 #TODO berkdb in 5.1 need to be worked on
278 useq berkdb \ 305 useq "berkdb" && \
306 ! mysql_check_version_range "5.01.00.00 to 5.01.08.99" \
279 && myconf="${myconf} --with-berkeley-db=./bdb" \ 307 && myconf="${myconf} --with-berkeley-db=./bdb" \
280 || myconf="${myconf} --without-berkeley-db" 308 || myconf="${myconf} --without-berkeley-db"
281 fi 309 fi
282 310
283 if mysql_version_is_at_least "4.01.03.00" ; then 311 if mysql_version_is_at_least "4.01.03.00" ; then
284 #myconf="${myconf} $(use_with geometry)" 312 #myconf="${myconf} $(use_with geometry)"
285 myconf="${myconf} --with-geometry" 313 myconf="${myconf} --with-geometry"
286 myconf="${myconf} $(use_with cluster ndbcluster)" 314 myconf="${myconf} $(use_with cluster ndbcluster)"
287 fi 315 fi
288 316
289 mysql_version_is_at_least "4.01.11.00" && myconf="${myconf} `use_with big-tables`" 317 mysql_version_is_at_least "4.01.11.00" \
318 && myconf="${myconf} `use_with big-tables`"
319
320 mysql_version_is_at_least "5.01.06.00" \
321 && myconf="${myconf} --with-ndb-binlog"
322
323 if useq "embedded" ; then
324 #REMIND, need the privilege control enabled ?
325 myconf="${myconf} --without-embedded-privilege-control"
326 myconf="${myconf} --with-embedded-server"
327 else
328 myconf="${myconf} --without-embedded-privilege-control"
329 myconf="${myconf} --without-embedded-server"
330 fi
331
332 # benchmarking stuff needs perl
333 if useq "perl" ; then
334 myconf="${myconf} --with-bench"
335 else
336 myconf="${myconf} --without-bench"
337 fi
290 else 338 else
291 for i in ${minimal_exclude_list}; do 339 for i in ${minimal_exclude_list}; do
292 myconf="${myconf} --without-${i}" 340 myconf="${myconf} --without-${i}"
293 done 341 done
294 myconf="${myconf} --without-berkeley-db" 342 myconf="${myconf} --without-berkeley-db"
295 myconf="${myconf} --with-extra-charsets=none" 343 myconf="${myconf} --with-extra-charsets=none"
296 fi 344 fi
297 345
298 if mysql_version_is_at_least "4.01.03.00" && useq extraengine; then 346 if mysql_version_is_at_least "4.01.03.00" && useq "extraengine"; then
299 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html 347 # http://dev.mysql.com/doc/mysql/en/archive-storage-engine.html
300 myconf="${myconf} --with-archive-storage-engine" 348 myconf="${myconf} --with-archive-storage-engine"
301 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html 349 # http://dev.mysql.com/doc/mysql/en/csv-storage-engine.html
302 350
303 mysql_version_is_at_least "4.01.04.00" \ 351 mysql_version_is_at_least "4.01.04.00" \
327 375
328 if mysql_version_is_at_least "5.01.05.00" ; then 376 if mysql_version_is_at_least "5.01.05.00" ; then
329 myconf="${myconf} --with-row-based-replication" 377 myconf="${myconf} --with-row-based-replication"
330 fi 378 fi
331 379
380 #TODO rechek again later, had problem with assembler enabled
381 # and some combination of use-flags with 5.1
382 if mysql_check_version_range "5.01.00.00 to 5.01.08.99" ; then
383 myconf="${myconf} --disable-assembler"
384 else
385 myconf="${myconf} --enable-assembler"
386 fi
387
332 #Bug #114895,Bug #110149 388 #Bug #114895,Bug #110149
333 filter-flags "-O" "-O[01]" 389 filter-flags "-O" "-O[01]"
334 #glibc-2.3.2_pre fix; bug #16496 390 #glibc-2.3.2_pre fix; bug #16496
335 append-flags "-DHAVE_ERRNO_AS_DEFINE=1" 391 append-flags "-DHAVE_ERRNO_AS_DEFINE=1"
336 392
339 export CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-exceptions -fno-rtti" 395 export CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-exceptions -fno-rtti"
340 mysql_version_is_at_least "5.00.00.00" \ 396 mysql_version_is_at_least "5.00.00.00" \
341 && export CXXFLAGS="${CXXFLAGS} -fno-implicit-templates" 397 && export CXXFLAGS="${CXXFLAGS} -fno-implicit-templates"
342 398
343 econf \ 399 econf \
344 --program-suffix="${MY_SUFFIX}" \
345 --libexecdir="/usr/sbin" \ 400 --libexecdir="/usr/sbin" \
346 --sysconfdir="${MY_SYSCONFDIR}" \ 401 --sysconfdir="${MY_SYSCONFDIR}" \
347 --localstatedir="${MY_LOCALSTATEDIR}" \ 402 --localstatedir="${MY_LOCALSTATEDIR}" \
348 --sharedstatedir="${MY_SHAREDSTATEDIR}" \ 403 --sharedstatedir="${MY_SHAREDSTATEDIR}" \
349 --libdir="${MY_LIBDIR}" \ 404 --libdir="${MY_LIBDIR}" \
350 --includedir="${MY_INCLUDEDIR}" \ 405 --includedir="${MY_INCLUDEDIR}" \
351 --with-low-memory \ 406 --with-low-memory \
352 --enable-assembler \
353 --enable-local-infile \ 407 --enable-local-infile \
354 --with-mysqld-user=mysql \ 408 --with-mysqld-user=mysql \
355 --with-client-ldflags=-lstdc++ \ 409 --with-client-ldflags=-lstdc++ \
356 --enable-thread-safe-client \ 410 --enable-thread-safe-client \
357 --with-comment="Gentoo Linux ${PF}" \ 411 --with-comment="Gentoo Linux ${PF}" \
358 --with-unix-socket-path="/var/run/mysqld/mysqld${MY_SUFFIX}.sock" \ 412 --with-unix-socket-path="/var/run/mysqld/mysqld.sock" \
359 --with-zlib-dir=/usr \
360 --with-lib-ccflags="-fPIC" \
361 --without-readline \ 413 --without-readline \
362 --without-docs \ 414 --without-docs \
363 ${myconf} || die "bad ./configure" 415 ${myconf} || die "bad ./configure"
364 416
365 # TODO Move this before autoreconf !!! 417 # TODO Move this before autoreconf !!!
366 find . -name 'Makefile' \ 418 find . -type f -name Makefile -print0 \
367 -exec sed --in-place \ 419 | xargs -0 -n100 sed -i \
368 -e 's|^pkglibdir\s*=\s*$(libdir)/mysql|pkglibdir = $(libdir)|' \ 420 -e 's|^pkglibdir *= *$(libdir)/mysql|pkglibdir = $(libdir)|;s|^pkgincludedir *= *$(includedir)/mysql|pkgincludedir = $(includedir)|'
369 -e 's|^pkgincludedir\s*=\s*$(includedir)/mysql|pkgincludedir = $(includedir)|' \
370 {} \;
371 421
372 emake || die "compile problem" 422 emake || die "compile problem"
373} 423}
374 424
375mysql_src_install() { 425mysql_src_install() {
379 429
380 insinto "${MY_INCLUDEDIR}" 430 insinto "${MY_INCLUDEDIR}"
381 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h 431 doins "${MY_INCLUDEDIR}"/my_{config,dir}.h
382 432
383 # convenience links 433 # convenience links
384 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlanalyze${MY_SUFFIX}" 434 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze"
385 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlrepair${MY_SUFFIX}" 435 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair"
386 dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqloptimize${MY_SUFFIX}" 436 dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize"
387 437
388 # various junk (my-*.cnf moved elsewhere) 438 # various junk (my-*.cnf moved elsewhere)
389 rm -rf "${D}/usr/share/info" 439 rm -rf "${D}/usr/share/info"
390 for removeme in "mysql-log-rotate" mysql.server* \ 440 for removeme in "mysql-log-rotate" mysql.server* \
391 binary-configure* my-*.cnf mi_test_all* 441 binary-configure* my-*.cnf mi_test_all*
392 do 442 do
393 rm -f ${D}/usr/share/mysql/${removeme} 443 rm -f ${D}/usr/share/mysql/${removeme}
394 done 444 done
395 445
396 # TODO change at Makefile-am level
397 for moveme in "mysql_fix_privilege_tables.sql" \
398 "fill_help_tables.sql" "ndb-config-2-node.ini"
399 do
400 mv -f "${D}/usr/share/mysql/${moveme}" "${D}/usr/share/mysql${MY_SUFFIX}/" 2>/dev/null
401 done
402
403 if [[ -n "${MY_SUFFIX}" ]] ; then
404 local notcatched=$(ls "${D}/usr/share/mysql"/*)
405 if [[ -n "${notcatched}" ]] ; then
406 ewarn "QA notice"
407 ewarn "${notcatched} files in /usr/share/mysql"
408 ewarn "bug mysql-herd to manage them"
409 fi
410 rm -rf "${D}/usr/share/mysql"
411 fi
412
413 # clean up stuff for a minimal build 446 # clean up stuff for a minimal build
414 # this is anything server-specific 447 # this is anything server-specific
415 if useq minimal; then 448 if useq "minimal" ; then
416 rm -rf ${D}${MY_SHAREDSTATEDIR}/{mysql-test,sql-bench} 449 rm -rf ${D}${MY_SHAREDSTATEDIR}/{mysql-test,sql-bench}
417 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} 450 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}
418 rm -f "${D}/usr/sbin/mysqld${MY_SUFFIX}" 451 rm -f "${D}/usr/sbin/mysqld"
419 rm -f ${D}${MY_LIBDIR}/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a 452 rm -f ${D}${MY_LIBDIR}/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a
420 fi 453 fi
421 454
422 # config stuff 455 # config stuff
423 insinto "${MY_SYSCONFDIR}" 456 insinto "${MY_SYSCONFDIR}"
424 doins scripts/mysqlaccess.conf 457 doins scripts/mysqlaccess.conf
458 sed -e "s!@MY_SUFFIX@!!g" \
459 -e "s!@DATADIR@!${DATADIR}!g" \
460 "${FILESDIR}/my.cnf-4.1-r1" \
461 > "${TMPDIR}/my.cnf.ok"
425 newins "${FILESDIR}/my.cnf-4.1-r1" my.cnf 462 newins "${TMPDIR}/my.cnf.ok" my.cnf
463
426 insinto "/etc/conf.d" 464 insinto "/etc/conf.d"
427 newins "${FILESDIR}/mysql-slot.conf.d-r2" "mysql" 465 newins "${FILESDIR}/mysql.conf.d-r1" "mysql"
428 mysql_version_is_at_least "5.00.11.00" \ 466 mysql_version_is_at_least "5.00.11.00" \
429 && newins "${FILESDIR}/mysqlmanager-slot.conf.d" "mysqlmanager" 467 && newins "${FILESDIR}/mysqlmanager.conf.d" "mysqlmanager"
430
431 sed --in-place \
432 -e "s/@MY_SUFFIX@/${MY_SUFFIX}/" \
433 -e "s/@DATADIR@/${DATADIR}/" \
434 "${D}/etc/mysql${MY_SUFFIX}/my.cnf"
435 468
436 # minimal builds don't have the server 469 # minimal builds don't have the server
437 if ! useq minimal; then 470 if ! useq "minimal" ; then
438 exeinto /etc/init.d 471 exeinto /etc/init.d
439 newexe "${FILESDIR}/mysql-slot.rc6-r2" "mysql" 472 newexe "${FILESDIR}/mysql.rc6-r3" "mysql"
440 [[ ${SLOT} -gt 0 ]] && dosym "/etc/init.d/mysql" "/etc/init.d/mysql${MY_SUFFIX}"
441 473
442 mysql_version_is_at_least "5.00.11.00" \ 474 mysql_version_is_at_least "5.00.11.00" \
443 && newexe "${FILESDIR}/mysqlmanager-slot.rc6" "mysqlmanager" 475 && newexe "${FILESDIR}/mysqlmanager.rc6" "mysqlmanager"
444 insinto /etc/logrotate.d 476 insinto /etc/logrotate.d
445 sed -e "s!___MY_SUFFIX___!${MY_SUFFIX}!" \
446 "${FILESDIR}/logrotate-slot.mysql" \
447 > "${TMPDIR}/logrotate.mysql"
448 newins "${TMPDIR}/logrotate.mysql" "mysql${MY_SUFFIX}" 477 newins "${FILESDIR}/logrotate.mysql" "mysql"
449 478
450 #empty dirs... 479 #empty dirs...
451 diropts "-m0750" 480 diropts "-m0750"
452 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then 481 if [[ "${PREVIOUS_DATADIR}" != "yes" ]] ; then
453 dodir "${DATADIR}" 482 dodir "${DATADIR}"
464 fi 493 fi
465 494
466 # docs 495 # docs
467 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE 496 dodoc README COPYING ChangeLog EXCEPTIONS-CLIENT INSTALL-SOURCE
468 # minimal builds don't have the server 497 # minimal builds don't have the server
469 if ! useq minimal; then 498 if ! useq "minimal" ; then
470 docinto "support-files" 499 docinto "support-files"
471 for script in \ 500 for script in \
472 support-files/my-*.cnf \ 501 support-files/my-*.cnf \
473 support-files/magic \ 502 support-files/magic \
474 support-files/ndb-config-2-node.ini 503 support-files/ndb-config-2-node.ini
480 for script in scripts/mysql* ; do 509 for script in scripts/mysql* ; do
481 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" 510 [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}"
482 done 511 done
483 fi 512 fi
484 513
485 # oops, temporary fix 514 ROOT="${D}" mysql_lib_symlinks
486 mysql_check_version_range "5.00.16.00 to 5.00.18.99" \
487 && cp -f \
488 "${WORKDIR}/mysql-extras/fill_help_tables.sql-5.0" \
489 "${D}/usr/share/mysql${MY_SUFFIX}/fill_help_tables.sql"
490} 515}
491 516
492mysql_pkg_preinst() { 517mysql_pkg_preinst() {
493 518
494 enewgroup mysql 60 || die "problem adding group mysql" 519 enewgroup mysql 60 || die "problem adding group mysql"
497} 522}
498 523
499mysql_pkg_postinst() { 524mysql_pkg_postinst() {
500 525
501 mysql_init_vars 526 mysql_init_vars
502 mysql_lib_symlinks
503 527
504 # mind at FEATURES=collision-protect before to remove this 528 # mind at FEATURES=collision-protect before to remove this
505 [ -d "${ROOT}/var/log/mysql" ] \ 529 [ -d "${ROOT}/var/log/mysql" ] \
506 || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" 530 || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
507 531
508 #secure the logfiles... does this bother anybody? 532 #secure the logfiles... does this bother anybody?
509 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} 533 touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err}
510 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql* 534 chown mysql:mysql "${ROOT}${MY_LOGDIR}"/mysql*
511 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql* 535 chmod 0660 "${ROOT}${MY_LOGDIR}"/mysql*
512 536
513 # create a list of files, to be used
514 # by external utilities
515 # uncompressed because of the small size
516 local filelist="${ROOT}/var/lib/eselect/mysql/mysql${MY_SUFFIX}"
517 pushd "${D}/" &>/dev/null
518 mkdir -p "${ROOT}/var/lib/eselect/mysql/"
519 env -i find usr/bin/ usr/sbin/ usr/share/man \
520 -type f -name "*${MY_SUFFIX}*" \
521 -and -not -name "mysql_config${MY_SUFFIX}" \
522 > "${filelist}.filelist"
523 echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}.filelist"
524 echo "${MY_LIBDIR#"/"}" >> "${filelist}.filelist"
525 echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}.filelist"
526 popd &>/dev/null
527
528 if ! useq minimal; then 537 if ! useq "minimal" ; then
529 if [[ ${SLOT} -gt 0 ]] ; then
530 if [[ -f "${ROOT}/usr/sbin/mysqld" ]] ; then
531 einfo "you may want to run unmerge any unslotted MySQL versions with "
532 einfo "emerge -C --pretend dev-db/mysql"
533 einfo "emerge -C =dev-db/mysql-X.Y.Z"
534 einfo "After the unmerge run \"eselect myqsl list\" followed by a "
535 einfo "\"eselect myqsl set 1\" to chose the default mysql server"
536 else
537 local tmpres="$( eselect mysql show )"
538 # "like grep -q unset"
539 if [[ "{$tmpres}" == "{$tmpres/unset/}" ]] ; then
540 eselect mysql set 1
541 else
542 einfo "The version of mysql emerged now stils is _NOT_ the default"
543 einfo "you may want to run \"eselect myqsl list\" followed by a "
544 einfo "\"eselect myqsl set 1\" to chose the default mysql server"
545 fi
546 fi
547 fi
548
549 # your friendly public service announcement... 538 # your friendly public service announcement...
550 einfo 539 einfo
551 einfo "You might want to run:" 540 einfo "You might want to run:"
552 einfo "\"emerge --config =${CATEGORY}/${PF}\"" 541 einfo "\"emerge --config =${CATEGORY}/${PF}\""
553 einfo "if this is a new install." 542 einfo "if this is a new install."
554 einfo 543 einfo
544 mysql_version_is_at_least "5.01.00.00" \
555 einfo "InnoDB is not optional as of MySQL-4.0.24, at the request of upstream." 545 || einfo "InnoDB is not optional as of MySQL-4.0.24, at the request of upstream."
556 fi 546 fi
557} 547}
558 548
559mysql_pkg_config() { 549mysql_pkg_config() {
560 mysql_init_vars 550 mysql_init_vars
597 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \ 587 && cp "${help_tables}" "${TMPDIR}/fill_help_tables.sql" \
598 || touch "${TMPDIR}/fill_help_tables.sql" 588 || touch "${TMPDIR}/fill_help_tables.sql"
599 help_tables="${TMPDIR}/fill_help_tables.sql" 589 help_tables="${TMPDIR}/fill_help_tables.sql"
600 590
601 pushd "${TMPDIR}" &>/dev/null 591 pushd "${TMPDIR}" &>/dev/null
602 ${ROOT}/usr/bin/mysql_install_db${MY_SUFFIX} | grep -B5 -A999 -i "ERROR" 592 ${ROOT}/usr/bin/mysql_install_db | grep -B5 -A999 -i "ERROR"
603 popd &>/dev/null 593 popd &>/dev/null
604 [[ -f ${ROOT}/${DATADIR}/mysql/user.frm ]] || die "MySQL databases not installed" 594 [[ -f ${ROOT}/${DATADIR}/mysql/user.frm ]] \
595 || die "MySQL databases not installed"
605 chown -R mysql:mysql ${ROOT}/${DATADIR} 2> /dev/null 596 chown -R mysql:mysql ${ROOT}/${DATADIR} 2> /dev/null
606 chmod 0750 ${ROOT}/${DATADIR} 2> /dev/null 597 chmod 0750 ${ROOT}/${DATADIR} 2> /dev/null
607 598
608 if mysql_version_is_at_least "4.01.03.00" ; then 599 if mysql_version_is_at_least "4.01.03.00" ; then
609 options="--skip-ndbcluster" 600 options="--skip-ndbcluster"
610 601
611 # Filling timezones, see 602 # Filling timezones, see
612 # http://dev.mysql.com/doc/mysql/en/time-zone-support.html 603 # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
613 ${ROOT}/usr/bin/mysql_tzinfo_to_sql${MY_SUFFIX} ${ROOT}/usr/share/zoneinfo \ 604 ${ROOT}/usr/bin/mysql_tzinfo_to_sql ${ROOT}/usr/share/zoneinfo \
614 > "${sqltmp}" 2>/dev/null 605 > "${sqltmp}" 2>/dev/null
615 606
616 if [[ -r "${help_tables}" ]] ; then 607 if [[ -r "${help_tables}" ]] ; then
617 cat "${help_tables}" >> "${sqltmp}" 608 cat "${help_tables}" >> "${sqltmp}"
618 fi 609 fi
619 fi 610 fi
620 611
621 local socket=${ROOT}/var/run/mysqld/mysqld${MY_SUFFIX}${RANDOM}.sock 612 local socket=${ROOT}/var/run/mysqld/mysqld${RANDOM}.sock
622 local pidfile=${ROOT}/var/run/mysqld/mysqld${MY_SUFFIX}${RANDOM}.sock 613 local pidfile=${ROOT}/var/run/mysqld/mysqld${RANDOM}.pid
623 local mysqld="${ROOT}/usr/sbin/mysqld${MY_SUFFIX} \ 614 local mysqld="${ROOT}/usr/sbin/mysqld \
624 ${options} \ 615 ${options} \
625 --user=mysql \ 616 --user=mysql \
626 --skip-grant-tables \ 617 --skip-grant-tables \
627 --basedir=${ROOT}/usr \ 618 --basedir=${ROOT}/usr \
628 --datadir=${ROOT}/${DATADIR} \ 619 --datadir=${ROOT}/${DATADIR} \
640 sleep 1 631 sleep 1
641 done 632 done
642 633
643 # do this from memory we don't want clear text password in temp files 634 # do this from memory we don't want clear text password in temp files
644 local sql="UPDATE mysql.user SET Password = PASSWORD('${pwd1}') WHERE USER='root'" 635 local sql="UPDATE mysql.user SET Password = PASSWORD('${pwd1}') WHERE USER='root'"
645 ${ROOT}/usr/bin/mysql${MY_SUFFIX} \ 636 ${ROOT}/usr/bin/mysql \
646 --socket=${socket} \ 637 --socket=${socket} \
647 -hlocalhost \ 638 -hlocalhost \
648 -e "${sql}" 639 -e "${sql}"
649 640
650 einfo "Loading \"zoneinfo\" this step may require few seconds" 641 einfo "Loading \"zoneinfo\" this step may require few seconds"
651 642
652 ${ROOT}/usr/bin/mysql${MY_SUFFIX} \ 643 ${ROOT}/usr/bin/mysql \
653 --socket=${socket} \ 644 --socket=${socket} \
654 -hlocalhost \ 645 -hlocalhost \
655 -uroot \ 646 -uroot \
656 -p"${pwd1}" \ 647 -p"${pwd1}" \
657 mysql < "${sqltmp}" 648 mysql < "${sqltmp}"
664 einfo "done" 655 einfo "done"
665} 656}
666 657
667mysql_pkg_postrm() { 658mysql_pkg_postrm() {
668 mysql_lib_symlinks 659 mysql_lib_symlinks
669 if [[ ${SLOT} -gt 0 ]] ; then
670 einfo "you may want to run \"eselect myqsl list\" followed by a "
671 einfo "\"eselect myqsl list\" to chose the default mysql server"
672 fi
673} 660}

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.28

  ViewVC Help
Powered by ViewVC 1.1.20