mariadb.inc 13 KB

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