1SUMMARY = "A robust, scalable, and reliable SQL server" 2HOMEPAGE = "http://mariadb.org" 3SECTION = "libs" 4LICENSE = "GPL-2.0-only" 5LIC_FILES_CHKSUM = "file://COPYING;md5=b1becf0cfa3366e0f4d854d1d264f311" 6 7SRC_URI = "https://archive.mariadb.org/${BP}/source/${BP}.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://support-files-CMakeLists.txt-fix-do_populate_sysroot.patch \ 15 file://fix-arm-atomic.patch \ 16 file://0001-Fix-library-LZ4-lookup.patch \ 17 file://0001-innobase-Define-__NR_futex-if-it-does-not-exist.patch \ 18 file://0001-aio_linux-Check-if-syscall-exists-before-using-it.patch \ 19 file://ssize_t.patch \ 20 file://mm_malloc.patch \ 21 file://sys_futex.patch \ 22 file://cross-compiling.patch \ 23 file://0001-sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch \ 24 file://0001-MDEV-29644-a-potential-bug-of-null-pointer-dereferen.patch \ 25 " 26SRC_URI:append:libc-musl = " file://ppc-remove-glibc-dep.patch" 27 28SRC_URI[sha256sum] = "f8c69d9080d85eafb3e3a84837bfa566a7f5527a8af6f9a081429d4de0de4778" 29 30UPSTREAM_CHECK_URI = "https://github.com/MariaDB/server/releases" 31 32S = "${WORKDIR}/mariadb-${PV}" 33 34BINCONFIG_GLOB = "mysql_config" 35 36inherit cmake gettext binconfig update-rc.d useradd systemd multilib_script 37 38MULTILIB_SCRIPTS = "${PN}-server:${bindir}/mariadbd-safe \ 39 ${PN}-setupdb:${bindir}/mariadb-install-db" 40 41INITSCRIPT_PACKAGES = "${PN}-server ${PN}-setupdb" 42INITSCRIPT_NAME:${PN}-server = "mysqld" 43INITSCRIPT_PARAMS:${PN}-server ?= "start 45 5 . stop 45 0 6 1 ." 44 45USERADD_PACKAGES = "${PN}-setupdb" 46USERADD_PARAM:${PN}-setupdb = "--system --home-dir /var/mysql -g mysql --shell /bin/false mysql" 47GROUPADD_PARAM:${PN}-setupdb = "--system mysql" 48 49INITSCRIPT_NAME:${PN}-setupdb = "install_db" 50INITSCRIPT_PARAMS:${PN}-setupdb ?= "defaults 44 44" 51 52SYSTEMD_PACKAGES = "${PN}-server ${PN}-setupdb" 53SYSTEMD_SERVICE:${PN}-server = "mysqld.service" 54SYSTEMD_AUTO_ENABLE:${PN}-server ?= "disable" 55 56SYSTEMD_SERVICE:${PN}-setupdb = "install_db.service" 57SYSTEMD_AUTO_ENABLE:${PN}-setupdb ?= "enable" 58ALLOW_EMPTY:${PN}-setupdb ?= "1" 59FILES:${PN}-setupdb = "${sysconfdir}/init.d/install_db \ 60 ${bindir}/mariadb-install-db \ 61 ${bindir}/my_print_defaults \ 62 ${bindir}/mysql_install_db \ 63 ${bindir}/mysql-systemd-start \ 64 " 65 66EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'" 67 68PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} openssl" 69PACKAGECONFIG:class-native = "" 70PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam" 71PACKAGECONFIG[valgrind] = "-DWITH_VALGRIND=TRUE,-DWITH_VALGRIND=FALSE,valgrind" 72PACKAGECONFIG[krb5] = ", ,krb5" 73PACKAGECONFIG[zstd] = "-DWITH_ROCKSDB_ZSTD=ON,-DWITH_ROCKSDB_ZSTD=OFF,zstd" 74PACKAGECONFIG[openssl] = "-DWITH_SSL='system',-DWITH_SSL='bundled',openssl" 75 76# MariaDB doesn't link properly with gold 77# https://mariadb.atlassian.net/browse/MDEV-5982 78TARGET_CFLAGS += "-fuse-ld=bfd" 79LDFLAGS += " -pthread" 80 81BUILD_CFLAGS += "-fuse-ld=bfd" 82BUILD_CXXFLAGS += "-fuse-ld=bfd" 83 84LDFLAGS:x86:toolchain-clang = "-latomic" 85 86EXTRA_OECMAKE = "-DWITH_EMBEDDED_SERVER=ON \ 87 -DWITH_JEMALLOC=no \ 88 -DWITHOUT_TOKUDB=TRUE \ 89 -DCMAKE_DISABLE_FIND_PACKAGE_Boost=TRUE \ 90 -DGROFF=FALSE \ 91 -DNROFF=FALSE \ 92 -DENABLE_DTRACE=FALSE \ 93 -DWITH_PIC=ON \ 94 -DWITH_PCRE=system \ 95 -DINSTALL_LAYOUT=RPM \ 96 -DINSTALL_DOCDIR:PATH=${datadir}/doc/${BPN} \ 97 -DINSTALL_LIBDIR:PATH=${baselib} \ 98 -DINSTALL_PLUGINDIR:PATH=${baselib}/plugin \ 99 -DINSTALL_SYSCONFDIR:PATH=${sysconfdir} \ 100 -DMYSQL_DATADIR:PATH=/var/mysql \ 101 -DCAT_EXECUTABLE=`which cat` \ 102 -DSTACK_DIRECTION=1 \ 103 -DCMAKE_AR:FILEPATH=${AR}" 104 105 106# With Ninja it fails with: 107# make: *** No rule to make target `install'. Stop. 108OECMAKE_GENERATOR = "Unix Makefiles" 109 110ARM_INSTRUCTION_SET:armv4 = "arm" 111ARM_INSTRUCTION_SET:armv5 = "arm" 112 113do_configure:append() { 114 # handle distros with different values of ${libexecdir} 115 libexecdir2=`echo ${libexecdir} | sed -e 's+/usr/++g'` 116 sed -i -e "s:/libexec:/$libexecdir2:g" ${S}/scripts/mysql_install_db.sh 117 sed -i -e "s:mysqld libexec:mysqld $libexecdir2:g" ${S}/scripts/mysql_install_db.sh 118 sed -i -e "s:/libexec:/$libexecdir2:g" ${S}/scripts/mysqld_safe.sh 119} 120 121do_generate_toolchain_file:append:class-native () { 122 # If these are set cmake will assume we're cross-compiling, which will 123 # result in certain things we want being disabled 124 sed -i "/set( CMAKE_SYSTEM_NAME/d" ${WORKDIR}/toolchain.cmake 125 sed -i "/set( CMAKE_SYSTEM_PROCESSOR/d" ${WORKDIR}/toolchain.cmake 126} 127 128 129do_compile:prepend:class-target () { 130 # These need to be in-tree or make will think they need to be built, 131 # and since we're cross-compiling that is disabled 132 cp ${STAGING_BINDIR_NATIVE}/comp_err ${S}/extra 133 cp ${STAGING_BINDIR_NATIVE}/comp_sql ${S}/scripts 134 if [ "${@bb.utils.contains('PACKAGECONFIG', 'krb5', 'yes', 'no', d)}" = "no" ]; then 135 if ! [ -e ${B}/include/openssl/kssl.h ] ; then 136 mkdir -p ${B}/include/openssl 137 echo "#ifndef KSSL_H" >${B}/include/openssl/kssl.h 138 echo "#define KSSL_H" >>${B}/include/openssl/kssl.h 139 echo "#include <openssl/opensslconf.h>">>${B}/include/openssl/kssl.h 140 echo "#endif" >>${B}/include/openssl/kssl.h 141 fi 142 fi 143} 144 145SYSROOT_PREPROCESS_FUNCS += "mariadb_sysroot_preprocess" 146 147# We need to append this so it runs *after* binconfig's preprocess function 148# 149# We really don't care exactly what the directories were set to originally. 150# plugindir is not fixed, but we don't create any plugins. 151# 152mariadb_sysroot_preprocess () { 153 sed -i -es,^pkgincludedir=.*,pkgincludedir=\'${STAGING_INCDIR}/mysql\', ${SYSROOT_DESTDIR}${bindir_crossscripts}/mysql_config 154 sed -i -es,^pkglibdir=.*,pkglibdir=\'${STAGING_LIBDIR}\', ${SYSROOT_DESTDIR}${bindir_crossscripts}/mysql_config 155} 156 157do_install() { 158 oe_runmake 'DESTDIR=${D}' install 159 160 install -d ${D}/${sysconfdir}/init.d 161 install -m 0644 ${WORKDIR}/my.cnf ${D}/${sysconfdir}/ 162 install -m 0755 ${WORKDIR}/install_db ${D}/${sysconfdir}/init.d/ 163 mv ${D}/${sysconfdir}/init.d/mysql ${D}/${sysconfdir}/init.d/mysqld 164 165 install -d ${D}${systemd_unitdir}/system 166 install -m 0644 ${WORKDIR}/mysqld.service ${D}${systemd_unitdir}/system 167 install -m 0644 ${WORKDIR}/install_db.service ${D}${systemd_unitdir}/system 168 sed -i -e 's,@BINDIR@,${bindir},g' -e 's,@PREFIX@,${prefix},g' ${D}${systemd_unitdir}/system/mysqld.service \ 169 ${D}${systemd_unitdir}/system/install_db.service 170 171 install -d ${D}${bindir} 172 install -m 755 ${WORKDIR}/mysql-systemd-start ${D}${bindir} 173 install -d ${D}${datadir}/doc/${PN} 174 if [ -f ${D}${datadir}/doc/README ]; then 175 mv ${D}${datadir}/doc/README ${D}${datadir}/doc/${PN}/ 176 fi 177 if ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'true', 'false', d)}; then 178 pam_so=$(find ${D} -name pam_user_map.so) 179 if [ x"${pam_so}" != x ]; then 180 pam_dir=$(dirname ${pam_so}) 181 mv ${pam_dir} ${D}/${libdir} 182 rmdir --ignore-fail-on-non-empty ${pam_dir%security} 183 fi 184 fi 185} 186 187PACKAGES = "${PN}-dbg ${PN}-setupdb ${PN} \ 188 libmysqlclient-r libmysqlclient-r-dev libmysqlclient-r-staticdev \ 189 libmysqlclient libmysqlclient-dev libmysqlclient-staticdev \ 190 libmysqld libmysqld-dev ${PN}-client ${PN}-server ${PN}-leftovers" 191CONFFILES:${PN}-server += "${sysconfdir}/my.cnf ${sysconfdir}/my.cnf.d/server.cnf" 192CONFFILES:${PN}-client += "${sysconfdir}/my.cnf.d/mysql-clients.cnf" 193CONFFILES:libmysqlclient += "${sysconfdir}/my.cnf.d/client.cnf" 194 195RPROVIDES:${PN}-dbg += "libmysqlclient-r-dbg libmysqlclient-dbg" 196 197FILES:${PN} = " " 198RDEPENDS:${PN} = "${PN}-client ${PN}-server" 199ALLOW_EMPTY:${PN} = "1" 200 201RDEPENDS:${PN}-client = "perl perl-module-getopt-long perl-module-file-temp \ 202 perl-module-fcntl perl-module-sys-hostname perl-module-ipc-open3 \ 203 perl-module-exporter" 204RDEPENDS:${PN}-server = "perl perl-module-getopt-long perl-module-data-dumper \ 205 perl-module-file-basename perl-module-file-path perl-module-sys-hostname \ 206 perl-module-file-copy perl-module-file-temp perl-module-posix \ 207 ${PN}-client ${PN}-setupdb libdbi-perl libdbd-mysql-perl lzo" 208RDEPENDS:${PN}-leftovers = "perl perl-module-cwd perl-module-benchmark perl-module-getopt-long \ 209 perl-module-posix perl-module-data-dumper perl-module-sigtrap perl-module-threads \ 210 perl-module-threads-shared perl-module-io-socket perl-module-sys-hostname perl-module-file-copy \ 211 perl-module-file-spec perl-module-file-find perl-module-file-basename perl-module-file-path \ 212 perl-module-constant perl-module-lib perl-module-file-temp perl-module-file-spec-functions \ 213 perl-module-io-socket-inet perl-module-io-select bash" 214RDEPENDS:${PN}-setupdb = "coreutils" 215 216# Allow old code to link to the backward compatible library 217RDEPENDS:libmysqlclient-dev = "libmysqlclient-r-dev" 218 219FILES:libmysqlclient = "\ 220 ${libdir}/libmysqlclient.so.* \ 221 ${libdir}/libmariadb.so.* \ 222 ${sysconfdir}/my.cnf.d/client.cnf" 223FILES:libmysqlclient-dev = " \ 224 ${includedir}/mysql/ \ 225 ${libdir}/libmysqlclient.so \ 226 ${libdir}/libmariadb.so \ 227 ${sysconfdir}/aclocal \ 228 ${bindir}/mysql_config" 229FILES:libmysqlclient-staticdev = "\ 230 ${libdir}/*.a" 231 232# Avoid warnings about ha_xtradb.so.0.0.0 and ha_innodb_plugin.so.0.0.0 233# which are intentionally non-PIC on 32-bit x86 (see e.g. 234# storage/xtradb/plug.in in the source) 235INSANE_SKIP:libmysqlclient:append:x86 = " textrel" 236 237FILES:libmysqlclient-r = "${libdir}/libmysqlclient_r.so.*" 238FILES:libmysqlclient-r-dev = "\ 239 ${libdir}/libmysqlclient_r.so" 240FILES:libmysqlclient-r-staticdev = "${libdir}/libmysqlclient_r.a" 241 242FILES:libmysqld = "\ 243 ${libdir}/libmysqld.so.* \ 244 ${libdir}/libmariadbd.so.*" 245FILES:libmysqld-dev = "\ 246 ${libdir}/libmysqld.so \ 247 ${libdir}/libmariadbd.so" 248 249FILES:${PN}-client = "\ 250 ${bindir}/myisam_ftdump \ 251 ${bindir}/mysql \ 252 ${bindir}/mariadb \ 253 ${bindir}/mysql_client_test \ 254 ${bindir}/mariadb-client-test \ 255 ${bindir}/mysql_client_test_embedded \ 256 ${bindir}/mariadb-client-test-embedded \ 257 ${bindir}/mysql_find_rows \ 258 ${bindir}/mariadb-find-rows \ 259 ${bindir}/mysql_fix_extensions \ 260 ${bindir}/mariadb-fix-extensions \ 261 ${bindir}/mysql_waitpid \ 262 ${bindir}/mariadb-waitpid \ 263 ${bindir}/mysqlaccess \ 264 ${bindir}/mariadb-access \ 265 ${bindir}/mysqladmin \ 266 ${bindir}/mariadb-admin \ 267 ${bindir}/mysqlcheck \ 268 ${bindir}/mariadb-check \ 269 ${bindir}/mysqldump \ 270 ${bindir}/mariadb-dump \ 271 ${bindir}/mysqldumpslow \ 272 ${bindir}/mariadb-dumpslow \ 273 ${bindir}/mysqlimport \ 274 ${bindir}/mariadb-import \ 275 ${bindir}/mysqlshow \ 276 ${bindir}/mariadb-show \ 277 ${bindir}/mysqlslap \ 278 ${bindir}/mariadb-slap \ 279 ${bindir}/mysqltest_embedded \ 280 ${bindir}/mariadb-test-embedded \ 281 ${libexecdir}/mysqlmanager \ 282 ${sysconfdir}/my.cnf.d/mysql-clients.cnf" 283 284FILES:${PN}-server = "\ 285 ${bindir}/msql2mysql \ 286 ${bindir}/my_print_defaults \ 287 ${bindir}/myisamchk \ 288 ${bindir}/myisamlog \ 289 ${bindir}/myisampack \ 290 ${bindir}/mysql_convert_table_format \ 291 ${bindir}/mariadb-convert-table-format \ 292 ${bindir}/mysql_install_db \ 293 ${bindir}/mysql_secure_installation \ 294 ${bindir}/mariadb-secure-installation \ 295 ${bindir}/mysql_setpermission \ 296 ${bindir}/mariadb-setpermission \ 297 ${bindir}/mysql-systemd-start \ 298 ${bindir}/mysql_tzinfo_to_sql \ 299 ${bindir}/mariadb-tzinfo-to-sql \ 300 ${bindir}/mysql_upgrade \ 301 ${bindir}/mariadb-upgrade \ 302 ${bindir}/mysql_plugin \ 303 ${bindir}/mariadb-plugin \ 304 ${bindir}/mysqlbinlog \ 305 ${bindir}/mariadb-binlog \ 306 ${bindir}/mysqld_multi \ 307 ${bindir}/mariadbd-multi \ 308 ${bindir}/mariadbd-safe \ 309 ${bindir}/mysqld_safe \ 310 ${bindir}/mysqld_safe_helper \ 311 ${bindir}/mariadbd-safe-helper \ 312 ${bindir}/mysqlhotcopy \ 313 ${bindir}/mariadb-hotcopy \ 314 ${bindir}/mysqltest \ 315 ${bindir}/mariadb-test \ 316 ${bindir}/perror \ 317 ${bindir}/replace \ 318 ${bindir}/resolve_stack_dump \ 319 ${bindir}/resolveip \ 320 ${libexecdir}/mysqld \ 321 ${sbindir}/mysqld \ 322 ${sbindir}/mariadbd \ 323 ${libdir}/plugin/*.so \ 324 ${libdir}/security/*.so \ 325 ${libdir}/plugin/auth_pam_tool_dir/auth_pam_tool \ 326 ${datadir}/mysql/ \ 327 ${localstatedir}/mysql/ \ 328 ${sysconfdir}/init.d/mysqld \ 329 ${sysconfdir}/my.cnf \ 330 ${sysconfdir}/my.cnf.d/server.cnf \ 331 ${sysconfdir}/security/user_map.conf \ 332 ${sysconfdir}/tmpfiles.d" 333 334DESCRIPTION:${PN}-leftovers = "unpackaged and probably unneeded files for ${PN}" 335FILES:${PN}-leftovers = "/" 336