Gentoo Archives: gentoo-commits

From: Brian Evans <grknight@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/mysql:master commit in: dev-db/mysql/
Date: Thu, 28 Jun 2018 02:10:24
Message-Id: 1530151654.f9f891f6413c6faa997ed654440888c899eca502.grknight@gentoo
1 commit: f9f891f6413c6faa997ed654440888c899eca502
2 Author: Brian Evans <grknight <AT> gentoo <DOT> org>
3 AuthorDate: Thu Jun 28 02:07:34 2018 +0000
4 Commit: Brian Evans <grknight <AT> gentoo <DOT> org>
5 CommitDate: Thu Jun 28 02:07:34 2018 +0000
6 URL: https://gitweb.gentoo.org/proj/mysql.git/commit/?id=f9f891f6
7
8 dev-db/mysql: client-libs version of 5.5.60
9
10 Package-Manager: Portage-2.3.40, Repoman-2.3.9
11 Manifest-Sign-Key: 0xD1F781EFF9F4A3B6
12
13 dev-db/mysql/Manifest | 28 +-
14 dev-db/mysql/mysql-5.5.60-r1.ebuild | 780 ++++++++++++++++++++++++++++++++++++
15 2 files changed, 795 insertions(+), 13 deletions(-)
16
17 diff --git a/dev-db/mysql/Manifest b/dev-db/mysql/Manifest
18 index 33b27be..7fecb3a 100644
19 --- a/dev-db/mysql/Manifest
20 +++ b/dev-db/mysql/Manifest
21 @@ -5,6 +5,7 @@ DIST mysql-4.0.27.tar.gz 11152643 SHA256 c79f83bed7c1ea98e018b8829375b55c1de838d
22 DIST mysql-4.1.22.tar.gz 17761101 SHA256 6bd2436fd0f233bb1518e15975cb4e9fa4434acb53c3c3cd7d4648219abf58e9 SHA512 9de1c2b27cf428a10f67a6217fc2783b638beb6345e2127a4163ceb286073886d223de861c40be0ab36ea78ec5f33ccd5ee457d1e35e67b081d629118b68d390 WHIRLPOOL b40ca2e0d07fc0bd504e57b7eb005d36cf842bb668e93722c723bcc5a797dc9b456ee8971ea99bfc2b9119a2e19ee599f8441eb4601709eb4238196a27319257
23 DIST mysql-5.0.96.tar.gz 22686667 SHA256 43853814775158aa1650f483530a7dde153957579e3349e3ec780b89d741fc84 SHA512 2e3b4ac221c1c1c11618dc79067a7feff680380fcea435813287b02cb0dff45fb5a32a4393c53cf13165f6efc99dbf347a9388ad364cfdf2e392760a310aa5a9 WHIRLPOOL 3e167e4ff4c56095fbdee55b7e619c9b7ad2120eb72c9a58fe77a023ab6e7498c74e2053876e61687d7812f9ff7022303728ddda49732e7569035684263d2517
24 DIST mysql-5.1.73.tar.gz 24023347 SHA256 05ebe21305408b24407d14b77607a3e5ffa3c300e03f1359d3066f301989dcb5 SHA512 2e3651ebc1370dad7e01158cdd99133ed3f90c985114766b6282d58b743ae7bce16db797e82819fa5bbc2fa53d89811fd76b278c7459338288e7957634a8c3ff WHIRLPOOL f47c3fe1cd98b8ca2163646c760bd9763c65eab0591b31fe30a8c55c72c8b10d7b549b394493695cf98f50999364409ef8158661141277e6d99b011835aef942
25 +DIST mysql-5.5.60.tar.gz 21025041 SHA256 a34112e1748823f6dfd0d129fe29a629cf35b8702f9dfaf1f24caf89ab523d1c SHA512 734395f3ce2c12e7703fe48d5bb2ce85ff8d7f04ae51cbe2d04a46b72b9689f804e5b498ae0b4722b0c098e2eed43d4f93b622964059525e6d9d14a47d55f775 WHIRLPOOL cf00fad25570cc991c4f4666667cb35a7fdec3831e233f2647c99761c1bcec665fc9a425608b40111095ffe8fddd37bf2a184880c7e698337999c5022e746abf
26 DIST mysql-5.6.30.tar.gz 32223818 SHA256 48464df00aad9b9dfc26c903529ddad944a7562aa28e66e98e4f3f0c35179deb SHA512 b9f5b22a0557fbdd765fd3c379395584dd35bbec2d7504eb132f734129c0d95d24dc538c9b64524870bbecb92fa2f1e95b49ccfe22531ed17ec1e754f08d491b WHIRLPOOL f56d4e9d2ac801605bb941d1a8ba4b876d838a5e3bdac2e644477e87f2e5d439594c28d0e1c1d0c45ebb38fbf4183c429dc8c53bd7aa76aeea95acd1774ca71e
27 DIST mysql-boost-5.7.17.tar.gz 61480982 SHA256 b75bba87199ef6a6ccc5dfbcaf70949009dc12089eafad8c5254afc9002aa903 SHA512 a1512abeba307fd21687677d2ee4bf20ced373312824de034e9b340d97e67eb4fcc5caa4ad7d9f58d6c0ddf57f6f6c0b0978e7b01c46f397ac661da843e3dfa6 WHIRLPOOL c9c078afdb1f8eb4405593611c179552493265c50b1eb1bac8cecadbac07103a11a05daf8c26d3d751526d5a69f14a8b6fce40b1aaaac7b9b4680679bf61bc4f
28 DIST mysql-boost-5.7.21.tar.gz 48931457 SHA256 ad29ecb6fb3c3571394fe231633a2d1d188d49e9eb749daa4e8799b7630daa09 SHA512 29a1bfa1f5d5e354b66ca8c9fdaf7ee88de3d57bee3c6368861b46ab6d992affb7604577c06f241df542b96ab088c055473fd76584376dd149956ae1dd8726f3 WHIRLPOOL 0a86c9e088c870e5e8bf90b15ba53cd61e126143c5147adcbf5273c5dd8018bfe23fbbfd1b5055b9e9ece0a2b1fab21409eaa9bd939ec248410a92d4fe0052ab
29 @@ -14,24 +15,25 @@ DIST mysql-extras-20120401-2131Z.tar.bz2 1835097 SHA256 95e531799ed267c566da8b07
30 DIST mysql-extras-20140514-0124Z.tar.bz2 1493742 SHA256 0cdda9f8587532375274510a8a1f8fe5e80f10cfdf851a01074109803f7ee4cf SHA512 7a798809809b35a515a3475be5f1a96547d495592c83c4cf5c79fb07ceb45a04000da8922d051004c0f2d944f92ca47b75ad08d06a8dccca2ae9f94778d31a7e WHIRLPOOL 371446d80cd9fa22a28eeecde8d18c9c3ca76db9bc57a4ab2073ed0fc1d19a70a06a33cb92257a671849e4bad8bfb9f235272ee1221c7c21ce5f45bc900a59cc
31 DIST mysql-extras-20160212-0233Z.tar.bz2 297332 SHA256 01a52587ef1335b2795197d2e547c0b3a1e4b705db09f96cdfb45d2152b6536b SHA512 956dbdcb987556c0625944848f97a36d096cd1f1712a2e051dd027f2856d3c6e94a18d23faca71882260c4b12ee329e3a5f569443b877a3c3e5e88146bfac916 WHIRLPOOL e3837d329ddd137be60fe9d0b37f35ed2e0e7fe1383f38ee45617be288ae318a444e6befdfbaf64b07d4a88ec47fec5cd88d733ecd5bb32ce40f3ba8d09573cd
32 DIST mysql-extras-20180312-2011Z.tar.bz2 319047 SHA256 5d83747593b2276ecaf253b193814df2bfe170de57ceb7565e3d9f215df92254 SHA512 b0aa9fc8fbc050451ef147cee99b00cf10d34a71641837821e78655241f7d79a94fe2efb4cef9a23fe9741e08ada2fc0b58ef3b3663752bc567babfbcaa547c8 WHIRLPOOL 29085d38c285e62fa5925e70e01fda98ce5582e660b84fa09992049b5c222d1c14e73b94c63cb754bd94df00ce154b24ea5d4ee472de1766b6941cb05503c493
33 +DIST mysql-extras-20180628-0201Z.tar.bz2 322141 SHA256 8317028fa98cc4abd819d11191fb82026eb9c4d23490b7c1d42590731fbc834d SHA512 71a3800ec091b41e41d25536199149eb714c0bbfc0f6fc478e8e4dcaf4cf87a7e4d49c513da3c9badc0de810d7d78c05ad91dd898e45005b42136346237de42a WHIRLPOOL 71a5d8d09ede40a2d7adad6d57e1b546fabb34610c92ede6e0b472c0d84ad016e39ec7fcb038c708723535542dfd9caace22f2b8dd822951ba8c0ee2778c462b
34 DIST pbxt-1.0.11-6-pre-ga.tar.gz 3156307 SHA256 71ff3d86e9e5691f3efe541bf31f55a7ec2a88af27df6ad853b65902e00e6d12 SHA512 fa238303f06e0a9adfb10bd5a2e1d2e4850d2c17a350af3874cbff099d6e47b7c555d750c584d06a3ca87c1eb1e9301a9619d8d9a4cffb7fd0169b2b3a63c80c WHIRLPOOL 05cdd39f6f5dafff2def0062a00a24eff6cf6d8754f622b133365cef47cd6b828df5500ac407359d0793a75dd239ec1e49a13d2400a01ddf8b4cef7466e86962
35 DIST percona-xtradb-1.0.6-10.tar.gz 1676716 SHA256 e3aa818f13cf669412e59ad194eae8eada7a857bf7a4260e4bb41cab4d7ae39c SHA512 72e4b656b22a0420e6f5935dc28060e5c50fbeb48c6d1ae430579d9ccef8042fdd4dde128cc977b903de6221f7021e8c87ea29fe6a8a8c74edb84bf54ab889f3 WHIRLPOOL a916879be315498da27c60992efa4d19e91305b81242925e161547f3fb97a820256e1d07863e9e007ef843af54cd087ce5ac47d5ed1b70862da6cd5a9d81eccf
36 -----BEGIN PGP SIGNATURE-----
37 Version: GnuPG v2
38
39 -iQKTBAEBCAB9FiEEZsLkTtkOMnWOfVXA0feB7/n0o7YFAlqm4mdfFIAAAAAALgAo
40 +iQKTBAEBCAB9FiEEZsLkTtkOMnWOfVXA0feB7/n0o7YFAls0QuJfFIAAAAAALgAo
41 aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDY2
42 QzJFNDRFRDkwRTMyNzU4RTdENTVDMEQxRjc4MUVGRjlGNEEzQjYACgkQ0feB7/n0
43 -o7ad7Q//RtIMkOS207JdXNF9CIwO7CneIsjI/Vft1P6eucBHVGJsd35bD4i4Q6om
44 -VNqhfStQAY1c8dnsCEsJIUE65jR03YXQKgowsxCZYYgo+QnIL7FUM4ISAKVtWzrJ
45 -dOYmpSu/qpdMjP8nowkju4+uGGhLNMFIKwyxBJHxigRabn1ZF/f/OskRzKqFOWnY
46 -ULeFcCR6NByphZ9G9Qmj59AwLs85ND3Vd9meoRW07pkqjlQBCr36DY4/6SkuUnoY
47 -7cGpsii09BIDEXhZg5Egy3EsY3LfAVdVjewkFcNHNTnCsjvrVewKMPc+akHdOx3R
48 -FeVQHPLSSXRvJEPGUihL6dLgVWjdpPdZBWDBzRMNbrrlq/JfL8+JTN3PdKTg1wDy
49 -IIkZgiNydz7gT+oYrd6k+yIWI2TeOFTjDEEwZsxQg8M73Rf77UrzKNEFYgs8mBfa
50 -CNSdezlbXwwNS2CKFt3MK46Eu3YjvTqSDztkbHcqMblWwJWjEMcQrrPBq48GL9Lw
51 -byrxAcoEs+rsfQn2ucULMeM/nYQk43izavauR5J9AKByXqBUEUt5SA9gYP32d+QR
52 -VznQEIwky+Bk/zT/BPepCmH+k829Ap7izpWm425Ue9B8titpa+ATr7Nz1CLH3Jh0
53 -nOeglQVAnRk/lx63U9dlx8ORhO4jonz9RwdrgxM+tJfIKt9kFe0=
54 -=xvZh
55 +o7aEDBAAwu7ePI/lr3+FdeSrm3ILruqBTy+aOOAUorP5xbsJT9tksVo2XlTQiW9f
56 +8gdocGWMbEQ1FueGF6UgRMoExy52DufUn6xpH44kwV5xXmw08FwAHbeTUmH87ctH
57 +DKt2i+92Mfk81GKNh5cpn3El7mhN80dnhQ3H8D2UoxzGz7SEQph7dTqLQZcdc04z
58 +DOX6SZQg1qveeWpk3LaILYpYQidSaKdNbHOZOgRXnwjnxOIqdSlqo89ha14q0yln
59 +2Wd9RtCcJphQd0oQbyILn4J8H3pll/K6w4NU13uXajizPESiBokaRo8kOTL2g+/j
60 +YVKDRidiUBQgB+ZTuzTZMlRqAn+VoedPMyl0QBJ5ZIw+YjEX/77hIe1/jlnRwcYc
61 +8DstwUGJJOPBVx6+ORaHRPdjvC3PVUkrlzGr7+DHfyMfIVW2vUEL7UoCkWj8lN8D
62 +WLgRaM8/iWTFt9FCfQ+WtCEVbdkpzqNdzmEDSCN0yWovIIkMtVUpoMczAhBNBrvC
63 +2vth9nXv04C04V0jneir/auCYCpu23VQcIB2cAJDYWNA417WwcelHswommp8LLJ1
64 +gA4MHriS15m+QDSD+0FS1paHmB+hao0yP452uwEdlbzQL/qKArDNBvdhgERO08dQ
65 +oxQ1dfWZ8rRWY4VWmlu2pDwjzFip3FfEMsnCsPkCKt91YSlNAAE=
66 +=+755
67 -----END PGP SIGNATURE-----
68
69 diff --git a/dev-db/mysql/mysql-5.5.60-r1.ebuild b/dev-db/mysql/mysql-5.5.60-r1.ebuild
70 new file mode 100644
71 index 0000000..6b499b3
72 --- /dev/null
73 +++ b/dev-db/mysql/mysql-5.5.60-r1.ebuild
74 @@ -0,0 +1,780 @@
75 +# Copyright 1999-2018 Gentoo Foundation
76 +# Distributed under the terms of the GNU General Public License v2
77 +
78 +EAPI="6"
79 +MY_EXTRAS_VER="20180628-0201Z"
80 +SUBSLOT="18"
81 +
82 +# Keeping eutils in EAPI=6 for emktemp in pkg_config
83 +
84 +inherit eutils flag-o-matic prefix toolchain-funcs user cmake-utils multilib-build
85 +
86 +SRC_URI="https://cdn.mysql.com/Downloads/MySQL-5.5/${P}.tar.gz
87 + https://downloads.mysql.com/archives/MySQL-5.5/${P}.tar.gz"
88 +# Gentoo patches to MySQL
89 +if [[ "${MY_EXTRAS_VER}" != "live" && "${MY_EXTRAS_VER}" != "none" ]]; then
90 + SRC_URI="${SRC_URI}
91 + mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
92 + https://gitweb.gentoo.org/proj/mysql-extras.git/snapshot/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
93 + https://dev.gentoo.org/~grknight/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
94 + https://dev.gentoo.org/~robbat2/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2
95 + https://dev.gentoo.org/~jmbsvicetto/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2"
96 +fi
97 +
98 +HOMEPAGE="https://mysql.com/"
99 +DESCRIPTION="An enhanced, drop-in replacement for MySQL"
100 +LICENSE="GPL-2"
101 +SLOT="0/${SUBSLOT:-0}"
102 +IUSE="bindist client-libs debug extraengine jemalloc latin1 libressl
103 + +perl profiling selinux +server static static-libs systemtap tcmalloc
104 + test yassl"
105 +
106 +# Tests always fail when libressl is enabled due to hard-coded ciphers in the tests
107 +RESTRICT="!bindist? ( bindist ) libressl? ( test )"
108 +
109 +REQUIRED_USE="?? ( tcmalloc jemalloc )
110 + static? ( yassl )"
111 +
112 +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~x64-solaris ~x86-solaris"
113 +
114 +# Shorten the path because the socket path length must be shorter than 107 chars
115 +# and we will run a mysql server during test phase
116 +S="${WORKDIR}/mysql"
117 +
118 +if [[ "${MY_EXTRAS_VER}" == "live" ]] ; then
119 + MY_PATCH_DIR="${WORKDIR%/}/mysql-extras"
120 + inherit git-r3
121 + EGIT_REPO_URI="git://anongit.gentoo.org/proj/mysql-extras.git"
122 + EGIT_CHECKOUT_DIR="${WORKDIR%/}/mysql-extras"
123 + EGIT_CLONE_TYPE=shallow
124 +else
125 + MY_PATCH_DIR="${WORKDIR%/}/mysql-extras-${MY_EXTRAS_VER}"
126 +fi
127 +
128 +PATCHES=(
129 + "${MY_PATCH_DIR}/01050_all_mysql_config_cleanup-5.5.patch"
130 + "${MY_PATCH_DIR}/02040_all_embedded-library-shared-5.5.10.patch"
131 + "${MY_PATCH_DIR}/20001_all_fix-minimal-build-cmake-mysql-5.5.41.patch"
132 + "${MY_PATCH_DIR}/20002_all_mysql-va-list.patch"
133 + "${MY_PATCH_DIR}/20006_all_cmake_elib-mysql-5.5.53.patch"
134 + "${MY_PATCH_DIR}/20007_all_cmake-debug-werror-5.6.22.patch"
135 + "${MY_PATCH_DIR}/20008_all_mysql-tzinfo-symlink-5.6.37.patch"
136 + "${MY_PATCH_DIR}/20009_all_mysql_myodbc_symbol_fix-5.5.38.patch"
137 + "${MY_PATCH_DIR}/20018_all_mysql-5.5.60-without-clientlibs-tools.patch"
138 + "${MY_PATCH_DIR}/20027_all_mysql-5.5-perl5.26-includes.patch"
139 + "${MY_PATCH_DIR}/20030_all_mysql-5.5-fix-client-mysql-type.patch"
140 +)
141 +
142 +# Be warned, *DEPEND are version-dependant
143 +# These are used for both runtime and compiletime
144 +COMMON_DEPEND="
145 + kernel_linux? (
146 + sys-process/procps:0=
147 + dev-libs/libaio:0=
148 + )
149 + >=sys-apps/sed-4
150 + >=sys-apps/texinfo-4.7-r1
151 + jemalloc? ( dev-libs/jemalloc:0= )
152 + tcmalloc? ( dev-util/google-perftools:0= )
153 + systemtap? ( >=dev-util/systemtap-1.3:0= )
154 + !yassl? (
155 + !libressl? ( dev-libs/openssl:0= !>=dev-libs/openssl-1.1 )
156 + libressl? ( dev-libs/libressl:0= )
157 + )
158 + >=sys-libs/zlib-1.2.3:0=
159 + sys-libs/ncurses:0=
160 + !bindist? (
161 + >=sys-libs/readline-4.1:0=
162 + )
163 + !client-libs? ( dev-db/mysql-connector-c[${MULTILIB_USEDEP},static-libs?] )
164 +"
165 +DEPEND="virtual/yacc
166 + static? ( sys-libs/ncurses[static-libs] )
167 + || ( >=sys-devel/gcc-3.4.6 >=sys-devel/gcc-apple-4.0 )
168 + ${COMMON_DEPEND}"
169 +RDEPEND="selinux? ( sec-policy/selinux-mysql )
170 + client-libs? ( !dev-db/mariadb-connector-c[mysqlcompat] !dev-db/mysql-connector-c )
171 + !dev-db/mariadb !dev-db/mariadb-galera !dev-db/percona-server !dev-db/mysql-cluster
172 + server? ( !prefix? ( dev-db/mysql-init-scripts ) )
173 + ${COMMON_DEPEND}
174 + perl? ( !dev-db/mytop
175 + virtual/perl-Getopt-Long
176 + dev-perl/TermReadKey
177 + virtual/perl-Term-ANSIColor
178 + virtual/perl-Time-HiRes )
179 +"
180 +# For other stuff to bring us in
181 +# dev-perl/DBD-mysql is needed by some scripts installed by MySQL
182 +PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )"
183 +
184 +pkg_setup() {
185 + if [[ ${MERGE_TYPE} != binary ]] ; then
186 + local GCC_MAJOR_SET=$(gcc-major-version)
187 + local GCC_MINOR_SET=$(gcc-minor-version)
188 + # Bug 565584. InnoDB now requires atomic functions introduced with gcc-4.7 on
189 + # non x86{,_64} arches
190 + if ! use amd64 && ! use x86 && [[ ${GCC_MAJOR_SET} -lt 4 || \
191 + ${GCC_MAJOR_SET} -eq 4 && ${GCC_MINOR_SET} -lt 7 ]] ; then
192 + eerror "${PN} needs to be built with gcc-4.7 or later."
193 + eerror "Please use gcc-config to switch to gcc-4.7 or later version."
194 + die
195 + fi
196 + fi
197 + if has test ${FEATURES} && \
198 + use server && ! has userpriv ${FEATURES} ; then
199 + eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
200 + fi
201 +
202 + # This should come after all of the die statements
203 + enewgroup mysql 60 || die "problem adding 'mysql' group"
204 + enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user"
205 +}
206 +
207 +pkg_postinst() {
208 + # Make sure the vars are correctly initialized
209 + mysql_init_vars
210 +
211 + # Create log directory securely if it does not exist
212 + [[ -d "${ROOT}${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}"
213 +
214 + if use server ; then
215 + if [[ -z "${REPLACING_VERSIONS}" ]] ; then
216 + einfo
217 + elog "You might want to run:"
218 + elog "\"emerge --config =${CATEGORY}/${PF}\""
219 + elog "if this is a new install."
220 + elog
221 + elog "If you are switching server implentations, you should run the"
222 + elog "mysql_upgrade tool."
223 + einfo
224 + else
225 + einfo
226 + elog "If you are upgrading major versions, you should run the"
227 + elog "mysql_upgrade tool."
228 + einfo
229 + fi
230 +
231 + einfo
232 + elog "Be sure to edit the my.cnf file to activate your cluster settings."
233 + elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\""
234 + elog "The first time the cluster is activated, you should add"
235 + elog "--wsrep-new-cluster to the options in /etc/conf.d/mysql for one node."
236 + elog "This option should then be removed for subsequent starts."
237 + einfo
238 + fi
239 +}
240 +
241 +src_unpack() {
242 + unpack ${A}
243 + # Grab the patches
244 + [[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR%/}/mysql-extras" git-r3_src_unpack
245 +
246 + mv -f "${WORKDIR%/}/${P}" "${S}" || die
247 +}
248 +
249 +src_prepare() {
250 + _disable_engine() {
251 + echo > "${S%/}/storage/${1}/CMakeLists.txt" || die
252 + }
253 +
254 + _disable_plugin() {
255 + echo > "${S%/}/plugin/${1}/CMakeLists.txt" || die
256 + }
257 +
258 + if use tcmalloc; then
259 + echo "TARGET_LINK_LIBRARIES(mysqld tcmalloc)" >> "${S%/}/sql/CMakeLists.txt" || die
260 + fi
261 +
262 + if use jemalloc; then
263 + echo "TARGET_LINK_LIBRARIES(mysqld jemalloc)" >> "${S%/}/sql/CMakeLists.txt" || die
264 + fi
265 +
266 + local plugin
267 + local server_plugins=( semisync )
268 + local test_plugins=( audit_null daemon_example fulltext )
269 + if ! use server; then # These plugins are for the server
270 + for plugin in "${server_plugins[@]}" ; do
271 + _disable_plugin "${plugin}"
272 + done
273 + fi
274 +
275 + if ! use test; then # These plugins are only used during testing
276 + for plugin in "${test_plugins[@]}" ; do
277 + _disable_plugin "${plugin}"
278 + done
279 + fi
280 +
281 + # Don't build example
282 + _disable_engine example
283 +
284 + cmake-utils_src_prepare
285 +}
286 +
287 +src_configure(){
288 + # Bug #114895, bug #110149
289 + filter-flags "-O" "-O[01]"
290 +
291 + append-cxxflags -felide-constructors
292 +
293 + # bug #283926, with GCC4.4, this is required to get correct behavior.
294 + append-flags -fno-strict-aliasing
295 +
296 + CMAKE_BUILD_TYPE="RelWithDebInfo"
297 +
298 + # debug hack wrt #497532
299 + mycmakeargs=(
300 + -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
301 + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')"
302 + -DCMAKE_INSTALL_PREFIX="${EPREFIX%/}/usr"
303 + -DDEFAULT_SYSCONFDIR="${EPREFIX%/}/etc/mysql"
304 + -DINSTALL_BINDIR=bin
305 + -DINSTALL_DOCDIR=share/doc/${PF}
306 + -DINSTALL_DOCREADMEDIR=share/doc/${PF}
307 + -DINSTALL_INCLUDEDIR=include/mysql
308 + -DINSTALL_INFODIR=share/info
309 + -DINSTALL_LIBDIR=$(get_libdir)
310 + -DINSTALL_MANDIR=share/man
311 + -DINSTALL_MYSQLSHAREDIR=share/mysql
312 + -DINSTALL_PLUGINDIR=$(get_libdir)/mysql/plugin
313 + -DINSTALL_SCRIPTDIR=share/mysql/scripts
314 + -DINSTALL_MYSQLDATADIR="${EPREFIX%/}/var/lib/mysql"
315 + -DINSTALL_SBINDIR=sbin
316 + -DINSTALL_SUPPORTFILESDIR="${EPREFIX%/}/usr/share/mysql"
317 + -DCOMPILATION_COMMENT="Gentoo Linux ${PF}"
318 + -DWITH_UNIT_TESTS=$(usex test ON OFF)
319 + -DWITH_ZLIB=system
320 + -DENABLED_LOCAL_INFILE=1
321 + -DMYSQL_UNIX_ADDR="${EPREFIX%/}/var/run/mysqld/mysqld.sock"
322 + # The build forces this to be defined when cross-compiling. We pass it
323 + # all the time for simplicity and to make sure it is actually correct.
324 + -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1)
325 + -DWITHOUT_CLIENTLIBS=YES
326 + -DWITH_READLINE=$(usex bindist 1 0)
327 + -DENABLE_DTRACE=$(usex systemtap)
328 + )
329 + if use test ; then
330 + mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mysql/mysql-test )
331 + else
332 + mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' )
333 + fi
334 +
335 + if ! use yassl ; then
336 + mycmakeargs+=( -DWITH_SSL=system )
337 + else
338 + mycmakeargs+=( -DWITH_SSL=bundled )
339 + fi
340 +
341 + if use server ; then
342 +
343 + # Federated{,X} must be treated special otherwise they will not be built as plugins
344 + if ! use extraengine ; then
345 + mycmakeargs+=(
346 + -DWITHOUT_FEDERATED_STORAGE_ENGINE=1
347 + -DWITHOUT_FEDERATEDX_STORAGE_ENGINE=1 )
348 + fi
349 +
350 + if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]]; then
351 + ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}"
352 + ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}."
353 + ewarn "You MUST file bugs without these variables set."
354 +
355 + mycmakeargs+=(
356 + -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET}
357 + -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION}
358 + )
359 +
360 + elif ! use latin1 ; then
361 + mycmakeargs+=(
362 + -DDEFAULT_CHARSET=utf8
363 + -DDEFAULT_COLLATION=utf8_general_ci
364 + )
365 + else
366 + mycmakeargs+=(
367 + -DDEFAULT_CHARSET=latin1
368 + -DDEFAULT_COLLATION=latin1_swedish_ci
369 + )
370 + fi
371 + mycmakeargs+=(
372 + -DINSTALL_SQLBENCHDIR=share/mysql
373 + -DEXTRA_CHARSETS=all
374 + -DDISABLE_SHARED=$(usex static YES NO)
375 + -DWITH_EMBEDDED_SERVER=OFF
376 + -DENABLED_PROFILING=$(usex profiling)
377 + )
378 +
379 + if use static; then
380 + mycmakeargs+=( -DWITH_PIC=1 )
381 + fi
382 +
383 + # Storage engines
384 + mycmakeargs+=(
385 + -DWITH_ARCHIVE_STORAGE_ENGINE=1
386 + -DWITH_BLACKHOLE_STORAGE_ENGINE=1
387 + -DWITH_CSV_STORAGE_ENGINE=1
388 + -DWITH_HEAP_STORAGE_ENGINE=1
389 + -DWITH_INNOBASE_STORAGE_ENGINE=1
390 + -DWITH_MYISAMMRG_STORAGE_ENGINE=1
391 + -DWITH_MYISAM_STORAGE_ENGINE=1
392 + -DWITH_PARTITION_STORAGE_ENGINE=1
393 + )
394 +
395 + else
396 + mycmakeargs+=(
397 + -DWITHOUT_SERVER=1
398 + -DEXTRA_CHARSETS=none
399 + -DINSTALL_SQLBENCHDIR=
400 + )
401 + fi
402 +
403 + cmake-utils_src_configure
404 +}
405 +
406 +src_compile() {
407 + cmake-utils_src_compile
408 +}
409 +
410 +src_install() {
411 + cmake-utils_src_install
412 +
413 + # Remove an unnecessary, private config header which will never match between ABIs and is not meant to be used
414 + if [[ -f "${ED%/}/usr/include/mysql/server/private/config.h" ]] ; then
415 + rm "${ED%/}/usr/include/mysql/server/private/config.h" || die
416 + fi
417 +
418 + # Make sure the vars are correctly initialized
419 + mysql_init_vars
420 +
421 + # Convenience links
422 + einfo "Making Convenience links for mysqlcheck multi-call binary"
423 + dosym "mysqlcheck" "/usr/bin/mysqlanalyze"
424 + dosym "mysqlcheck" "/usr/bin/mysqlrepair"
425 + dosym "mysqlcheck" "/usr/bin/mysqloptimize"
426 +
427 + # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir
428 + if [[ -d "${ED%/}/usr/data" ]] ; then
429 + rm -Rf "${ED%/}/usr/data" || die
430 + fi
431 +
432 + # Unless they explicitly specific USE=test, then do not install the
433 + # testsuite. It DOES have a use to be installed, esp. when you want to do a
434 + # validation of your database configuration after tuning it.
435 + if ! use test ; then
436 + rm -rf "${D%/}/${MY_SHAREDSTATEDIR}/mysql-test"
437 + fi
438 +
439 + # Configuration stuff
440 + einfo "Building default configuration ..."
441 + insinto "${MY_SYSCONFDIR#${EPREFIX}}"
442 + [[ -f "${S%/}/scripts/mysqlaccess.conf" ]] && doins "${S%/}"/scripts/mysqlaccess.conf
443 + local mycnf_src="my.cnf-5.5"
444 + sed -e "s!@DATADIR@!${MY_DATADIR}!g" \
445 + "${FILESDIR%/}/${mycnf_src}" \
446 + > "${TMPDIR%/}/my.cnf.ok" || die
447 + use prefix && sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' "${TMPDIR%/}/my.cnf.ok"
448 + if use latin1 ; then
449 + sed -i \
450 + -e "/character-set/s|utf8|latin1|g" \
451 + "${TMPDIR%/}/my.cnf.ok" || die
452 + fi
453 + eprefixify "${TMPDIR%/}/my.cnf.ok"
454 + newins "${TMPDIR}/my.cnf.ok" my.cnf
455 +
456 + if use server ; then
457 + einfo "Including support files and sample configurations"
458 + docinto "support-files"
459 + local script
460 + for script in \
461 + "${S%/}"/support-files/magic
462 + do
463 + [[ -f "$script" ]] && dodoc "${script}"
464 + done
465 +
466 + docinto "scripts"
467 + for script in "${S%/}"/scripts/mysql* ; do
468 + [[ ( -f "$script" ) && ( "${script%.sh}" == "${script}" ) ]] && dodoc "${script}"
469 + done
470 + fi
471 +
472 + #Remove mytop if perl is not selected
473 + [[ -e "${ED%/}/usr/bin/mytop" ]] && ! use perl && rm -f "${ED%/}/usr/bin/mytop"
474 +}
475 +
476 +# Official test instructions:
477 +# USE='extraengine perl server' \
478 +# FEATURES='test userpriv -usersandbox' \
479 +# ebuild mysql-X.X.XX.ebuild \
480 +# digest clean package
481 +src_test() {
482 +
483 + _disable_test() {
484 + local rawtestname reason
485 + rawtestname="${1}" ; shift
486 + reason="${@}"
487 + ewarn "test '${rawtestname}' disabled: '${reason}'"
488 + echo ${rawtestname} : ${reason} >> "${T}/disabled.def"
489 + }
490 +
491 + local TESTDIR="${BUILD_DIR}/mysql-test"
492 + local retstatus_unit
493 + local retstatus_tests
494 +
495 + if ! use server ; then
496 + einfo "Skipping server tests due to minimal build."
497 + return 0
498 + fi
499 +
500 + # Bug #213475 - MySQL _will_ object strenously if your machine is named
501 + # localhost. Also causes weird failures.
502 + [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
503 +
504 + if [[ $UID -eq 0 ]]; then
505 + die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
506 + fi
507 + has usersandbox $FEATURES && ewarn "Some tests may fail with FEATURES=usersandbox"
508 +
509 + einfo ">>> Test phase [test]: ${CATEGORY}/${PF}"
510 +
511 + # Run CTest (test-units)
512 + cmake-utils_src_test
513 + retstatus_unit=$?
514 +
515 + # Ensure that parallel runs don't die
516 + export MTR_BUILD_THREAD="$((${RANDOM} % 100))"
517 + # Enable parallel testing, auto will try to detect number of cores
518 + # You may set this by hand.
519 + # The default maximum is 8 unless MTR_MAX_PARALLEL is increased
520 + export MTR_PARALLEL="${MTR_PARALLEL:-auto}"
521 +
522 + # create directories because mysqladmin might run out of order
523 + mkdir -p "${T}"/var-tests{,/log} || die
524 +
525 + # Run mysql tests
526 + pushd "${TESTDIR}" > /dev/null || die
527 +
528 + touch "${T}/disabled.def"
529 + # These are failing in MySQL 5.5 for now and are believed to be
530 + # false positives:
531 + #
532 + # main.mysql_client_test, main.mysql_client_test_nonblock
533 + # main.mysql_client_test_comp:
534 + # segfaults at random under Portage only, suspect resource limits.
535 +
536 + local t
537 + for t in main.mysql_client_test main.mysql_client_test_nonblock \
538 + main.mysql_client_test_comp rpl.rpl_extra_col_master_myisam \
539 + main.mysqlhotcopy_archive main.mysqlhotcopy_myisam main.openssl_1 \
540 + rpl.rpl_semi_sync_uninstall_plugin ; do
541 + _disable_test "$t" "False positives in Gentoo"
542 + done
543 +
544 + if ! use client-libs ; then
545 + _disable_test main.plugin_auth "Needs client libraries built"
546 + fi
547 +
548 + # run mysql-test tests
549 + perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test=tokudb --skip-test-list="${T}/disabled.def"
550 + retstatus_tests=$?
551 +
552 + popd > /dev/null || die
553 +
554 + # Cleanup is important for these testcases.
555 + pkill -9 -f "${S}/ndb" 2>/dev/null
556 + pkill -9 -f "${S}/sql" 2>/dev/null
557 +
558 + local failures=""
559 + [[ $retstatus_unit -eq 0 ]] || failures="${failures} test-unit"
560 + [[ $retstatus_tests -eq 0 ]] || failures="${failures} tests"
561 +
562 + [[ -z "$failures" ]] || die "Test failures: $failures"
563 + einfo "Tests successfully completed"
564 +}
565 +
566 +mysql_init_vars() {
567 + MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mysql"}
568 + MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"}
569 + MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"}
570 + MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"}
571 +
572 + if [[ -z "${MY_DATADIR}" ]] ; then
573 + MY_DATADIR=""
574 + if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then
575 + MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
576 + | sed -ne '/datadir/s|^--datadir=||p' \
577 + | tail -n1`
578 + if [[ -z "${MY_DATADIR}" ]] ; then
579 + MY_DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \
580 + | sed -e 's/.*=\s*//' \
581 + | tail -n1`
582 + fi
583 + fi
584 + if [[ -z "${MY_DATADIR}" ]] ; then
585 + MY_DATADIR="${MY_LOCALSTATEDIR}"
586 + einfo "Using default MY_DATADIR"
587 + fi
588 + elog "MySQL MY_DATADIR is ${MY_DATADIR}"
589 +
590 + if [[ -z "${PREVIOUS_DATADIR}" ]] ; then
591 + if [[ -e "${MY_DATADIR}" ]] ; then
592 + # If you get this and you're wondering about it, see bug #207636
593 + elog "MySQL datadir found in ${MY_DATADIR}"
594 + elog "A new one will not be created."
595 + PREVIOUS_DATADIR="yes"
596 + else
597 + PREVIOUS_DATADIR="no"
598 + fi
599 + export PREVIOUS_DATADIR
600 + fi
601 + else
602 + if [[ ${EBUILD_PHASE} == "config" ]]; then
603 + local new_MY_DATADIR
604 + new_MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \
605 + | sed -ne '/datadir/s|^--datadir=||p' \
606 + | tail -n1`
607 +
608 + if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then
609 + ewarn "MySQL MY_DATADIR has changed"
610 + ewarn "from ${MY_DATADIR}"
611 + ewarn "to ${new_MY_DATADIR}"
612 + MY_DATADIR="${new_MY_DATADIR}"
613 + fi
614 + fi
615 + fi
616 +
617 + export MY_SHAREDSTATEDIR MY_SYSCONFDIR
618 + export MY_LOCALSTATEDIR MY_LOGDIR
619 + export MY_DATADIR
620 +}
621 +
622 +pkg_config() {
623 + _getoptval() {
624 + local mypd="${EROOT}"/usr/bin/my_print_defaults
625 + local section="$1"
626 + local flag="--${2}="
627 + local extra_options="${3}"
628 + "${mypd}" $extra_options $section | sed -n "/^${flag}/s,${flag},,gp"
629 + }
630 + local old_MY_DATADIR="${MY_DATADIR}"
631 + local old_HOME="${HOME}"
632 + # my_print_defaults needs to read stuff in $HOME/.my.cnf
633 + export HOME=${EPREFIX}/root
634 +
635 + # Make sure the vars are correctly initialized
636 + mysql_init_vars
637 +
638 + [[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR"
639 + if [[ ! -x "${EROOT}/usr/sbin/mysqld" ]] ; then
640 + die "Minimal builds do NOT include the MySQL server"
641 + fi
642 +
643 + if [[ ( -n "${MY_DATADIR}" ) && ( "${MY_DATADIR}" != "${old_MY_DATADIR}" ) ]]; then
644 + local MY_DATADIR_s="${ROOT}/${MY_DATADIR}"
645 + MY_DATADIR_s="${MY_DATADIR_s%%/}"
646 + local old_MY_DATADIR_s="${ROOT}/${old_MY_DATADIR}"
647 + old_MY_DATADIR_s="${old_MY_DATADIR_s%%/}"
648 +
649 + if [[ ( -d "${old_MY_DATADIR_s}" ) && ( "${old_MY_DATADIR_s}" != / ) ]]; then
650 + if [[ -d "${MY_DATADIR_s}" ]]; then
651 + ewarn "Both ${old_MY_DATADIR_s} and ${MY_DATADIR_s} exist"
652 + ewarn "Attempting to use ${MY_DATADIR_s} and preserving ${old_MY_DATADIR_s}"
653 + else
654 + elog "Moving MY_DATADIR from ${old_MY_DATADIR_s} to ${MY_DATADIR_s}"
655 + mv --strip-trailing-slashes -T "${old_MY_DATADIR_s}" "${MY_DATADIR_s}" \
656 + || die "Moving MY_DATADIR failed"
657 + fi
658 + else
659 + ewarn "Previous MY_DATADIR (${old_MY_DATADIR_s}) does not exist"
660 + if [[ -d "${MY_DATADIR_s}" ]]; then
661 + ewarn "Attempting to use ${MY_DATADIR_s}"
662 + else
663 + eerror "New MY_DATADIR (${MY_DATADIR_s}) does not exist"
664 + die "Configuration Failed! Please reinstall ${CATEGORY}/${PN}"
665 + fi
666 + fi
667 + fi
668 +
669 + local pwd1="a"
670 + local pwd2="b"
671 + local maxtry=15
672 +
673 + if [ -z "${MYSQL_ROOT_PASSWORD}" ]; then
674 + local tmp_mysqld_password_source=
675 +
676 + for tmp_mysqld_password_source in mysql client; do
677 + einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..."
678 + MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)"
679 + if [[ -n "${MYSQL_ROOT_PASSWORD}" ]]; then
680 + if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]]; then
681 + ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!"
682 + MYSQL_ROOT_PASSWORD=
683 + continue
684 + fi
685 +
686 + einfo "Found password in '${tmp_mysqld_password_source}' section!"
687 + break
688 + fi
689 + done
690 +
691 + # Sometimes --show is required to display passwords in some implementations of my_print_defaults
692 + if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]]; then
693 + MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)"
694 + fi
695 +
696 + unset tmp_mysqld_password_source
697 + fi
698 + MYSQL_TMPDIR="$(_getoptval mysqld tmpdir)"
699 + # These are dir+prefix
700 + MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log)"
701 + MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*}
702 + MYSQL_LOG_BIN="$(_getoptval mysqld log-bin)"
703 + MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*}
704 +
705 + if [[ ! -d "${ROOT}/$MYSQL_TMPDIR" ]]; then
706 + einfo "Creating MySQL tmpdir $MYSQL_TMPDIR"
707 + install -d -m 770 -o mysql -g mysql "${EROOT}/$MYSQL_TMPDIR"
708 + fi
709 + if [[ ! -d "${ROOT}/$MYSQL_LOG_BIN" ]]; then
710 + einfo "Creating MySQL log-bin directory $MYSQL_LOG_BIN"
711 + install -d -m 770 -o mysql -g mysql "${EROOT}/$MYSQL_LOG_BIN"
712 + fi
713 + if [[ ! -d "${EROOT}/$MYSQL_RELAY_LOG" ]]; then
714 + einfo "Creating MySQL relay-log directory $MYSQL_RELAY_LOG"
715 + install -d -m 770 -o mysql -g mysql "${EROOT}/$MYSQL_RELAY_LOG"
716 + fi
717 +
718 + if [[ -d "${ROOT}/${MY_DATADIR}/mysql" ]] ; then
719 + ewarn "You have already a MySQL database in place."
720 + ewarn "(${ROOT}/${MY_DATADIR}/*)"
721 + ewarn "Please rename or delete it if you wish to replace it."
722 + die "MySQL database already exists!"
723 + fi
724 +
725 + # Bug #213475 - MySQL _will_ object strenously if your machine is named
726 + # localhost. Also causes weird failures.
727 + [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
728 +
729 + if [ -z "${MYSQL_ROOT_PASSWORD}" ]; then
730 +
731 + einfo "Please provide a password for the mysql 'root' user now"
732 + einfo "or through the ${HOME}/.my.cnf file."
733 + ewarn "Avoid [\"'\\_%] characters in the password"
734 + read -rsp " >" pwd1 ; echo
735 +
736 + einfo "Retype the password"
737 + read -rsp " >" pwd2 ; echo
738 +
739 + if [[ "x$pwd1" != "x$pwd2" ]] ; then
740 + die "Passwords are not the same"
741 + fi
742 + MYSQL_ROOT_PASSWORD="${pwd1}"
743 + unset pwd1 pwd2
744 + fi
745 +
746 + local options
747 + local sqltmp="$(emktemp)"
748 +
749 + # Fix bug 446200. Don't reference host my.cnf, needs to come first,
750 + # see http://bugs.mysql.com/bug.php?id=31312
751 + use prefix && options="${options} '--defaults-file=${MY_SYSCONFDIR}/my.cnf'"
752 +
753 + # Figure out which options we need to disable to do the setup
754 + local helpfile="${TMPDIR}/mysqld-help"
755 + "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null
756 + for opt in grant-tables host-cache name-resolve networking slave-start \
757 + federated ssl log-bin relay-log slow-query-log external-locking \
758 + log-slave-updates \
759 + ; do
760 + optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}"
761 + egrep -sq -- "${optexp}" "${helpfile}" && options="${options} ${optfull}"
762 + done
763 +
764 + einfo "Creating the mysql database and setting proper permissions on it ..."
765 +
766 + # Now that /var/run is a tmpfs mount point, we need to ensure it exists before using it
767 + PID_DIR="${EROOT}/var/run/mysqld"
768 + if [[ ! -d "${PID_DIR}" ]]; then
769 + install -d -m 755 -o mysql -g mysql "${PID_DIR}" || die "Could not create pid directory"
770 + fi
771 +
772 + if [[ ! -d "${MY_DATADIR}" ]]; then
773 + install -d -m 750 -o mysql -g mysql "${MY_DATADIR}" || die "Could not create data directory"
774 + fi
775 +
776 + pushd "${TMPDIR}" &>/dev/null || die
777 +
778 + # Filling timezones, see
779 + # http://dev.mysql.com/doc/mysql/en/time-zone-support.html
780 + "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null
781 +
782 + local cmd=( "${EROOT}usr/share/mysql/scripts/mysql_install_db" )
783 + [[ -f "${cmd}" ]] || cmd=( "${EROOT}usr/bin/mysql_install_db" )
784 + cmd+=( "--basedir=${EPREFIX}/usr" ${options} "--datadir=${ROOT}/${MY_DATADIR}" "--tmpdir=${ROOT}/${MYSQL_TMPDIR}" )
785 + einfo "Command: ${cmd[*]}"
786 + su -s /bin/sh -c "${cmd[*]}" mysql \
787 + >"${TMPDIR}"/mysql_install_db.log 2>&1
788 + if [ $? -ne 0 ]; then
789 + grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2
790 + die "Failed to initialize mysqld. Please review ${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log"
791 + fi
792 + popd &>/dev/null || die
793 + [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \
794 + || die "MySQL databases not installed"
795 +
796 + use prefix || options="${options} --user=mysql"
797 +
798 + local socket="${EROOT}/var/run/mysqld/mysqld${RANDOM}.sock"
799 + local pidfile="${EROOT}/var/run/mysqld/mysqld${RANDOM}.pid"
800 + local mysqld="${EROOT}/usr/sbin/mysqld \
801 + ${options} \
802 + --log-warnings=0 \
803 + --basedir=${EROOT}/usr \
804 + --datadir=${ROOT}/${MY_DATADIR} \
805 + --max_allowed_packet=8M \
806 + --net_buffer_length=16K \
807 + --socket=${socket} \
808 + --pid-file=${pidfile}
809 + --tmpdir=${ROOT}/${MYSQL_TMPDIR}"
810 + #einfo "About to start mysqld: ${mysqld}"
811 + ebegin "Starting mysqld"
812 + einfo "Command ${mysqld}"
813 + ${mysqld} &
814 + rc=$?
815 + while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do
816 + maxtry=$((${maxtry}-1))
817 + echo -n "."
818 + sleep 1
819 + done
820 + eend $rc
821 +
822 + if ! [[ -S "${socket}" ]]; then
823 + die "Completely failed to start up mysqld with: ${mysqld}"
824 + fi
825 +
826 + ebegin "Setting root password"
827 + # Do this from memory, as we don't want clear text passwords in temp files
828 + local sql="UPDATE mysql.user SET Password = PASSWORD('${MYSQL_ROOT_PASSWORD}') WHERE USER='root'; FLUSH PRIVILEGES"
829 + "${EROOT}/usr/bin/mysql" \
830 + "--socket=${socket}" \
831 + -hlocalhost \
832 + -e "${sql}"
833 + eend $?
834 +
835 + if [[ -n "${sqltmp}" ]] ; then
836 + ebegin "Loading \"zoneinfo\", this step may require a few seconds"
837 + "${EROOT}/usr/bin/mysql" \
838 + "--socket=${socket}" \
839 + -hlocalhost \
840 + -uroot \
841 + --password="${MYSQL_ROOT_PASSWORD}" \
842 + mysql < "${sqltmp}"
843 + rc=$?
844 + eend $?
845 + [[ $rc -ne 0 ]] && ewarn "Failed to load zoneinfo!"
846 + fi
847 +
848 + # Stop the server and cleanup
849 + einfo "Stopping the server ..."
850 + kill $(< "${pidfile}" )
851 + rm -f "${sqltmp}"
852 + wait %1
853 + einfo "Done"
854 +}