mariadb.inc 11 KB

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