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