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

Diff of /eclass/mysql.eclass

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

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

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.26

  ViewVC Help
Powered by ViewVC 1.1.20