blob: 263b3139e77eaa3298cbb3c8cb1b05f24f5d2a11 [file] [log] [blame]
Patrick Williamsb48b7b42016-08-17 15:04:38 -05001SUMMARY = "A robust, scalable, and reliable SQL server"
2HOMEPAGE = "http://mariadb.org"
3SECTION = "libs"
4LICENSE = "GPLv2"
5LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
6
Brad Bishopd7bf8c12018-02-25 22:55:05 -05007SRC_URI = "https://downloads.mariadb.org/f/${BP}/source/${BP}.tar.gz \
Patrick Williamsb48b7b42016-08-17 15:04:38 -05008 file://fix-cmake-module-path.patch \
9 file://remove-bad-path.patch \
10 file://fix-mysqlclient-r-version.patch \
11 file://my.cnf \
12 file://mysqld.service \
13 file://install_db.service \
14 file://install_db \
15 file://mysql-systemd-start \
16 file://configure.cmake-fix-valgrind.patch \
17 file://fix-a-building-failure.patch \
Patrick Williamsddad1a12017-02-23 20:36:32 -060018 file://change-cc-to-cc-version.patch \
Brad Bishop6e60e8b2018-02-01 10:27:11 -050019 file://0001-disable-ucontext-on-musl.patch \
Patrick Williamsb48b7b42016-08-17 15:04:38 -050020 "
Brad Bishopd7bf8c12018-02-25 22:55:05 -050021
22SRC_URI[md5sum] = "2d4104aae0b9e5efa8878918bd329cb4"
23SRC_URI[sha256sum] = "5dbde98d7e4a5a1721b6cbed7898b2549a88866247951cf586057975c6cea641"
Patrick Williamsb48b7b42016-08-17 15:04:38 -050024
25S = "${WORKDIR}/mariadb-${PV}"
26
27BINCONFIG_GLOB = "mysql_config"
28
29inherit cmake gettext binconfig update-rc.d useradd systemd
30
31INITSCRIPT_PACKAGES = "${PN}-server ${PN}-setupdb"
32INITSCRIPT_NAME_${PN}-server = "mysqld"
33INITSCRIPT_PARAMS_${PN}-server ?= "start 45 5 . stop 45 0 6 1 ."
34
35USERADD_PACKAGES = "${PN}-server"
36USERADD_PARAM_${PN}-server = "--system --home-dir /var/mysql -g mysql --shell /bin/false mysql"
37GROUPADD_PARAM_${PN}-server = "--system mysql"
38
39INITSCRIPT_NAME_${PN}-setupdb = "install_db"
40INITSCRIPT_PARAMS_${PN}-setupdb ?= "defaults 44 44"
41
42SYSTEMD_PACKAGES = "${PN}-server ${PN}-setupdb"
43SYSTEMD_SERVICE_${PN}-server = "mysqld.service"
44SYSTEMD_AUTO_ENABLE_${PN}-server ?= "disable"
45
46SYSTEMD_SERVICE_${PN}-setupdb = "install_db.service"
47SYSTEMD_AUTO_ENABLE_${PN}-setupdb ?= "enable"
48ALLOW_EMPTY_${PN}-setupdb ?= "1"
49FILES_${PN}-setupdb = "${sysconfdir}/init.d/install_db"
50
51EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'"
52
Brad Bishop6e60e8b2018-02-01 10:27:11 -050053PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} setupdb"
Patrick Williamsb48b7b42016-08-17 15:04:38 -050054PACKAGECONFIG_class-native = ""
55PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
56PACKAGECONFIG[valgrind] = "-DWITH_VALGRIND=TRUE,-DWITH_VALGRIND=FALSE,valgrind"
57PACKAGECONFIG[libedit] = "-DLIBEDIT_INTERFACE=TRUE,-DLIBEDIT_INTERFACE=FALSE,libedit"
58PACKAGECONFIG[krb5] = ", ,krb5"
59PACKAGECONFIG[setupdb] = ", ,,${PN}-setupdb"
60
61# MariaDB doesn't link properly with gold
62# https://mariadb.atlassian.net/browse/MDEV-5982
63TARGET_CFLAGS += "-fuse-ld=bfd"
64
65BUILD_CFLAGS += "-fuse-ld=bfd"
66BUILD_CXXFLAGS += "-fuse-ld=bfd"
67
68EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \
69 -DWITH_JEMALLOC=no \
70 -DWITHOUT_TOKUDB=TRUE \
71 -DCMAKE_DISABLE_FIND_PACKAGE_Boost=TRUE \
72 -DGROFF=FALSE \
73 -DNROFF=FALSE \
74 -DENABLE_DTRACE=FALSE \
75 -DWITH_PIC=ON \
76 -DINSTALL_LAYOUT=RPM \
77 -DINSTALL_DOCDIR:PATH=${datadir}/doc/${BPN} \
78 -DINSTALL_LIBDIR:PATH=${baselib} \
79 -DINSTALL_PLUGINDIR:PATH=${baselib}/plugin \
80 -DINSTALL_SYSCONFDIR:PATH=${sysconfdir} \
81 -DMYSQL_DATADIR:PATH=/var/mysql \
82 -DCAT_EXECUTABLE=`which cat` \
83 -DCMAKE_AR:FILEPATH=${AR}"
84
Brad Bishopd7bf8c12018-02-25 22:55:05 -050085ARM_INSTRUCTION_SET_armv4 = "arm"
86ARM_INSTRUCTION_SET_armv5 = "arm"
87
Patrick Williamsb48b7b42016-08-17 15:04:38 -050088do_configure_append() {
89 # handle distros with different values of ${libexecdir}
90 libexecdir2=`echo ${libexecdir} | sed -e 's+/usr/++g'`
91 sed -i -e "s:/libexec:/$libexecdir2:g" ${S}/scripts/mysql_install_db.sh
92 sed -i -e "s:mysqld libexec:mysqld $libexecdir2:g" ${S}/scripts/mysql_install_db.sh
93 sed -i -e "s:/libexec:/$libexecdir2:g" ${S}/scripts/mysqld_safe.sh
94}
95
96do_generate_toolchain_file_append_class-native () {
97 # If these are set cmake will assume we're cross-compiling, which will
98 # result in certain things we want being disabled
99 sed -i "/set( CMAKE_SYSTEM_NAME/d" ${WORKDIR}/toolchain.cmake
100 sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake
101}
102
103do_compile_prepend_class-target () {
104 # These need to be in-tree or make will think they need to be built,
105 # and since we're cross-compiling that is disabled
106 cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra
107 cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts
108
109 if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 'no', d)}" = "no" ]; then
110 if ! [ -e ${B}/include/openssl/kssl.h ] ; then
111 mkdir -p ${B}/include/openssl
112 echo "#ifndef KSSL_H" >${B}/include/openssl/kssl.h
113 echo "#define KSSL_H" >>${B}/include/openssl/kssl.h
114 echo "#include <openssl/opensslconf.h>">>${B}/include/openssl/kssl.h
115 echo "#endif" >>${B}/include/openssl/kssl.h
116 fi
117 fi
118}
119
120SYSROOT_PREPROCESS_FUNCS += "mariadb_sysroot_preprocess"
121
122# We need to append this so it runs *after* binconfig's preprocess function
123#
124# We really don't care exactly what the directories were set to originally.
125# plugindir is not fixed, but we don't create any plugins.
126#
127mariadb_sysroot_preprocess () {
128 sed -i -es,^pkgincludedir=.*,pkgincludedir=\'${STAGING_INCDIR}/mysql\', ${SYSROOT_DESTDIR}${bindir_crossscripts}/mysql_config
129 sed -i -es,^pkglibdir=.*,pkglibdir=\'${STAGING_LIBDIR}\', ${SYSROOT_DESTDIR}${bindir_crossscripts}/mysql_config
130}
131
132do_install() {
133 oe_runmake 'DESTDIR=${D}' install
134
135 install -d ${D}/${sysconfdir}/init.d
136 install -m 0644 ${WORKDIR}/my.cnf ${D}/${sysconfdir}/
137 install -m 0755 ${WORKDIR}/install_db ${D}/${sysconfdir}/init.d/
138 mv ${D}/${sysconfdir}/init.d/mysql ${D}/${sysconfdir}/init.d/mysqld
139
140 install -d ${D}${systemd_unitdir}/system
141 install -m 0644 ${WORKDIR}/mysqld.service ${D}${systemd_unitdir}/system
142 install -m 0644 ${WORKDIR}/install_db.service ${D}${systemd_unitdir}/system
143 sed -i -e 's,@BINDIR@,${bindir},g' -e 's,@PREFIX@,${prefix},g' ${D}${systemd_unitdir}/system/mysqld.service \
144 ${D}${systemd_unitdir}/system/install_db.service
145
146 if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
Patrick Williamsddad1a12017-02-23 20:36:32 -0600147 install -d ${D}${sysconfdir}/tmpfiles.d
148 echo "f /var/log/mysqld.err 0640 mysql mysql -" \
Patrick Williamsb48b7b42016-08-17 15:04:38 -0500149 > ${D}${sysconfdir}/tmpfiles.d/99-mysqld.conf
150 fi
151 install -d ${D}${bindir}
152 install -m 755 ${WORKDIR}/mysql-systemd-start ${D}${bindir}
153 install -d ${D}${datadir}/doc/${PN}
154 if [ -f ${D}${datadir}/doc/README ]; then
155 mv ${D}${datadir}/doc/README ${D}${datadir}/doc/${PN}/
156 fi
157}
158
159PACKAGES = "${PN}-dbg ${PN} \
160 libmysqlclient-r libmysqlclient-r-dev libmysqlclient-r-staticdev libmysqlclient-r-dbg \
161 libmysqlclient libmysqlclient-dev libmysqlclient-staticdev libmysqlclient-dbg \
162 libmysqld libmysqld-dev ${PN}-client ${PN}-server ${PN}-setupdb ${PN}-leftovers"
163CONFFILES_${PN}-server += "${sysconfdir}/my.cnf ${sysconfdir}/my.cnf.d/server.cnf"
164CONFFILES_${PN}-client += "${sysconfdir}/my.cnf.d/mysql-clients.cnf"
165CONFFILES_libmysqlclient += "${sysconfdir}/my.cnf.d/client.cnf"
166
167FILES_${PN} = " "
168RDEPENDS_${PN} = "${PN}-client ${PN}-server"
169ALLOW_EMPTY_${PN} = "1"
170
171RDEPENDS_${PN}-client = "perl perl-module-getopt-long perl-module-file-temp \
172 perl-module-fcntl perl-module-sys-hostname perl-module-ipc-open3 \
173 perl-module-exporter"
174RDEPENDS_${PN}-server = "perl perl-module-getopt-long perl-module-data-dumper \
175 perl-module-file-basename perl-module-file-path perl-module-sys-hostname \
176 perl-module-file-copy perl-module-file-temp perl-module-posix \
Patrick Williamsddad1a12017-02-23 20:36:32 -0600177 ${PN}-client libdbi-perl libdbd-mysql-perl"
Patrick Williamsb48b7b42016-08-17 15:04:38 -0500178RDEPENDS_${PN}-leftovers = "perl perl-module-cwd perl-module-benchmark perl-module-getopt-long \
179 perl-module-posix perl-module-data-dumper perl-module-sigtrap perl-module-threads \
180 perl-module-threads-shared perl-module-io-socket perl-module-sys-hostname perl-module-file-copy \
181 perl-module-file-spec perl-module-file-find perl-module-file-basename perl-module-file-path \
182 perl-module-constant perl-module-lib perl-module-file-temp perl-module-file-spec-functions \
183 perl-module-io-socket-inet perl-module-io-select"
Patrick Williamsddad1a12017-02-23 20:36:32 -0600184RDEPENDS_${PN}-setupdb = "coreutils"
Patrick Williamsb48b7b42016-08-17 15:04:38 -0500185
186# Allow old code to link to the backward compatible library
187RDEPENDS_libmysqlclient-dev = "libmysqlclient-r-dev"
188
189FILES_libmysqlclient = "\
190 ${libdir}/libmysqlclient.so.* \
191 ${sysconfdir}/my.cnf.d/client.cnf"
192FILES_libmysqlclient-dev = " \
193 ${includedir}/mysql/ \
194 ${libdir}/libmysqlclient.so \
195 ${sysconfdir}/aclocal \
196 ${bindir}/mysql_config"
197FILES_libmysqlclient-staticdev = "\
198 ${libdir}/*.a"
199FILES_libmysqlclient-dbg = "${libdir}/plugin/.debug/ \
200 ${datadir}/mysql-test/lib/My/SafeProcess/.debug/my_safe_process"
201
202# Avoid warnings about ha_xtradb.so.0.0.0 and ha_innodb_plugin.so.0.0.0
203# which are intentionally non-PIC on 32-bit x86 (see e.g.
204# storage/xtradb/plug.in in the source)
205INSANE_SKIP_libmysqlclient_append_x86 = " textrel"
206
207FILES_libmysqlclient-r = "${libdir}/libmysqlclient_r.so.*"
208FILES_libmysqlclient-r-dev = "\
209 ${libdir}/libmysqlclient_r.so"
210FILES_libmysqlclient-r-staticdev = "${libdir}/libmysqlclient_r.a"
211FILES_libmysqlclient-r-dbg = "${libdir}/plugin/.debuglibmysqlclient_r.so.*"
212
213FILES_libmysqld = "\
214 ${libdir}/libmysqld.so.*"
215FILES_libmysqld-dev = "\
216 ${libdir}/libmysqld.so"
217
218FILES_${PN}-client = "\
219 ${bindir}/myisam_ftdump \
220 ${bindir}/mysql \
221 ${bindir}/mysql_client_test \
222 ${bindir}/mysql_client_test_embedded \
223 ${bindir}/mysql_find_rows \
224 ${bindir}/mysql_fix_extensions \
225 ${bindir}/mysql_waitpid \
226 ${bindir}/mysqlaccess \
227 ${bindir}/mysqladmin \
228 ${bindir}/mysqlbug \
229 ${bindir}/mysqlcheck \
230 ${bindir}/mysqldump \
231 ${bindir}/mysqldumpslow \
232 ${bindir}/mysqlimport \
233 ${bindir}/mysqlshow \
234 ${bindir}/mysqlslap \
235 ${bindir}/mysqltest_embedded \
236 ${libexecdir}/mysqlmanager \
237 ${sysconfdir}/my.cnf.d/mysql-clients.cnf"
238
239FILES_${PN}-server = "\
240 ${bindir}/comp_err \
241 ${bindir}/isamchk \
242 ${bindir}/isamlog \
243 ${bindir}/msql2mysql \
244 ${bindir}/my_print_defaults \
245 ${bindir}/myisamchk \
246 ${bindir}/myisamlog \
247 ${bindir}/myisampack \
248 ${bindir}/mysql_convert_table_format \
249 ${bindir}/mysql_fix_privilege_tables \
250 ${bindir}/mysql_install_db \
251 ${bindir}/mysql_secure_installation \
252 ${bindir}/mysql_setpermission \
253 ${bindir}/mysql-systemd-start \
254 ${bindir}/mysql_tzinfo_to_sql \
255 ${bindir}/mysql_upgrade \
256 ${bindir}/mysql_plugin \
257 ${bindir}/mysql_zap \
258 ${bindir}/mysqlbinlog \
259 ${bindir}/mysqld_multi \
260 ${bindir}/mysqld_safe \
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500261 ${bindir}/mysqld_safe_helper \
Patrick Williamsb48b7b42016-08-17 15:04:38 -0500262 ${bindir}/mysqlhotcopy \
263 ${bindir}/mysqltest \
264 ${bindir}/ndb_delete_all \
265 ${bindir}/ndb_desc \
266 ${bindir}/ndb_drop_index \
267 ${bindir}/ndb_drop_table \
268 ${bindir}/ndb_mgm \
269 ${bindir}/ndb_restore \
270 ${bindir}/ndb_select_all \
271 ${bindir}/ndb_select_count \
272 ${bindir}/ndb_show_tables \
273 ${bindir}/ndb_waiter \
274 ${bindir}/pack_isam \
275 ${bindir}/perror \
276 ${bindir}/replace \
277 ${bindir}/resolve_stack_dump \
278 ${bindir}/resolveip \
279 ${libexecdir}/mysqld \
280 ${sbindir}/mysqld \
281 ${sbindir}/ndb_cpcd \
282 ${sbindir}/ndbd \
283 ${sbindir}/ndb_mgmd \
284 ${libdir}/plugin/*.so \
285 ${datadir}/mysql/ \
286 ${localstatedir}/mysql/ \
287 ${sysconfdir}/init.d/mysqld \
288 ${sysconfdir}/my.cnf \
289 ${sysconfdir}/my.cnf.d/server.cnf \
290 ${sysconfdir}/tmpfiles.d"
291
292DESCRIPTION_${PN}-leftovers = "unpackaged and probably unneeded files for ${PN}"
293FILES_${PN}-leftovers = "/"