blob: 1aa1f68cddb5af14a1b91c3d6f00a840e091c3ea [file] [log] [blame]
Brad Bishop316dfdd2018-06-25 12:45:53 -04001SUMMARY = "A robust, scalable, and reliable SQL server"
2HOMEPAGE = "http://mariadb.org"
3SECTION = "libs"
4LICENSE = "GPLv2"
Brad Bishopc8f47122019-06-24 09:36:18 -04005LIC_FILES_CHKSUM = "file://COPYING;md5=b1becf0cfa3366e0f4d854d1d264f311"
Brad Bishop316dfdd2018-06-25 12:45:53 -04006
Brad Bishope42b3e32020-01-15 22:08:42 -05007SRC_URI = "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz \
Brad Bishop316dfdd2018-06-25 12:45:53 -04008 file://my.cnf \
9 file://mysqld.service \
10 file://install_db.service \
11 file://install_db \
12 file://mysql-systemd-start \
13 file://configure.cmake-fix-valgrind.patch \
14 file://fix-a-building-failure.patch \
Brad Bishop19323692019-04-05 15:28:33 -040015 file://support-files-CMakeLists.txt-fix-do_populate_sysroot.patch \
16 file://sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch \
Brad Bishop316dfdd2018-06-25 12:45:53 -040017 file://0001-disable-ucontext-on-musl.patch \
Brad Bishop19323692019-04-05 15:28:33 -040018 file://c11_atomics.patch \
19 file://clang_version_header_conflict.patch \
20 file://fix-arm-atomic.patch \
Brad Bishope42b3e32020-01-15 22:08:42 -050021 file://0001-Fix-library-LZ4-lookup.patch \
Andrew Geisslerbffdb3e2020-08-21 16:13:29 -050022 file://0001-MDEV-23137-RocksDB-undefined-reference-to-crc32c_arm.patch \
Brad Bishop316dfdd2018-06-25 12:45:53 -040023 "
Andrew Geisslerbffdb3e2020-08-21 16:13:29 -050024SRC_URI[sha256sum] = "26db2becc9cec37e99a4e73390bd2eaa74568e21f9cf110359f4f68b37154c72"
Brad Bishop316dfdd2018-06-25 12:45:53 -040025
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080026UPSTREAM_CHECK_URI = "https://github.com/MariaDB/server/releases"
Brad Bishop316dfdd2018-06-25 12:45:53 -040027
28S = "${WORKDIR}/mariadb-${PV}"
29
30BINCONFIG_GLOB = "mysql_config"
31
Brad Bishopc1d34332019-09-09 14:56:00 -040032inherit cmake gettext binconfig update-rc.d useradd systemd multilib_script
33
34MULTILIB_SCRIPTS = "${PN}-server:${bindir}/mysql_install_db ${PN}-server:${bindir}/mysqld_safe"
Brad Bishop316dfdd2018-06-25 12:45:53 -040035
36INITSCRIPT_PACKAGES = "${PN}-server ${PN}-setupdb"
37INITSCRIPT_NAME_${PN}-server = "mysqld"
38INITSCRIPT_PARAMS_${PN}-server ?= "start 45 5 . stop 45 0 6 1 ."
39
40USERADD_PACKAGES = "${PN}-server"
41USERADD_PARAM_${PN}-server = "--system --home-dir /var/mysql -g mysql --shell /bin/false mysql"
42GROUPADD_PARAM_${PN}-server = "--system mysql"
43
44INITSCRIPT_NAME_${PN}-setupdb = "install_db"
45INITSCRIPT_PARAMS_${PN}-setupdb ?= "defaults 44 44"
46
47SYSTEMD_PACKAGES = "${PN}-server ${PN}-setupdb"
48SYSTEMD_SERVICE_${PN}-server = "mysqld.service"
49SYSTEMD_AUTO_ENABLE_${PN}-server ?= "disable"
50
51SYSTEMD_SERVICE_${PN}-setupdb = "install_db.service"
52SYSTEMD_AUTO_ENABLE_${PN}-setupdb ?= "enable"
53ALLOW_EMPTY_${PN}-setupdb ?= "1"
54FILES_${PN}-setupdb = "${sysconfdir}/init.d/install_db"
55
56EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'"
57
58PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} setupdb"
59PACKAGECONFIG_class-native = ""
60PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
61PACKAGECONFIG[valgrind] = "-DWITH_VALGRIND=TRUE,-DWITH_VALGRIND=FALSE,valgrind"
Brad Bishop316dfdd2018-06-25 12:45:53 -040062PACKAGECONFIG[krb5] = ", ,krb5"
63PACKAGECONFIG[setupdb] = ", ,,${PN}-setupdb"
64
65# MariaDB doesn't link properly with gold
66# https://mariadb.atlassian.net/browse/MDEV-5982
67TARGET_CFLAGS += "-fuse-ld=bfd"
Brad Bishop19323692019-04-05 15:28:33 -040068LDFLAGS += " -pthread"
Brad Bishop316dfdd2018-06-25 12:45:53 -040069BUILD_CFLAGS += "-fuse-ld=bfd"
70BUILD_CXXFLAGS += "-fuse-ld=bfd"
71
72EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \
73 -DWITH_JEMALLOC=no \
74 -DWITHOUT_TOKUDB=TRUE \
75 -DCMAKE_DISABLE_FIND_PACKAGE_Boost=TRUE \
76 -DGROFF=FALSE \
77 -DNROFF=FALSE \
78 -DENABLE_DTRACE=FALSE \
79 -DWITH_PIC=ON \
Andrew Geisslerbffdb3e2020-08-21 16:13:29 -050080 -DWITH_PCRE=system \
Brad Bishop316dfdd2018-06-25 12:45:53 -040081 -DINSTALL_LAYOUT=RPM \
82 -DINSTALL_DOCDIR:PATH=${datadir}/doc/${BPN} \
83 -DINSTALL_LIBDIR:PATH=${baselib} \
84 -DINSTALL_PLUGINDIR:PATH=${baselib}/plugin \
85 -DINSTALL_SYSCONFDIR:PATH=${sysconfdir} \
86 -DMYSQL_DATADIR:PATH=/var/mysql \
87 -DCAT_EXECUTABLE=`which cat` \
88 -DCMAKE_AR:FILEPATH=${AR}"
89
90# With Ninja it fails with:
91# make: *** No rule to make target `install'. Stop.
92OECMAKE_GENERATOR = "Unix Makefiles"
93
94ARM_INSTRUCTION_SET_armv4 = "arm"
95ARM_INSTRUCTION_SET_armv5 = "arm"
96
97do_configure_append() {
98 # handle distros with different values of ${libexecdir}
99 libexecdir2=`echo ${libexecdir} | sed -e 's+/usr/++g'`
100 sed -i -e "s:/libexec:/$libexecdir2:g" ${S}/scripts/mysql_install_db.sh
101 sed -i -e "s:mysqld libexec:mysqld $libexecdir2:g" ${S}/scripts/mysql_install_db.sh
102 sed -i -e "s:/libexec:/$libexecdir2:g" ${S}/scripts/mysqld_safe.sh
103}
104
105do_generate_toolchain_file_append_class-native () {
106 # If these are set cmake will assume we're cross-compiling, which will
107 # result in certain things we want being disabled
108 sed -i "/set( CMAKE_SYSTEM_NAME/d" ${WORKDIR}/toolchain.cmake
109 sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake
110}
111
112do_compile_prepend_class-target () {
113 # These need to be in-tree or make will think they need to be built,
114 # and since we're cross-compiling that is disabled
115 cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra
116 cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts
117
118 if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 'no', d)}" = "no" ]; then
119 if ! [ -e ${B}/include/openssl/kssl.h ] ; then
120 mkdir -p ${B}/include/openssl
121 echo "#ifndef KSSL_H" >${B}/include/openssl/kssl.h
122 echo "#define KSSL_H" >>${B}/include/openssl/kssl.h
123 echo "#include <openssl/opensslconf.h>">>${B}/include/openssl/kssl.h
124 echo "#endif" >>${B}/include/openssl/kssl.h
125 fi
126 fi
Brad Bishop19323692019-04-05 15:28:33 -0400127 # workaround to handle out-of-source build from source package
128 yacc_files="sql_yacc.hh sql_yacc.cc sql_yacc_ora.hh sql_yacc_ora.cc"
129 for yacc_file in ${yacc_files}; do
130 cp ${S}/sql/${yacc_file} ${B}/sql/${yacc_file}
131 done
Brad Bishop316dfdd2018-06-25 12:45:53 -0400132}
133
134SYSROOT_PREPROCESS_FUNCS += "mariadb_sysroot_preprocess"
135
136# We need to append this so it runs *after* binconfig's preprocess function
137#
138# We really don't care exactly what the directories were set to originally.
139# plugindir is not fixed, but we don't create any plugins.
140#
141mariadb_sysroot_preprocess () {
142 sed -i -es,^pkgincludedir=.*,pkgincludedir=\'${STAGING_INCDIR}/mysql\', ${SYSROOT_DESTDIR}${bindir_crossscripts}/mysql_config
143 sed -i -es,^pkglibdir=.*,pkglibdir=\'${STAGING_LIBDIR}\', ${SYSROOT_DESTDIR}${bindir_crossscripts}/mysql_config
144}
145
146do_install() {
147 oe_runmake 'DESTDIR=${D}' install
148
149 install -d ${D}/${sysconfdir}/init.d
150 install -m 0644 ${WORKDIR}/my.cnf ${D}/${sysconfdir}/
151 install -m 0755 ${WORKDIR}/install_db ${D}/${sysconfdir}/init.d/
152 mv ${D}/${sysconfdir}/init.d/mysql ${D}/${sysconfdir}/init.d/mysqld
153
154 install -d ${D}${systemd_unitdir}/system
155 install -m 0644 ${WORKDIR}/mysqld.service ${D}${systemd_unitdir}/system
156 install -m 0644 ${WORKDIR}/install_db.service ${D}${systemd_unitdir}/system
157 sed -i -e 's,@BINDIR@,${bindir},g' -e 's,@PREFIX@,${prefix},g' ${D}${systemd_unitdir}/system/mysqld.service \
158 ${D}${systemd_unitdir}/system/install_db.service
159
160 if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
161 install -d ${D}${sysconfdir}/tmpfiles.d
162 echo "f /var/log/mysqld.err 0640 mysql mysql -" \
163 > ${D}${sysconfdir}/tmpfiles.d/99-mysqld.conf
164 fi
165 install -d ${D}${bindir}
166 install -m 755 ${WORKDIR}/mysql-systemd-start ${D}${bindir}
167 install -d ${D}${datadir}/doc/${PN}
168 if [ -f ${D}${datadir}/doc/README ]; then
169 mv ${D}${datadir}/doc/README ${D}${datadir}/doc/${PN}/
170 fi
Andrew Geissler82c905d2020-04-13 13:39:40 -0500171 if ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'true', 'false', d)}; then
Andrew Geisslerbffdb3e2020-08-21 16:13:29 -0500172 pam_so=$(find ${D} -name pam_user_map.so)
173 if [ x"${pam_so}" != x ]; then
174 pam_dir=$(dirname ${pam_so})
175 mv ${pam_dir} ${D}/${libdir}
176 rmdir --ignore-fail-on-non-empty ${pam_dir%security}
177 fi
Andrew Geissler82c905d2020-04-13 13:39:40 -0500178 fi
Brad Bishop316dfdd2018-06-25 12:45:53 -0400179}
180
181PACKAGES = "${PN}-dbg ${PN} \
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800182 libmysqlclient-r libmysqlclient-r-dev libmysqlclient-r-staticdev \
183 libmysqlclient libmysqlclient-dev libmysqlclient-staticdev \
Brad Bishop316dfdd2018-06-25 12:45:53 -0400184 libmysqld libmysqld-dev ${PN}-client ${PN}-server ${PN}-setupdb ${PN}-leftovers"
185CONFFILES_${PN}-server += "${sysconfdir}/my.cnf ${sysconfdir}/my.cnf.d/server.cnf"
186CONFFILES_${PN}-client += "${sysconfdir}/my.cnf.d/mysql-clients.cnf"
187CONFFILES_libmysqlclient += "${sysconfdir}/my.cnf.d/client.cnf"
188
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800189RPROVIDES_${PN}-dbg += "libmysqlclient-r-dbg libmysqlclient-dbg"
190
Brad Bishop316dfdd2018-06-25 12:45:53 -0400191FILES_${PN} = " "
192RDEPENDS_${PN} = "${PN}-client ${PN}-server"
193ALLOW_EMPTY_${PN} = "1"
194
195RDEPENDS_${PN}-client = "perl perl-module-getopt-long perl-module-file-temp \
196 perl-module-fcntl perl-module-sys-hostname perl-module-ipc-open3 \
197 perl-module-exporter"
198RDEPENDS_${PN}-server = "perl perl-module-getopt-long perl-module-data-dumper \
199 perl-module-file-basename perl-module-file-path perl-module-sys-hostname \
200 perl-module-file-copy perl-module-file-temp perl-module-posix \
Brad Bishop19323692019-04-05 15:28:33 -0400201 ${PN}-client ${PN}-setupdb libdbi-perl libdbd-mysql-perl"
Brad Bishop316dfdd2018-06-25 12:45:53 -0400202RDEPENDS_${PN}-leftovers = "perl perl-module-cwd perl-module-benchmark perl-module-getopt-long \
203 perl-module-posix perl-module-data-dumper perl-module-sigtrap perl-module-threads \
204 perl-module-threads-shared perl-module-io-socket perl-module-sys-hostname perl-module-file-copy \
205 perl-module-file-spec perl-module-file-find perl-module-file-basename perl-module-file-path \
206 perl-module-constant perl-module-lib perl-module-file-temp perl-module-file-spec-functions \
Brad Bishop19323692019-04-05 15:28:33 -0400207 perl-module-io-socket-inet perl-module-io-select bash"
Brad Bishop316dfdd2018-06-25 12:45:53 -0400208RDEPENDS_${PN}-setupdb = "coreutils"
209
210# Allow old code to link to the backward compatible library
211RDEPENDS_libmysqlclient-dev = "libmysqlclient-r-dev"
212
213FILES_libmysqlclient = "\
214 ${libdir}/libmysqlclient.so.* \
Brad Bishop19323692019-04-05 15:28:33 -0400215 ${libdir}/libmariadb.so.* \
Brad Bishop316dfdd2018-06-25 12:45:53 -0400216 ${sysconfdir}/my.cnf.d/client.cnf"
217FILES_libmysqlclient-dev = " \
218 ${includedir}/mysql/ \
219 ${libdir}/libmysqlclient.so \
Brad Bishop19323692019-04-05 15:28:33 -0400220 ${libdir}/libmariadb.so \
Brad Bishop316dfdd2018-06-25 12:45:53 -0400221 ${sysconfdir}/aclocal \
222 ${bindir}/mysql_config"
223FILES_libmysqlclient-staticdev = "\
224 ${libdir}/*.a"
Brad Bishop316dfdd2018-06-25 12:45:53 -0400225
226# Avoid warnings about ha_xtradb.so.0.0.0 and ha_innodb_plugin.so.0.0.0
227# which are intentionally non-PIC on 32-bit x86 (see e.g.
228# storage/xtradb/plug.in in the source)
229INSANE_SKIP_libmysqlclient_append_x86 = " textrel"
230
231FILES_libmysqlclient-r = "${libdir}/libmysqlclient_r.so.*"
232FILES_libmysqlclient-r-dev = "\
233 ${libdir}/libmysqlclient_r.so"
234FILES_libmysqlclient-r-staticdev = "${libdir}/libmysqlclient_r.a"
Brad Bishop316dfdd2018-06-25 12:45:53 -0400235
236FILES_libmysqld = "\
Brad Bishop19323692019-04-05 15:28:33 -0400237 ${libdir}/libmysqld.so.* \
238 ${libdir}/libmariadbd.so.*"
Brad Bishop316dfdd2018-06-25 12:45:53 -0400239FILES_libmysqld-dev = "\
Brad Bishop19323692019-04-05 15:28:33 -0400240 ${libdir}/libmysqld.so \
241 ${libdir}/libmariadbd.so"
Brad Bishop316dfdd2018-06-25 12:45:53 -0400242
243FILES_${PN}-client = "\
244 ${bindir}/myisam_ftdump \
245 ${bindir}/mysql \
246 ${bindir}/mysql_client_test \
247 ${bindir}/mysql_client_test_embedded \
248 ${bindir}/mysql_find_rows \
249 ${bindir}/mysql_fix_extensions \
250 ${bindir}/mysql_waitpid \
251 ${bindir}/mysqlaccess \
252 ${bindir}/mysqladmin \
253 ${bindir}/mysqlbug \
254 ${bindir}/mysqlcheck \
255 ${bindir}/mysqldump \
256 ${bindir}/mysqldumpslow \
257 ${bindir}/mysqlimport \
258 ${bindir}/mysqlshow \
259 ${bindir}/mysqlslap \
260 ${bindir}/mysqltest_embedded \
261 ${libexecdir}/mysqlmanager \
262 ${sysconfdir}/my.cnf.d/mysql-clients.cnf"
263
264FILES_${PN}-server = "\
265 ${bindir}/comp_err \
266 ${bindir}/isamchk \
267 ${bindir}/isamlog \
268 ${bindir}/msql2mysql \
269 ${bindir}/my_print_defaults \
270 ${bindir}/myisamchk \
271 ${bindir}/myisamlog \
272 ${bindir}/myisampack \
273 ${bindir}/mysql_convert_table_format \
274 ${bindir}/mysql_fix_privilege_tables \
275 ${bindir}/mysql_install_db \
276 ${bindir}/mysql_secure_installation \
277 ${bindir}/mysql_setpermission \
278 ${bindir}/mysql-systemd-start \
279 ${bindir}/mysql_tzinfo_to_sql \
280 ${bindir}/mysql_upgrade \
281 ${bindir}/mysql_plugin \
282 ${bindir}/mysql_zap \
283 ${bindir}/mysqlbinlog \
284 ${bindir}/mysqld_multi \
285 ${bindir}/mysqld_safe \
286 ${bindir}/mysqld_safe_helper \
287 ${bindir}/mysqlhotcopy \
288 ${bindir}/mysqltest \
289 ${bindir}/ndb_delete_all \
290 ${bindir}/ndb_desc \
291 ${bindir}/ndb_drop_index \
292 ${bindir}/ndb_drop_table \
293 ${bindir}/ndb_mgm \
294 ${bindir}/ndb_restore \
295 ${bindir}/ndb_select_all \
296 ${bindir}/ndb_select_count \
297 ${bindir}/ndb_show_tables \
298 ${bindir}/ndb_waiter \
299 ${bindir}/pack_isam \
300 ${bindir}/perror \
301 ${bindir}/replace \
302 ${bindir}/resolve_stack_dump \
303 ${bindir}/resolveip \
304 ${libexecdir}/mysqld \
305 ${sbindir}/mysqld \
306 ${sbindir}/ndb_cpcd \
307 ${sbindir}/ndbd \
308 ${sbindir}/ndb_mgmd \
309 ${libdir}/plugin/*.so \
Andrew Geissler82c905d2020-04-13 13:39:40 -0500310 ${libdir}/security/*.so \
311 ${libdir}/plugin/auth_pam_tool_dir/auth_pam_tool \
Brad Bishop316dfdd2018-06-25 12:45:53 -0400312 ${datadir}/mysql/ \
313 ${localstatedir}/mysql/ \
314 ${sysconfdir}/init.d/mysqld \
315 ${sysconfdir}/my.cnf \
316 ${sysconfdir}/my.cnf.d/server.cnf \
Andrew Geissler82c905d2020-04-13 13:39:40 -0500317 ${sysconfdir}/security/user_map.conf \
Brad Bishop316dfdd2018-06-25 12:45:53 -0400318 ${sysconfdir}/tmpfiles.d"
319
320DESCRIPTION_${PN}-leftovers = "unpackaged and probably unneeded files for ${PN}"
321FILES_${PN}-leftovers = "/"