diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2019-11-10 13:21:36 +0000 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2019-11-10 13:21:36 +0000 |
commit | 77398e424e45d9e98c1cef3c43bdadb9d56e81ef (patch) | |
tree | 5aeffd3fc7b92fc615bd2c222fa8831aeda1925b /dev-db | |
parent | bd4aeefe33e63f613512604e47bfca7b2187697d (diff) |
gentoo resync : 10.11.2019
Diffstat (limited to 'dev-db')
21 files changed, 2297 insertions, 474 deletions
diff --git a/dev-db/Manifest.gz b/dev-db/Manifest.gz Binary files differindex e25957002cdc..51a90e82d81d 100644 --- a/dev-db/Manifest.gz +++ b/dev-db/Manifest.gz diff --git a/dev-db/db-je/Manifest b/dev-db/db-je/Manifest index af94ccb4313f..62859bdfc218 100644 --- a/dev-db/db-je/Manifest +++ b/dev-db/db-je/Manifest @@ -1,4 +1,4 @@ -AUX db-je-3.3.75-optional-test.patch 1791 BLAKE2B 40c45dd4b65121a06fe180e6c9c23e2494438b504e108bc5b015cfadb21dc34c0b3e90eff3c17abf549d62ecfd595186d228f2bec65d44846d65b9d4059b95bc SHA512 a33e2ae28fa121c68990b44f5441685d50b025db784d07ee6fb78ae9a19ec8c10ee1ec91fb0296507a94792fca86b9a54b5a3e8fd1c0e076f5dc6c0c28cceb1a +AUX db-je-3.3.75-optional-test.patch 1791 BLAKE2B 6996ecbb517a7a23ff7a437a3a1bf057eff5911020e4ce420912d6855527f2702db89fa915bbafb8d6735f057df0450256a08a667f79ad260189309e95148c22 SHA512 046498b963635e806552ddc9e3043caa3e90ce743b3542508b6e59c56bd4b7a07ecddb68c4631fdcdea60c7c64629731e301296a30120d3f382fa850bc344a3a DIST je-3.3.75.tar.gz 5179709 BLAKE2B 9bc8382ad2bf54efd1a235115972761ecc38e2f641a6722623c7d2806e6eb2e2dbe65bf91e899844641365fb144fe73e021d70c02f12343e6dccb998426c229e SHA512 e28648459a3a7dcf98e8865e6859544c656c3b58688b244df568cc8c006a74dda79aadfbfb279e099c1376914cca064734da490998a864c1bd2cc3209bc64ae4 -EBUILD db-je-3.3.75.ebuild 924 BLAKE2B 5fc910141644f454af0c1b029ac06730403027f3140f5734feb887a7d8599f067f5b4908f41a39528d310f22e85764cc4a09c2ab050c80e39fe4f792d86c960e SHA512 f951bcb9268e122d1718e7ecc360ab0aa17f61859735090f87991aaf3547af7ba6a9d3d7c9011d8fdf342c9e5a66e7e9f83d563bb4d19889852605d54fef818c +EBUILD db-je-3.3.75.ebuild 932 BLAKE2B f539d68c7eb4667e6b927f0231aac4b53d622a9d1e7a770ebce2084b16e1abe0a3177a010df80f057349e6863cd2c46f5841131c248b256af983648307c478b6 SHA512 254ebbffe0bc1da2c645538a1dd381206e16497d01d8fc80ec4824f379d6eea43a164f21dd28fe2fe914adf7f967a38681891496a945fb2448a83d50dbd4bd41 MISC metadata.xml 352 BLAKE2B 8390000455654697f473905c14903172230b9667fd16c4db74dd32643b096cb7c8efa21f8614b30d676fb32e052a76c613298e2a28c362d6135f61a4fe27c242 SHA512 a3c6ce3cd97b39644238700277dd416e1ee79df975184de3429810ca4d77f7160112adef6a9b56f77243a003187f6642798b278cf8501d55da766ccfbaa861cf diff --git a/dev-db/db-je/db-je-3.3.75.ebuild b/dev-db/db-je/db-je-3.3.75.ebuild index 4e4723e4f4ce..943c9c9fd986 100644 --- a/dev-db/db-je/db-je-3.3.75.ebuild +++ b/dev-db/db-je/db-je-3.3.75.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=0 +EAPI=7 JAVA_PKG_IUSE="doc source" @@ -9,30 +9,30 @@ inherit java-pkg-2 java-ant-2 DESCRIPTION="A high performance, transactional storage engine written entirely in Java" HOMEPAGE="https://www.oracle.com/database/berkeley-db/java-edition.html" -SRC_URI="http://download.oracle.com/berkeley-db/${P/db-/}.tar.gz" +SRC_URI="https://download.oracle.com/berkeley-db/${P/db-/}.tar.gz" +S=${WORKDIR}/${P/db-/} LICENSE="Sleepycat BSD" SLOT="3.3" KEYWORDS="amd64 x86" IUSE="" -DEPEND=">=virtual/jdk-1.5" +DEPEND=">=virtual/jdk-1.5 + dev-java/ant-core:0" RDEPEND=">=virtual/jre-1.5" -S=${WORKDIR}/${P/db-/} -src_unpack() { - unpack ${A} - cd "${S}" || die - epatch "${FILESDIR}"/${P}-optional-test.patch - rm -rf docs +EANT_DOC_TARGET="javadoc-all" +EANT_EXTRA_ARGS="-Dnotest=true" + +src_prepare() { + default + eapply "${FILESDIR}"/${P}-optional-test.patch + rm -r docs || die cd lib || die - rm -v *jar || die + rm -v *.jar || die java-pkg_jar-from --build-only ant-core ant.jar } -EANT_DOC_TARGET="javadoc-all" -EANT_EXTRA_ARGS="-Dnotest=true" - src_install() { java-pkg_dojar build/lib/je.jar use doc && java-pkg_dojavadoc docs diff --git a/dev-db/db-je/files/db-je-3.3.75-optional-test.patch b/dev-db/db-je/files/db-je-3.3.75-optional-test.patch index e8f7600398e2..ac23185c2ba8 100644 --- a/dev-db/db-je/files/db-je-3.3.75-optional-test.patch +++ b/dev-db/db-je/files/db-je-3.3.75-optional-test.patch @@ -1,5 +1,5 @@ ---- build.xml 2008-06-11 05:25:20.000000000 +0200 -+++ build.xml.new 2008-08-22 15:59:53.000000000 +0200 +--- a/build.xml 2008-06-11 05:25:20.000000000 +0200 ++++ b/build.xml 2008-08-22 15:59:53.000000000 +0200 @@ -102,6 +102,7 @@ <path id="empty.classpath"/> diff --git a/dev-db/mariadb/Manifest b/dev-db/mariadb/Manifest index efe07de7f0dc..b49e56dfe014 100644 --- a/dev-db/mariadb/Manifest +++ b/dev-db/mariadb/Manifest @@ -10,8 +10,10 @@ DIST mariadb-10.1.41.tar.gz 63615288 BLAKE2B 91ebc6d24c80ad9651c42a2f4553ce3ec3b DIST mariadb-10.2.22.tar.gz 71907765 BLAKE2B e7781a9e1bb0becca543ebb0b9e03912fbafa9de45bbd5c7232f92d29b934148dd124ad462bf8aa5aec2e4ee0bf75a03fae5e5fe97a77e1d93095052a577c14b SHA512 cd61d0c2d528b23b975e6ea142560d9b9ebff7ecda6fa9b3659b25b3406e8cc925918f4c3bb0e200ddb8d0520bcaa4d4f70d245b4731896f9ba2f1bdf0a817b2 DIST mariadb-10.2.26.tar.gz 73037655 BLAKE2B 54fd27959960736bffe0eeacc913b9aed0407d1be7a60d3035a1b84cbe8066aa1551c1c82a1b90b824debf85faaa9d11e3de29634a0108bc04bc17ca5c2a9d7c SHA512 1eaac1c1dda1017b64249d39d872729d3140d81653240c54f688f64440b1775e5f3a7c5a8486075fa1799411dfb0c2c09b7c1dbb46d95675572d90127048c124 DIST mariadb-10.2.27.tar.gz 73068579 BLAKE2B 7e4ae229040b3136ad107979864bc391556c1ba83847addd89e09f3757cd01203503e07832abe496a7f560048ed704f273607da3a114afa59ceb13cbb3b89c14 SHA512 9ea7ea30f964d022d16c662c18ac40ea50ef5b6592d02ba739ad81f9dfa9e60be90ea6d4706b43b07402c4cbc8c0280633b6e21bda6daf5bbc1d3c540993e4d6 +DIST mariadb-10.2.29.tar.gz 73087972 BLAKE2B aa3fe880f00b02846b26f16fcd37d18ebe217a2c9680c8c535042d2759852c929cd649d662c6a2bc603d934a6ba770ef945752c99d150f539e1fdd0d9be0ad51 SHA512 cee4e0d1a2b203cadaaa5678c5ce17302f18ffa55d07c8329392b1ea84740340c006eb9ab5920beef80835c2a399d5fffca409b8288e10ae62d290af62ec4ab8 DIST mariadb-10.3.17.tar.gz 71894997 BLAKE2B 8e04302f67a99c28751f9970b7e8dfc5ada0583fdabc416e0469e23fa93d22dae8b79e762ef14ca65957e22ec310a290b15d33746f6f2e7287f922803e6a6826 SHA512 6fba995d8c284a12f19ee5635f5d69d8fa89fc314f512cd1764b2c4593933baf71a472ddce630463debd3bfbafa1cf5afee3f40d3c4062242f58cea16259561e DIST mariadb-10.3.18.tar.gz 71950543 BLAKE2B d157426781713f19470004d80c587019e12c875d0958e5077ca373d856a8f1214be01dbc2a50fd5a754eaa91e727179bea70ee2a3133a219209cb819108c8940 SHA512 817253d18f20c74f9ec8030678fd50a28b1726fd59153023a3a5e9b3f79e1f44d79feb24ae9ed72d8c1c04017110c932aba7be0610fb06245590c7f5610db242 +DIST mariadb-10.3.20.tar.gz 71990355 BLAKE2B f950f0eb836751d0eebb9ae561fe3b5aefade04a0d389465918aa2a887e4f717ab4e6bd835dea8f9a88aacfe10c0b091fc2a59882a1781a3f2903ef07a759f5d SHA512 8080cb6db85c587f39f128e98b00c3e6428bf3e828271a227bb2c61c97683c965802baa6e5f825317f7e2963683c0f81699642853deeca6977faa2b6932044a3 DIST mariadb-10.4.7.tar.gz 78155161 BLAKE2B b2c92093438b3574e494bda2180f4a2b5cbe10bac1c46acc45b5303fb4c2a1ca54f3ea88d138ab9cbb492460171dde86f3c21e5873d964b15c6c064e2e6eb47f SHA512 cb8b5adaef1970b9c8f04db08c18660f8b3df87f699aa93c1bee9497b887ddf50fcf3a2aebbe21a5fc9dfcbd118d0192d7421512522d98eaf30a014822c2f7ce DIST mariadb-10.4.8.tar.gz 78262897 BLAKE2B 357dfd8db702d30c30173cb4ee0bbbda8e54a77a8f726cdc529cbaeebd390fe11fd05c108dde54b029b7e311ebbf9a610dc2c6e4015c9a198d816deaaec5831e SHA512 1aa7117734f4ebeb08395289ff1295e1d2ed2f89e8ccf3224cd60afaf2be56f81e8f0448e7619eeb6c858355a2b1e224efe42a0f400941f138342318adb66c42 DIST mariadb-5.5.65.tar.gz 45957577 BLAKE2B 9ed27349d008d2001ed4059370505064918ef3586f89157f5f28892bceabd3073b7070f4054c0a700f1504dde3a4077e274111d5b8cb3713bc5db0910b752628 SHA512 5dbaa2ba7a829a0d5ae6ab8394c31a58753cd93da2637cd83d1e055e78b0796d63214418ddc91a65cefdd791aad4f01b0743aa8c7c40ecbb404cb81fd0138443 @@ -23,8 +25,10 @@ EBUILD mariadb-10.1.41-r1.ebuild 29914 BLAKE2B f416edb6e9d3768cf76197d42af13c43f EBUILD mariadb-10.2.22-r1.ebuild 32513 BLAKE2B 4ad7714945e8fa176bfb1634c088b67700277c6421ff831fae5b2a9b2100d4403f77007e4e2f621852341414b7fde78cc11aa39a768bdafc5e011f6ffccea8d1 SHA512 5056956f48909865cb06d7e5c6a874748087d63f0a4bd509e08706607c37a2fd45aa7ffb1c88666bb9f7cd30be888da128b011fd61f633a29ba10a4a7b7510c9 EBUILD mariadb-10.2.26-r1.ebuild 32911 BLAKE2B 8f170cf9e7542e99dff750f43f1e21d49b991a45975ea2af85c8745fd8131d7099d028c63b48c727196dae20f808511e00bc1860ade21266df3b4eb47005622c SHA512 2d742e303b859de8887d8cc272dc42121e29e4316599cc35f0f366bb8dc934bc5bb58408f492c08dc5da89937867f2b2fb870b56a23a0c04f5af2fbf7a7ab137 EBUILD mariadb-10.2.27.ebuild 32885 BLAKE2B 4be09b5a7e829ea71a74b1b3f4a4d46997bd594aff84ac95507963582c4ff59c8644f16d2c8ffccc4c67b6347f06af2c7fcf99252f4de08b2672f3bd60fa17d1 SHA512 6c4f868dfbe90af18dbf8f3ab885c2978de2ce5a06ac1b2aeb914b4319e9a268f3536052845f73859f06b8e0eb9d0461f188e77553ba8a3b2c4943d3824ab6b1 +EBUILD mariadb-10.2.29.ebuild 33107 BLAKE2B 1551c19ed2fb6ec140e661f22c8ee6b833ee4e919424102cb66906daf39a9cc79fe250febe622a74ce6ad9dcf4fc7d7a0794461c80d88298f614a8a1eca6581b SHA512 203baf92f5c63243e1f541caf88f09f3a418f34d327c521b85804bd3666c792aaca0a8382788a565256b7ab9a7bdb7eaf222ade3707159021bb3c59fb3c08e27 EBUILD mariadb-10.3.17-r1.ebuild 32536 BLAKE2B 9cc37e244e7957c0cce7d69b32d57fef35dad5447251109816740d1adb1bebd70a59ffa993c56c9ba4d778427274a89aa0a1b7d40bb912acf72576d896c065e5 SHA512 e96829712849602fc312fec76e473b382c3048623e10594ba6bba8450bcc6eb33e1e017815d60e7b98bb1baeaadf997163147660a4b178e5e729d6cfcf77e02c EBUILD mariadb-10.3.18.ebuild 32487 BLAKE2B d4e707dc8f24f77db7334cd8434c0acab89d8e8ae93b10e9f11dd954e588f19edd95b99027511fd5960cc6720edb8e8fd92fdd65185317fc6d72e2d8af9d5d78 SHA512 7e3828aba1f0abf2fc9a00f229269c1b0d04a48cae22954204c901adb31e140632db1c6332e74642440c28a75ce65fd8123a4fea1f44d0f6f127a1c0d1454674 +EBUILD mariadb-10.3.20.ebuild 32567 BLAKE2B 3683b2b23a0cddd5aa6d54cd7f3569aba7c3f7b5cc92a9bea6ee987bc648852fe5646c5b70d8a193b1751f9077b89be89974032bd63a271d0a139fe86d10d5a8 SHA512 877a8de786e8636c97cd01b2ebabdd05b8a375c13fdd56f9568883877c7bfd2157815c6201eb22b92622b5baf62fdada1947847730cb3ab060b39f20ac937cfb EBUILD mariadb-10.4.7-r1.ebuild 33153 BLAKE2B f91b914f35ec3c18d1594b7bd50c87543574da155ae1ef90ff43f2ebe0444c1c5d5d2e27f28a94ea250db77815abce03b4de37de19a55dd9476ee1ff5676d7ac SHA512 a83c7d8cf1eee3978413e3dd431d19e9b3ca8a4d1925f9d2eb5ff80b861cf6f94dea75986b705398fa57dab7920eb2144f4d129dc32848af352c56c84fc7d74c EBUILD mariadb-10.4.8.ebuild 33104 BLAKE2B e85f027d79c9a5160222d03761a9e587630f6c91ad29a30556e9c8ed61ae4d35f0d2fea5f17b49dc53cea0786fa6fdb6a4485ea517441075719c08cc1522e62f SHA512 7d57de155a5cdc8e79def3a12f8171d1358836e2460c8a14c878cd7686a2bbe6049a7a498fcbe94111a1d9c0c1bf202031408d81631f412696cf8cbaddd1a798 EBUILD mariadb-5.5.65.ebuild 27246 BLAKE2B d8dcf8273a8f6b30c5ad4b9e00d3ae0aa81c3d90473039b7cf2308e8f97f70a1e0c7e163ac6f101e8d8f94e8844f6284625d35be1540c477b5347c67a873fec4 SHA512 b1c9f150e37eba6e2fb847f627dd1d0bf86eb5d3c17304268eef3e54e166fd0e2320b2caf024037233462ba9a38ffba5b76684046cff022de1d4c222bdc30aea diff --git a/dev-db/mariadb/mariadb-10.2.29.ebuild b/dev-db/mariadb/mariadb-10.2.29.ebuild new file mode 100644 index 000000000000..df420dcf7436 --- /dev/null +++ b/dev-db/mariadb/mariadb-10.2.29.ebuild @@ -0,0 +1,986 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="6" +MY_EXTRAS_VER="20190305-2052Z" +SUBSLOT="18" + +JAVA_PKG_OPT_USE="jdbc" + +# Keeping eutils in EAPI=6 for emktemp in pkg_config + +inherit eutils systemd flag-o-matic prefix toolchain-funcs \ + java-pkg-opt-2 user cmake-utils + +SRC_URI="https://downloads.mariadb.org/interstitial/${P}/source/${P}.tar.gz " + +# Gentoo patches to MySQL +if [[ "${MY_EXTRAS_VER}" != "live" && "${MY_EXTRAS_VER}" != "none" ]]; then + SRC_URI="${SRC_URI} + mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 + https://gitweb.gentoo.org/proj/mysql-extras.git/snapshot/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 + https://dev.gentoo.org/~grknight/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 + https://dev.gentoo.org/~robbat2/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 + https://dev.gentoo.org/~jmbsvicetto/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2" +fi + +HOMEPAGE="https://mariadb.org/" +DESCRIPTION="An enhanced, drop-in replacement for MySQL" +LICENSE="GPL-2 LGPL-2.1+" +SLOT="0/${SUBSLOT:-0}" +IUSE="+backup bindist client-libs cracklib debug extraengine galera innodb-lz4 + innodb-lzo innodb-snappy jdbc jemalloc kerberos latin1 libressl mroonga + numa odbc oqgraph pam +perl profiling rocksdb selinux +server sphinx + sst-rsync sst-mariabackup sst-xtrabackup static systemd systemtap tcmalloc + test tokudb xml yassl" + +# Tests always fail when libressl is enabled due to hard-coded ciphers in the tests +RESTRICT="!bindist? ( bindist ) libressl? ( test ) !test? ( test )" + +REQUIRED_USE="jdbc? ( extraengine server !static ) + server? ( tokudb? ( jemalloc !tcmalloc ) ) + ?? ( tcmalloc jemalloc ) + static? ( yassl !pam )" + +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~x64-solaris ~x86-solaris" + +# Shorten the path because the socket path length must be shorter than 107 chars +# and we will run a mysql server during test phase +S="${WORKDIR}/mysql" + +if [[ "${MY_EXTRAS_VER}" == "live" ]] ; then + inherit git-r3 + EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/mysql-extras.git" + EGIT_CHECKOUT_DIR="${WORKDIR%/}/mysql-extras" + EGIT_CLONE_TYPE=shallow + MY_PATCH_DIR="${WORKDIR%/}/mysql-extras" +else + MY_PATCH_DIR="${WORKDIR%/}/mysql-extras-${MY_EXTRAS_VER}" +fi + +PATCHES=( + "${MY_PATCH_DIR}"/20015_all_mariadb-pkgconfig-location.patch + "${MY_PATCH_DIR}"/20018_all_mariadb-10.2.16-without-clientlibs-tools.patch + "${MY_PATCH_DIR}"/20024_all_mariadb-10.2.6-mysql_st-regression.patch + "${MY_PATCH_DIR}"/20025_all_mariadb-10.2.6-gssapi-detect.patch + "${MY_PATCH_DIR}"/20035_all_mariadb-10.2-atomic-detection.patch +) + +# Be warned, *DEPEND are version-dependant +# These are used for both runtime and compiletime +COMMON_DEPEND=" + kernel_linux? ( + sys-process/procps:0= + dev-libs/libaio:0= + ) + >=sys-apps/sed-4 + >=sys-apps/texinfo-4.7-r1 + jemalloc? ( dev-libs/jemalloc:0= ) + tcmalloc? ( dev-util/google-perftools:0= ) + systemtap? ( >=dev-util/systemtap-1.3:0= ) + >=sys-libs/zlib-1.2.3:0= + kerberos? ( virtual/krb5 ) + yassl? ( net-libs/gnutls:0= ) + !yassl? ( + !libressl? ( >=dev-libs/openssl-1.0.0:0= ) + libressl? ( dev-libs/libressl:0= ) + ) + sys-libs/ncurses:0= + !bindist? ( + sys-libs/binutils-libs:0= + >=sys-libs/readline-4.1:0= + ) + server? ( + backup? ( app-arch/libarchive:0= ) + cracklib? ( sys-libs/cracklib:0= ) + extraengine? ( + odbc? ( dev-db/unixODBC:0= ) + xml? ( dev-libs/libxml2:2= ) + ) + innodb-lz4? ( app-arch/lz4 ) + innodb-lzo? ( dev-libs/lzo ) + innodb-snappy? ( app-arch/snappy ) + mroonga? ( app-text/groonga-normalizer-mysql >=app-text/groonga-7.0.4 ) + numa? ( sys-process/numactl ) + oqgraph? ( >=dev-libs/boost-1.40.0:0= dev-libs/judy:0= ) + pam? ( sys-libs/pam:0= ) + systemd? ( sys-apps/systemd:= ) + tokudb? ( app-arch/snappy ) + ) + >=dev-libs/libpcre-8.41-r1:3= +" +DEPEND="virtual/yacc + static? ( sys-libs/ncurses[static-libs] ) + || ( >=sys-devel/gcc-3.4.6 >=sys-devel/gcc-apple-4.0 ) + server? ( extraengine? ( jdbc? ( >=virtual/jdk-1.6 ) ) ) + ${COMMON_DEPEND}" +RDEPEND="selinux? ( sec-policy/selinux-mysql ) + !dev-db/mysql !dev-db/mariadb-galera !dev-db/percona-server !dev-db/mysql-cluster + server? ( !prefix? ( dev-db/mysql-init-scripts ) ) + !<virtual/mysql-5.6-r11 + ${COMMON_DEPEND} + server? ( galera? ( + sys-apps/iproute2 + =sys-cluster/galera-25* + sst-rsync? ( sys-process/lsof ) + sst-mariabackup? ( net-misc/socat[ssl] ) + sst-xtrabackup? ( net-misc/socat[ssl] ) + ) ) + perl? ( !dev-db/mytop + virtual/perl-Getopt-Long + dev-perl/TermReadKey + virtual/perl-Term-ANSIColor + virtual/perl-Time-HiRes ) + server? ( extraengine? ( jdbc? ( >=virtual/jre-1.6 ) ) ) +" +# For other stuff to bring us in +# dev-perl/DBD-mysql is needed by some scripts installed by MySQL +# percona-xtrabackup-bin causes a circular dependency if DBD-mysql is not already installed +PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 ) + server? ( ~virtual/mysql-5.6[static=] + galera? ( sst-xtrabackup? ( || ( >=dev-db/percona-xtrabackup-bin-2.2.4 dev-db/percona-xtrabackup ) ) ) )" + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]] ; then + local GCC_MAJOR_SET=$(gcc-major-version) + local GCC_MINOR_SET=$(gcc-minor-version) + if use tokudb && [[ ${GCC_MAJOR_SET} -lt 4 || \ + ${GCC_MAJOR_SET} -eq 4 && ${GCC_MINOR_SET} -lt 7 ]] ; then + eerror "${PN} with tokudb needs to be built with gcc-4.7 or later." + eerror "Please use gcc-config to switch to gcc-4.7 or later version." + die + fi + # Bug 565584. InnoDB now requires atomic functions introduced with gcc-4.7 on + # non x86{,_64} arches + if ! use amd64 && ! use x86 && [[ ${GCC_MAJOR_SET} -lt 4 || \ + ${GCC_MAJOR_SET} -eq 4 && ${GCC_MINOR_SET} -lt 7 ]] ; then + eerror "${PN} needs to be built with gcc-4.7 or later." + eerror "Please use gcc-config to switch to gcc-4.7 or later version." + die + fi + fi + java-pkg-opt-2_pkg_setup + if has test ${FEATURES} && \ + use server && ! has userpriv ${FEATURES} ; then + eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." + fi + + # This should come after all of the die statements + enewgroup mysql 60 || die "problem adding 'mysql' group" + enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" +} + +pkg_preinst() { + java-pkg-opt-2_pkg_preinst + + # Here we need to see if the implementation switched client libraries + # We check if this is a new instance of the package and a client library already exists + local SHOW_ABI_MESSAGE libpath + if [[ -z ${REPLACING_VERSIONS} && -e "${EROOT}usr/$(get_libdir)/libmysqlclient.so" ]] ; then + libpath=$(readlink "${EROOT}usr/$(get_libdir)/libmysqlclient.so") + elog "Due to ABI changes when switching between different client libraries," + elog "revdep-rebuild must find and rebuild all packages linking to libmysqlclient." + elog "Please run: revdep-rebuild --library ${libpath}" + ewarn "Failure to run revdep-rebuild may cause issues with other programs or libraries" + fi +} + +pkg_postinst() { + # Make sure the vars are correctly initialized + mysql_init_vars + + # Create log directory securely if it does not exist + [[ -d "${ROOT}${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" + + if use server ; then + if use pam; then + einfo + elog "This install includes the PAM authentication plugin." + elog "To activate and configure the PAM plugin, please read:" + elog "https://mariadb.com/kb/en/mariadb/pam-authentication-plugin/" + einfo + fi + + if [[ -z "${REPLACING_VERSIONS}" ]] ; then + einfo + elog "You might want to run:" + elog "\"emerge --config =${CATEGORY}/${PF}\"" + elog "if this is a new install." + elog + elog "If you are switching server implentations, you should run the" + elog "mysql_upgrade tool." + einfo + else + einfo + elog "If you are upgrading major versions, you should run the" + elog "mysql_upgrade tool." + einfo + fi + + if use galera ; then + einfo + elog "Be sure to edit the my.cnf file to activate your cluster settings." + elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\"" + elog "The first time the cluster is activated, you should add" + elog "--wsrep-new-cluster to the options in /etc/conf.d/mysql for one node." + elog "This option should then be removed for subsequent starts." + einfo + if use sst-xtrabackup ; then + ewarn "As per https://mariadb.com/kb/en/meta/xtrabackup_warning/, XtraBackup" + ewarn "as an SST is broken by default beginning with 10.2.19 with the setting" + ewarn "innodb_safe_truncate=ON. Please migrate to sst-mariabackup instead." + ewarn "sst-xtrabackup is being removed in 10.3 and higher." + fi + fi + fi + + # Note about configuration change + einfo + elog "This version of mariadb reorganizes the configuration from a single my.cnf" + elog "to several files in /etc/mysql/${PN}.d." + elog "Please backup any changes you made to /etc/mysql/my.cnf" + elog "and add them as a new file under /etc/mysql/${PN}.d with a .cnf extension." + elog "You may have as many files as needed and they are read alphabetically." + elog "Be sure the options have the appropriate section headers, i.e. [mysqld]." + einfo +} + +src_unpack() { + unpack ${A} + # Grab the patches + [[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR%/}/mysql-extras" git-r3_src_unpack + + mv -f "${WORKDIR%/}/${P}" "${S}" || die +} + +src_prepare() { + _disable_plugin() { + echo > "${S%/}/plugin/${1}/CMakeLists.txt" || die + } + _disable_engine() { + echo > "${S%/}/storage/${1}/CMakeLists.txt" || die + } + + local malloc + for malloc in jemalloc tcmalloc ; do + if use ${malloc}; then + echo "TARGET_LINK_LIBRARIES(mysqld ${malloc})" >> "${S}/sql/CMakeLists.txt" + fi + done + + # Don't build bundled xz-utils for tokudb + echo > "${S}/storage/tokudb/PerconaFT/cmake_modules/TokuThirdParty.cmake" || die + sed -i -e 's/ build_lzma//' -e 's/ build_snappy//' "${S}/storage/tokudb/PerconaFT/ft/CMakeLists.txt" || die + sed -i -e 's/add_dependencies\(tokuportability_static_conv build_jemalloc\)//' "${S}/storage/tokudb/PerconaFT/portability/CMakeLists.txt" || die + + local plugin + local server_plugins=( handler_socket auth_socket feedback metadata_lock_info + locale_info qc_info server_audit sql_errlog auth_ed25519 ) + local test_plugins=( audit_null auth_examples daemon_example fulltext + debug_key_management example_key_management ) + if ! use server; then # These plugins are for the server + for plugin in "${server_plugins[@]}" ; do + _disable_plugin "${plugin}" + done + fi + + if ! use test; then # These plugins are only used during testing + for plugin in "${test_plugins[@]}" ; do + _disable_plugin "${plugin}" + done + _disable_engine test_sql_discovery + fi + + _disable_engine example + + if ! use oqgraph ; then # avoids extra library checks + _disable_engine oqgraph + fi + + if use mroonga ; then + # Remove the bundled groonga + # There is no CMake flag, it simply checks for existance + rm -r "${S}"/storage/mroonga/vendor/groonga || die "could not remove packaged groonga" + else + _disable_engine mroonga + fi + + # Don't clash with dev-db/mysql-connector-c + sed -i -e 's/ my_print_defaults.1//' \ + -e 's/ perror.1//' \ + "${S}"/man/CMakeLists.txt || die + + # Fix galera_recovery.sh script + sed -i -e "s~@bindir@/my_print_defaults~${EPREFIX}/usr/libexec/mariadb/my_print_defaults~" \ + scripts/galera_recovery.sh || die + + cmake-utils_src_prepare + java-pkg-opt-2_src_prepare +} + +src_configure(){ + # bug 508724 mariadb cannot use ld.gold + tc-ld-disable-gold + # Bug #114895, bug #110149 + filter-flags "-O" "-O[01]" + + append-cxxflags -felide-constructors + + # bug #283926, with GCC4.4, this is required to get correct behavior. + append-flags -fno-strict-aliasing + + CMAKE_BUILD_TYPE="RelWithDebInfo" + + # debug hack wrt #497532 + mycmakeargs=( + -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')" + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')" + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr" + -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql" + -DSYSCONFDIR="${EPREFIX}/etc/mysql" + -DINSTALL_BINDIR=bin + -DINSTALL_DOCDIR=share/doc/${PF} + -DINSTALL_DOCREADMEDIR=share/doc/${PF} + -DINSTALL_INCLUDEDIR=include/mysql + -DINSTALL_INFODIR=share/info + -DINSTALL_LIBDIR=$(get_libdir) + -DINSTALL_MANDIR=share/man + -DINSTALL_MYSQLSHAREDIR=share/mariadb + -DINSTALL_PLUGINDIR=$(get_libdir)/mariadb/plugin + -DINSTALL_SCRIPTDIR=share/mariadb/scripts + -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql" + -DINSTALL_SBINDIR=sbin + -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mariadb" + -DWITH_COMMENT="Gentoo Linux ${PF}" + -DWITH_UNIT_TESTS=$(usex test ON OFF) + -DWITH_LIBEDIT=0 + -DWITH_ZLIB=system + -DWITHOUT_LIBWRAP=1 + -DENABLED_LOCAL_INFILE=1 + -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock" + -DINSTALL_UNIX_ADDRDIR="${EPREFIX}/var/run/mysqld/mysqld.sock" + -DWITH_DEFAULT_COMPILER_OPTIONS=0 + -DWITH_DEFAULT_FEATURE_SET=0 + -DINSTALL_SYSTEMD_UNITDIR="$(systemd_get_systemunitdir)" + # The build forces this to be defined when cross-compiling. We pass it + # all the time for simplicity and to make sure it is actually correct. + -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1) + -DPKG_CONFIG_EXECUTABLE="${EPREFIX}/usr/bin/$(tc-getPKG_CONFIG)" + -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO) + -DAUTH_GSSAPI_PLUGIN_TYPE=$(usex kerberos DYNAMIC OFF) + -DCONC_WITH_EXTERNAL_ZLIB=YES + -DWITH_EXTERNAL_ZLIB=YES + -DSUFFIX_INSTALL_DIR="" + -DWITH_UNITTEST=OFF + -DWITHOUT_CLIENTLIBS=YES + -DCLIENT_PLUGIN_DIALOG=OFF + -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF + -DCLIENT_PLUGIN_CLIENT_ED25519=OFF + -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC + -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=OFF + ) + if use test ; then + mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mariadb/mysql-test ) + else + mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' ) + fi + + if ! use yassl ; then + mycmakeargs+=( -DWITH_SSL=system -DCLIENT_PLUGIN_SHA256_PASSWORD=STATIC ) + else + mycmakeargs+=( -DWITH_SSL=bundled ) + fi + + # bfd.h is only used starting with 10.1 and can be controlled by NOT_FOR_DISTRIBUTION + mycmakeargs+=( + -DWITH_READLINE=$(usex bindist 1 0) + -DNOT_FOR_DISTRIBUTION=$(usex bindist 0 1) + -DENABLE_DTRACE=$(usex systemtap) + ) + + if use server ; then + + # Federated{,X} must be treated special otherwise they will not be built as plugins + if ! use extraengine ; then + mycmakeargs+=( + -DPLUGIN_FEDERATED=NO + -DPLUGIN_FEDERATEDX=NO ) + fi + + mycmakeargs+=( + -DWITH_JEMALLOC=$(usex jemalloc system) + -DWITH_PCRE=system + -DPLUGIN_OQGRAPH=$(usex oqgraph DYNAMIC NO) + -DPLUGIN_SPHINX=$(usex sphinx YES NO) + -DPLUGIN_TOKUDB=$(usex tokudb YES NO) + -DPLUGIN_AUTH_PAM=$(usex pam YES NO) + -DPLUGIN_CRACKLIB_PASSWORD_CHECK=$(usex cracklib YES NO) + -DPLUGIN_CASSANDRA=NO + -DPLUGIN_SEQUENCE=$(usex extraengine YES NO) + -DPLUGIN_SPIDER=$(usex extraengine YES NO) + -DPLUGIN_CONNECT=$(usex extraengine YES NO) + -DCONNECT_WITH_MYSQL=1 + -DCONNECT_WITH_LIBXML2=$(usex xml) + -DCONNECT_WITH_ODBC=$(usex odbc) + -DCONNECT_WITH_JDBC=$(usex jdbc) + # Build failure and autodep wrt bug 639144 + -DCONNECT_WITH_MONGO=OFF + -DWITH_WSREP=$(usex galera) + -DWITH_INNODB_LZ4=$(usex innodb-lz4 ON OFF) + -DWITH_INNODB_LZO=$(usex innodb-lzo ON OFF) + -DWITH_INNODB_SNAPPY=$(usex innodb-snappy ON OFF) + -DPLUGIN_MROONGA=$(usex mroonga DYNAMIC NO) + -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO) + -DWITH_MARIABACKUP=$(usex backup ON OFF) + -DWITH_LIBARCHIVE=$(usex backup ON OFF) + -DINSTALL_SQLBENCHDIR=share/mariadb + -DPLUGIN_ROCKSDB=$(usex rocksdb DYNAMIC NO) + # systemd is only linked to for server notification + -DWITH_SYSTEMD=$(usex systemd yes no) + -DWITH_NUMA=$(usex numa ON OFF) + ) + + # Workaround for MDEV-14524 + use tokudb && mycmakeargs+=( -DTOKUDB_OK=1 ) + + if use test ; then + # This is needed for the new client lib which tests a real, open server + mycmakeargs+=( -DSKIP_TESTS=ON ) + fi + + if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]]; then + ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}" + ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}." + ewarn "You MUST file bugs without these variables set." + + mycmakeargs+=( + -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET} + -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION} + ) + + elif ! use latin1 ; then + mycmakeargs+=( + -DDEFAULT_CHARSET=utf8 + -DDEFAULT_COLLATION=utf8_general_ci + ) + else + mycmakeargs+=( + -DDEFAULT_CHARSET=latin1 + -DDEFAULT_COLLATION=latin1_swedish_ci + ) + fi + mycmakeargs+=( + -DEXTRA_CHARSETS=all + -DMYSQL_USER=mysql + -DDISABLE_SHARED=$(usex static YES NO) + -DWITH_DEBUG=$(usex debug) + -DWITH_EMBEDDED_SERVER=OFF + -DWITH_PROFILING=$(usex profiling) + ) + + if use static; then + mycmakeargs+=( -DWITH_PIC=1 ) + fi + + if use jemalloc || use tcmalloc ; then + mycmakeargs+=( -DWITH_SAFEMALLOC=OFF ) + fi + + # Storage engines + mycmakeargs+=( + -DWITH_ARCHIVE_STORAGE_ENGINE=1 + -DWITH_BLACKHOLE_STORAGE_ENGINE=1 + -DWITH_CSV_STORAGE_ENGINE=1 + -DWITH_HEAP_STORAGE_ENGINE=1 + -DWITH_INNOBASE_STORAGE_ENGINE=1 + -DWITH_MYISAMMRG_STORAGE_ENGINE=1 + -DWITH_MYISAM_STORAGE_ENGINE=1 + -DWITH_PARTITION_STORAGE_ENGINE=1 + ) + + else + mycmakeargs+=( + -DWITHOUT_SERVER=1 + -DWITH_EMBEDDED_SERVER=OFF + -DEXTRA_CHARSETS=none + -DINSTALL_SQLBENCHDIR= + -DWITH_SYSTEMD=no + ) + fi + + cmake-utils_src_configure +} + +src_compile() { + cmake-utils_src_compile +} + +src_install() { + cmake-utils_src_install + + # Remove an unnecessary, private config header which will never match between ABIs and is not meant to be used + if [[ -f "${ED}/usr/include/mysql/server/private/config.h" ]] ; then + rm "${ED}/usr/include/mysql/server/private/config.h" || die + fi + + # Make sure the vars are correctly initialized + mysql_init_vars + + # Convenience links + einfo "Making Convenience links for mysqlcheck multi-call binary" + dosym "mysqlcheck" "/usr/bin/mysqlanalyze" + dosym "mysqlcheck" "/usr/bin/mysqlrepair" + dosym "mysqlcheck" "/usr/bin/mysqloptimize" + + # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir + if [[ -d "${ED}/usr/data" ]] ; then + rm -Rf "${ED}/usr/data" || die + fi + + # Unless they explicitly specific USE=test, then do not install the + # testsuite. It DOES have a use to be installed, esp. when you want to do a + # validation of your database configuration after tuning it. + if ! use test ; then + rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test" + fi + + # Configuration stuff + einfo "Building default configuration ..." + insinto "${MY_SYSCONFDIR#${EPREFIX}}" + [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf + cp "${FILESDIR}/my.cnf-10.2" "${TMPDIR}/my.cnf" || die + eprefixify "${TMPDIR}/my.cnf" + doins "${TMPDIR}/my.cnf" + insinto "${MY_SYSCONFDIR#${EPREFIX}}/mariadb.d" + cp "${FILESDIR}/my.cnf.distro-client" "${TMPDIR}/50-distro-client.cnf" || die + eprefixify "${TMPDIR}/50-distro-client.cnf" + doins "${TMPDIR}/50-distro-client.cnf" + + if use server ; then + mycnf_src="my.cnf.distro-server" + sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ + "${FILESDIR}/${mycnf_src}" \ + > "${TMPDIR}/my.cnf.ok" || die + if use prefix ; then + sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \ + "${TMPDIR}/my.cnf.ok" || die + fi + if use latin1 ; then + sed -i \ + -e "/character-set/s|utf8|latin1|g" \ + "${TMPDIR}/my.cnf.ok" || die + fi + eprefixify "${TMPDIR}/my.cnf.ok" + newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf + + einfo "Including support files and sample configurations" + docinto "support-files" + local script + for script in \ + "${S}"/support-files/magic + do + [[ -f "$script" ]] && dodoc "${script}" + done + + docinto "scripts" + for script in "${S}"/scripts/mysql* ; do + [[ ( -f "$script" ) && ( "${script%.sh}" == "${script}" ) ]] && dodoc "${script}" + done + # Manually install supporting files that conflict with other packages + # but are needed for galera and initial installation + exeinto /usr/libexec/mariadb + doexe "${BUILD_DIR}/extra/my_print_defaults" "${BUILD_DIR}/extra/perror" + fi + + #Remove mytop if perl is not selected + [[ -e "${ED}/usr/bin/mytop" ]] && ! use perl && rm -f "${ED}/usr/bin/mytop" +} + +# Official test instructions: +# USE='extraengine perl server' \ +# FEATURES='test userpriv -usersandbox' \ +# ebuild mariadb-X.X.XX.ebuild \ +# digest clean package +src_test() { + + _disable_test() { + local rawtestname reason + rawtestname="${1}" ; shift + reason="${@}" + ewarn "test '${rawtestname}' disabled: '${reason}'" + echo ${rawtestname} : ${reason} >> "${T}/disabled.def" + } + + local TESTDIR="${BUILD_DIR}/mysql-test" + local retstatus_unit + local retstatus_tests + + if ! use server ; then + einfo "Skipping server tests due to minimal build." + return 0 + fi + + # Bug #213475 - MySQL _will_ object strenously if your machine is named + # localhost. Also causes weird failures. + [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" + + if [[ $UID -eq 0 ]]; then + die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." + fi + has usersandbox $FEATURES && ewarn "Some tests may fail with FEATURES=usersandbox" + + einfo ">>> Test phase [test]: ${CATEGORY}/${PF}" + + # Run CTest (test-units) + cmake-utils_src_test + retstatus_unit=$? + + # Ensure that parallel runs don't die + export MTR_BUILD_THREAD="$((${RANDOM} % 100))" + # Enable parallel testing, auto will try to detect number of cores + # You may set this by hand. + # The default maximum is 8 unless MTR_MAX_PARALLEL is increased + export MTR_PARALLEL="${MTR_PARALLEL:-auto}" + + # create directories because mysqladmin might run out of order + mkdir -p "${T}"/var-tests{,/log} || die + + # Run mysql tests + pushd "${TESTDIR}" > /dev/null || die + + touch "${T}/disabled.def" + # These are failing in MariaDB 10.0 for now and are believed to be + # false positives: + # + # main.mysql_client_test, main.mysql_client_test_nonblock + # main.mysql_client_test_comp: + # segfaults at random under Portage only, suspect resource limits. + + local t + for t in plugins.cracklib_password_check plugins.two_password_validations ; do + _disable_test "$t" "False positive due to varying policies" + done + + for t in main.mysql_client_test main.mysql_client_test_nonblock main.mysql \ + main.mysql_client_test_comp rpl.rpl_extra_col_master_myisam ; do + _disable_test "$t" "False positives in Gentoo" + done + + _disable_test main.gis_notembedded "Needs latin1 USE set" + _disable_test main.plugin_auth "Needs client libraries built" + _disable_test plugins.auth_ed25519 "Needs client libraries built" + _disable_test main.mysqldump "Test fails past 2018-12-31 due to event expiration" + + # Likely environment issues as only number of clients connected fails + _disable_test rpl.rpl_semi_sync_uninstall_plugin \ + "Fails intermittently on parallel testing" + + _disable_test main.ssl_crl "Not compatible with OpenSSL 1.1.1" + + # run mysql-test tests + perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test=tokudb --skip-test-list="${T}/disabled.def" + retstatus_tests=$? + + popd > /dev/null || die + + # Cleanup is important for these testcases. + pkill -9 -f "${S}/ndb" 2>/dev/null + pkill -9 -f "${S}/sql" 2>/dev/null + + local failures="" + [[ $retstatus_unit -eq 0 ]] || failures="${failures} test-unit" + [[ $retstatus_tests -eq 0 ]] || failures="${failures} tests" + + [[ -z "$failures" ]] || die "Test failures: $failures" + einfo "Tests successfully completed" +} + +mysql_init_vars() { + MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mariadb"} + MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"} + MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"} + MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"} + + if [[ -z "${MY_DATADIR}" ]] ; then + MY_DATADIR="" + if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then + MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \ + | sed -ne '/datadir/s|^--datadir=||p' \ + | tail -n1` + if [[ -z "${MY_DATADIR}" ]] ; then + MY_DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ + | sed -e 's/.*=\s*//' \ + | tail -n1` + fi + fi + if [[ -z "${MY_DATADIR}" ]] ; then + MY_DATADIR="${MY_LOCALSTATEDIR}" + einfo "Using default MY_DATADIR" + fi + elog "MySQL MY_DATADIR is ${MY_DATADIR}" + + if [[ -z "${PREVIOUS_DATADIR}" ]] ; then + if [[ -e "${MY_DATADIR}" ]] ; then + # If you get this and you're wondering about it, see bug #207636 + elog "MySQL datadir found in ${MY_DATADIR}" + elog "A new one will not be created." + PREVIOUS_DATADIR="yes" + else + PREVIOUS_DATADIR="no" + fi + export PREVIOUS_DATADIR + fi + else + if [[ ${EBUILD_PHASE} == "config" ]]; then + local new_MY_DATADIR + new_MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \ + | sed -ne '/datadir/s|^--datadir=||p' \ + | tail -n1` + + if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then + ewarn "MySQL MY_DATADIR has changed" + ewarn "from ${MY_DATADIR}" + ewarn "to ${new_MY_DATADIR}" + MY_DATADIR="${new_MY_DATADIR}" + fi + fi + fi + + export MY_SHAREDSTATEDIR MY_SYSCONFDIR + export MY_LOCALSTATEDIR MY_LOGDIR + export MY_DATADIR +} + +pkg_config() { + _getoptval() { + local mypd="${EROOT}"usr/libexec/mariadb/my_print_defaults + local section="$1" + local flag="--${2}=" + local extra_options="${3}" + "${mypd}" $extra_options $section | sed -n "/^${flag}/s,${flag},,gp" + } + local old_MY_DATADIR="${MY_DATADIR}" + local old_HOME="${HOME}" + # my_print_defaults needs to read stuff in $HOME/.my.cnf + export HOME=${EPREFIX}/root + + # Make sure the vars are correctly initialized + mysql_init_vars + + [[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR" + if [[ ! -x "${EROOT}/usr/sbin/mysqld" ]] ; then + die "Minimal builds do NOT include the MySQL server" + fi + + if [[ ( -n "${MY_DATADIR}" ) && ( "${MY_DATADIR}" != "${old_MY_DATADIR}" ) ]]; then + local MY_DATADIR_s="${ROOT}/${MY_DATADIR}" + MY_DATADIR_s="${MY_DATADIR_s%%/}" + local old_MY_DATADIR_s="${ROOT}/${old_MY_DATADIR}" + old_MY_DATADIR_s="${old_MY_DATADIR_s%%/}" + + if [[ ( -d "${old_MY_DATADIR_s}" ) && ( "${old_MY_DATADIR_s}" != / ) ]]; then + if [[ -d "${MY_DATADIR_s}" ]]; then + ewarn "Both ${old_MY_DATADIR_s} and ${MY_DATADIR_s} exist" + ewarn "Attempting to use ${MY_DATADIR_s} and preserving ${old_MY_DATADIR_s}" + else + elog "Moving MY_DATADIR from ${old_MY_DATADIR_s} to ${MY_DATADIR_s}" + mv --strip-trailing-slashes -T "${old_MY_DATADIR_s}" "${MY_DATADIR_s}" \ + || die "Moving MY_DATADIR failed" + fi + else + ewarn "Previous MY_DATADIR (${old_MY_DATADIR_s}) does not exist" + if [[ -d "${MY_DATADIR_s}" ]]; then + ewarn "Attempting to use ${MY_DATADIR_s}" + else + eerror "New MY_DATADIR (${MY_DATADIR_s}) does not exist" + die "Configuration Failed! Please reinstall ${CATEGORY}/${PN}" + fi + fi + fi + + local pwd1="a" + local pwd2="b" + local maxtry=15 + + if [ -z "${MYSQL_ROOT_PASSWORD}" ]; then + local tmp_mysqld_password_source= + + for tmp_mysqld_password_source in mysql client; do + einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..." + MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)" + if [[ -n "${MYSQL_ROOT_PASSWORD}" ]]; then + if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]]; then + ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!" + MYSQL_ROOT_PASSWORD= + continue + fi + + einfo "Found password in '${tmp_mysqld_password_source}' section!" + break + fi + done + + # Sometimes --show is required to display passwords in some implementations of my_print_defaults + if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]]; then + MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)" + fi + + unset tmp_mysqld_password_source + fi + MYSQL_TMPDIR="$(_getoptval mysqld tmpdir | tail -n1)" + # These are dir+prefix + MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log | tail -n1)" + MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*} + MYSQL_LOG_BIN="$(_getoptval mysqld log-bin | tail -n1)" + MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*} + + if [[ ! -d "${ROOT}/$MYSQL_TMPDIR" ]]; then + einfo "Creating MySQL tmpdir $MYSQL_TMPDIR" + install -d -m 770 -o mysql -g mysql "${EROOT}/$MYSQL_TMPDIR" + fi + if [[ ! -d "${ROOT}/$MYSQL_LOG_BIN" ]]; then + einfo "Creating MySQL log-bin directory $MYSQL_LOG_BIN" + install -d -m 770 -o mysql -g mysql "${EROOT}/$MYSQL_LOG_BIN" + fi + if [[ ! -d "${EROOT}/$MYSQL_RELAY_LOG" ]]; then + einfo "Creating MySQL relay-log directory $MYSQL_RELAY_LOG" + install -d -m 770 -o mysql -g mysql "${EROOT}/$MYSQL_RELAY_LOG" + fi + + if [[ -d "${ROOT}/${MY_DATADIR}/mysql" ]] ; then + ewarn "You have already a MySQL database in place." + ewarn "(${ROOT}/${MY_DATADIR}/*)" + ewarn "Please rename or delete it if you wish to replace it." + die "MySQL database already exists!" + fi + + # Bug #213475 - MySQL _will_ object strenously if your machine is named + # localhost. Also causes weird failures. + [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" + + if [ -z "${MYSQL_ROOT_PASSWORD}" ]; then + + einfo "Please provide a password for the mysql 'root' user now" + einfo "or through the ${HOME}/.my.cnf file." + ewarn "Avoid [\"'\\_%] characters in the password" + read -rsp " >" pwd1 ; echo + + einfo "Retype the password" + read -rsp " >" pwd2 ; echo + + if [[ "x$pwd1" != "x$pwd2" ]] ; then + die "Passwords are not the same" + fi + MYSQL_ROOT_PASSWORD="${pwd1}" + unset pwd1 pwd2 + fi + + local options + local sqltmp="$(emktemp)" + + # Fix bug 446200. Don't reference host my.cnf, needs to come first, + # see https://bugs.mysql.com/bug.php?id=31312 + use prefix && options="${options} '--defaults-file=${MY_SYSCONFDIR}/my.cnf'" + + # Figure out which options we need to disable to do the setup + local helpfile="${TMPDIR}/mysqld-help" + "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null + for opt in grant-tables host-cache name-resolve networking slave-start \ + federated ssl log-bin relay-log slow-query-log external-locking \ + log-slave-updates \ + ; do + optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}" + egrep -sq -- "${optexp}" "${helpfile}" && options="${options} ${optfull}" + done + + einfo "Creating the mysql database and setting proper permissions on it ..." + + # Now that /var/run is a tmpfs mount point, we need to ensure it exists before using it + PID_DIR="${EROOT}/var/run/mysqld" + if [[ ! -d "${PID_DIR}" ]]; then + install -d -m 755 -o mysql -g mysql "${PID_DIR}" || die "Could not create pid directory" + fi + + if [[ ! -d "${MY_DATADIR}" ]]; then + install -d -m 750 -o mysql -g mysql "${MY_DATADIR}" || die "Could not create data directory" + fi + + pushd "${TMPDIR}" &>/dev/null || die + + # Filling timezones, see + # https://dev.mysql.com/doc/mysql/en/time-zone-support.html + "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null + + local cmd=( "${EROOT}usr/share/mariadb/scripts/mysql_install_db" ) + [[ -f "${cmd}" ]] || cmd=( "${EROOT}usr/bin/mysql_install_db" ) + cmd+=( "--basedir=${EPREFIX}/usr" ${options} "--datadir=${ROOT}/${MY_DATADIR}" "--tmpdir=${ROOT}/${MYSQL_TMPDIR}" ) + einfo "Command: ${cmd[*]}" + su -s /bin/sh -c "${cmd[*]}" mysql \ + >"${TMPDIR}"/mysql_install_db.log 2>&1 + if [ $? -ne 0 ]; then + grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2 + die "Failed to initialize mysqld. Please review ${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log" + fi + popd &>/dev/null || die + [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \ + || die "MySQL databases not installed" + + use prefix || options="${options} --user=mysql" + + local socket="${EROOT}/var/run/mysqld/mysqld${RANDOM}.sock" + local pidfile="${EROOT}/var/run/mysqld/mysqld${RANDOM}.pid" + local mysqld="${EROOT}/usr/sbin/mysqld \ + ${options} \ + --log-warnings=0 \ + --basedir=${EROOT}/usr \ + --datadir=${ROOT}/${MY_DATADIR} \ + --max_allowed_packet=8M \ + --net_buffer_length=16K \ + --socket=${socket} \ + --pid-file=${pidfile} \ + --tmpdir=${ROOT}/${MYSQL_TMPDIR}" + #einfo "About to start mysqld: ${mysqld}" + ebegin "Starting mysqld" + einfo "Command ${mysqld}" + ${mysqld} & + rc=$? + while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do + maxtry=$((${maxtry}-1)) + echo -n "." + sleep 1 + done + eend $rc + + if ! [[ -S "${socket}" ]]; then + die "Completely failed to start up mysqld with: ${mysqld}" + fi + + ebegin "Setting root password" + # Do this from memory, as we don't want clear text passwords in temp files + local sql="UPDATE mysql.user SET Password = PASSWORD('${MYSQL_ROOT_PASSWORD}') WHERE USER='root'; FLUSH PRIVILEGES" + "${EROOT}/usr/bin/mysql" \ + "--socket=${socket}" \ + -hlocalhost \ + -e "${sql}" + eend $? + + if [[ -n "${sqltmp}" ]] ; then + ebegin "Loading \"zoneinfo\", this step may require a few seconds" + "${EROOT}/usr/bin/mysql" \ + "--socket=${socket}" \ + -hlocalhost \ + -uroot \ + --password="${MYSQL_ROOT_PASSWORD}" \ + mysql < "${sqltmp}" + rc=$? + eend $? + [[ $rc -ne 0 ]] && ewarn "Failed to load zoneinfo!" + fi + + # Stop the server and cleanup + einfo "Stopping the server ..." + kill $(< "${pidfile}" ) + rm -f "${sqltmp}" + wait %1 + einfo "Done" +} diff --git a/dev-db/mariadb/mariadb-10.3.20.ebuild b/dev-db/mariadb/mariadb-10.3.20.ebuild new file mode 100644 index 000000000000..35694b80036f --- /dev/null +++ b/dev-db/mariadb/mariadb-10.3.20.ebuild @@ -0,0 +1,982 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="6" +MY_EXTRAS_VER="20190305-2052Z" +SUBSLOT="18" + +JAVA_PKG_OPT_USE="jdbc" + +# Keeping eutils in EAPI=6 for emktemp in pkg_config + +inherit eutils systemd flag-o-matic prefix toolchain-funcs \ + java-pkg-opt-2 user cmake-utils + +SRC_URI="https://downloads.mariadb.org/interstitial/${P}/source/${P}.tar.gz " + +# Gentoo patches to MySQL +if [[ "${MY_EXTRAS_VER}" != "live" && "${MY_EXTRAS_VER}" != "none" ]]; then + SRC_URI="${SRC_URI} + mirror://gentoo/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 + https://gitweb.gentoo.org/proj/mysql-extras.git/snapshot/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 + https://dev.gentoo.org/~grknight/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 + https://dev.gentoo.org/~robbat2/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 + https://dev.gentoo.org/~jmbsvicetto/distfiles/mysql-extras-${MY_EXTRAS_VER}.tar.bz2" +fi + +HOMEPAGE="https://mariadb.org/" +DESCRIPTION="An enhanced, drop-in replacement for MySQL" +LICENSE="GPL-2 LGPL-2.1+" +SLOT="0/${SUBSLOT:-0}" +IUSE="+backup bindist client-libs cracklib debug extraengine galera innodb-lz4 + innodb-lzo innodb-snappy jdbc jemalloc kerberos latin1 libressl mroonga + numa odbc oqgraph pam +perl profiling rocksdb selinux +server sphinx + sst-rsync sst-mariabackup static systemd systemtap tcmalloc + test tokudb xml yassl" + +# Tests always fail when libressl is enabled due to hard-coded ciphers in the tests +RESTRICT="!bindist? ( bindist ) libressl? ( test ) !test? ( test )" + +REQUIRED_USE="jdbc? ( extraengine server !static ) + server? ( tokudb? ( jemalloc !tcmalloc ) ) + ?? ( tcmalloc jemalloc ) + static? ( yassl !pam )" + +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~x64-solaris ~x86-solaris" + +# Shorten the path because the socket path length must be shorter than 107 chars +# and we will run a mysql server during test phase +S="${WORKDIR}/mysql" + +if [[ "${MY_EXTRAS_VER}" == "live" ]] ; then + inherit git-r3 + EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/mysql-extras.git" + EGIT_CHECKOUT_DIR="${WORKDIR%/}/mysql-extras" + EGIT_CLONE_TYPE=shallow + MY_PATCH_DIR="${WORKDIR%/}/mysql-extras" +else + MY_PATCH_DIR="${WORKDIR%/}/mysql-extras-${MY_EXTRAS_VER}" +fi + +PATCHES=( + "${MY_PATCH_DIR}"/20015_all_mariadb-pkgconfig-location.patch + "${MY_PATCH_DIR}"/20018_all_mariadb-10.3.12-without-clientlibs-tools.patch + "${MY_PATCH_DIR}"/20024_all_mariadb-10.2.6-mysql_st-regression.patch + "${MY_PATCH_DIR}"/20025_all_mariadb-10.2.6-gssapi-detect.patch + "${MY_PATCH_DIR}"/20035_all_mariadb-10.3-atomic-detection.patch +) + +# Be warned, *DEPEND are version-dependant +# These are used for both runtime and compiletime +COMMON_DEPEND=" + kernel_linux? ( + sys-process/procps:0= + dev-libs/libaio:0= + ) + >=sys-apps/sed-4 + >=sys-apps/texinfo-4.7-r1 + jemalloc? ( dev-libs/jemalloc:0= ) + tcmalloc? ( dev-util/google-perftools:0= ) + systemtap? ( >=dev-util/systemtap-1.3:0= ) + >=sys-libs/zlib-1.2.3:0= + kerberos? ( virtual/krb5 ) + yassl? ( net-libs/gnutls:0= ) + !yassl? ( + !libressl? ( >=dev-libs/openssl-1.0.0:0= ) + libressl? ( dev-libs/libressl:0= ) + ) + sys-libs/ncurses:0= + !bindist? ( + sys-libs/binutils-libs:0= + >=sys-libs/readline-4.1:0= + ) + server? ( + backup? ( app-arch/libarchive:0= ) + cracklib? ( sys-libs/cracklib:0= ) + extraengine? ( + odbc? ( dev-db/unixODBC:0= ) + xml? ( dev-libs/libxml2:2= ) + ) + innodb-lz4? ( app-arch/lz4 ) + innodb-lzo? ( dev-libs/lzo ) + innodb-snappy? ( app-arch/snappy ) + mroonga? ( app-text/groonga-normalizer-mysql >=app-text/groonga-7.0.4 ) + numa? ( sys-process/numactl ) + oqgraph? ( >=dev-libs/boost-1.40.0:0= dev-libs/judy:0= ) + pam? ( sys-libs/pam:0= ) + systemd? ( sys-apps/systemd:= ) + tokudb? ( app-arch/snappy ) + ) + >=dev-libs/libpcre-8.41-r1:3= +" +DEPEND="virtual/yacc + static? ( sys-libs/ncurses[static-libs] ) + || ( >=sys-devel/gcc-3.4.6 >=sys-devel/gcc-apple-4.0 ) + server? ( extraengine? ( jdbc? ( >=virtual/jdk-1.6 ) ) ) + ${COMMON_DEPEND}" +RDEPEND="selinux? ( sec-policy/selinux-mysql ) + !dev-db/mysql !dev-db/mariadb-galera !dev-db/percona-server !dev-db/mysql-cluster + server? ( !prefix? ( dev-db/mysql-init-scripts ) ) + !<virtual/mysql-5.6-r11 + ${COMMON_DEPEND} + server? ( galera? ( + sys-apps/iproute2 + =sys-cluster/galera-25* + sst-rsync? ( sys-process/lsof ) + sst-mariabackup? ( net-misc/socat[ssl] ) + ) ) + perl? ( !dev-db/mytop + virtual/perl-Getopt-Long + dev-perl/TermReadKey + virtual/perl-Term-ANSIColor + virtual/perl-Time-HiRes ) + server? ( extraengine? ( jdbc? ( >=virtual/jre-1.6 ) ) ) +" +# For other stuff to bring us in +# dev-perl/DBD-mysql is needed by some scripts installed by MySQL +PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 ) + server? ( ~virtual/mysql-5.6[static=] )" + +pkg_setup() { + if [[ ${MERGE_TYPE} != binary ]] ; then + local GCC_MAJOR_SET=$(gcc-major-version) + local GCC_MINOR_SET=$(gcc-minor-version) + if use tokudb && [[ ${GCC_MAJOR_SET} -lt 4 || \ + ${GCC_MAJOR_SET} -eq 4 && ${GCC_MINOR_SET} -lt 7 ]] ; then + eerror "${PN} with tokudb needs to be built with gcc-4.7 or later." + eerror "Please use gcc-config to switch to gcc-4.7 or later version." + die + fi + # Bug 565584. InnoDB now requires atomic functions introduced with gcc-4.7 on + # non x86{,_64} arches + if ! use amd64 && ! use x86 && [[ ${GCC_MAJOR_SET} -lt 4 || \ + ${GCC_MAJOR_SET} -eq 4 && ${GCC_MINOR_SET} -lt 7 ]] ; then + eerror "${PN} needs to be built with gcc-4.7 or later." + eerror "Please use gcc-config to switch to gcc-4.7 or later version." + die + fi + fi + java-pkg-opt-2_pkg_setup + if has test ${FEATURES} && \ + use server && ! has userpriv ${FEATURES} ; then + eerror "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." + fi + + # This should come after all of the die statements + enewgroup mysql 60 || die "problem adding 'mysql' group" + enewuser mysql 60 -1 /dev/null mysql || die "problem adding 'mysql' user" +} + +pkg_preinst() { + java-pkg-opt-2_pkg_preinst + + # Here we need to see if the implementation switched client libraries + # We check if this is a new instance of the package and a client library already exists + local SHOW_ABI_MESSAGE libpath + if [[ -z ${REPLACING_VERSIONS} && -e "${EROOT}usr/$(get_libdir)/libmysqlclient.so" ]] ; then + libpath=$(readlink "${EROOT}usr/$(get_libdir)/libmysqlclient.so") + elog "Due to ABI changes when switching between different client libraries," + elog "revdep-rebuild must find and rebuild all packages linking to libmysqlclient." + elog "Please run: revdep-rebuild --library ${libpath}" + ewarn "Failure to run revdep-rebuild may cause issues with other programs or libraries" + fi +} + +pkg_postinst() { + # Make sure the vars are correctly initialized + mysql_init_vars + + # Create log directory securely if it does not exist + [[ -d "${ROOT}${MY_LOGDIR}" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" + + if use server ; then + if use pam; then + einfo + elog "This install includes the PAM authentication plugin." + elog "To activate and configure the PAM plugin, please read:" + elog "https://mariadb.com/kb/en/mariadb/pam-authentication-plugin/" + einfo + fi + + if [[ -z "${REPLACING_VERSIONS}" ]] ; then + einfo + elog "You might want to run:" + elog "\"emerge --config =${CATEGORY}/${PF}\"" + elog "if this is a new install." + elog + elog "If you are switching server implentations, you should run the" + elog "mysql_upgrade tool." + einfo + else + einfo + elog "If you are upgrading major versions, you should run the" + elog "mysql_upgrade tool." + einfo + fi + + if use galera ; then + einfo + elog "Be sure to edit the my.cnf file to activate your cluster settings." + elog "This should be done after running \"emerge --config =${CATEGORY}/${PF}\"" + elog "The first time the cluster is activated, you should add" + elog "--wsrep-new-cluster to the options in /etc/conf.d/mysql for one node." + elog "This option should then be removed for subsequent starts." + einfo + fi + fi + + # Note about configuration change + einfo + elog "This version of mariadb reorganizes the configuration from a single my.cnf" + elog "to several files in /etc/mysql/${PN}.d." + elog "Please backup any changes you made to /etc/mysql/my.cnf" + elog "and add them as a new file under /etc/mysql/${PN}.d with a .cnf extension." + elog "You may have as many files as needed and they are read alphabetically." + elog "Be sure the options have the appropriate section headers, i.e. [mysqld]." + einfo +} + +src_unpack() { + unpack ${A} + # Grab the patches + [[ "${MY_EXTRAS_VER}" == "live" ]] && S="${WORKDIR}/mysql-extras" git-r3_src_unpack + + mv -f "${WORKDIR}/${P/_rc/}" "${S}" || die +} + +src_prepare() { + _disable_plugin() { + echo > "${S%/}/plugin/${1}/CMakeLists.txt" || die + } + _disable_engine() { + echo > "${S%/}/storage/${1}/CMakeLists.txt" || die + } + + if use jemalloc; then + echo "TARGET_LINK_LIBRARIES(mysqld jemalloc)" >> "${S}/sql/CMakeLists.txt" + elif use tcmalloc; then + echo "TARGET_LINK_LIBRARIES(mysqld tcmalloc)" >> "${S}/sql/CMakeLists.txt" + fi + + # Don't build bundled xz-utils for tokudb + echo > "${S}/storage/tokudb/PerconaFT/cmake_modules/TokuThirdParty.cmake" || die + sed -i -e 's/ build_lzma//' -e 's/ build_snappy//' "${S}/storage/tokudb/PerconaFT/ft/CMakeLists.txt" || die + sed -i -e 's/add_dependencies\(tokuportability_static_conv build_jemalloc\)//' "${S}/storage/tokudb/PerconaFT/portability/CMakeLists.txt" || die + + local plugin + local server_plugins=( handler_socket auth_socket feedback metadata_lock_info + locale_info qc_info server_audit sql_errlog auth_ed25519 ) + local test_plugins=( audit_null auth_examples daemon_example fulltext + debug_key_management example_key_management versioning ) + if ! use server; then # These plugins are for the server + for plugin in "${server_plugins[@]}" ; do + _disable_plugin "${plugin}" + done + fi + + if ! use test; then # These plugins are only used during testing + for plugin in "${test_plugins[@]}" ; do + _disable_plugin "${plugin}" + done + _disable_engine test_sql_discovery + fi + + _disable_engine example + + if ! use oqgraph ; then # avoids extra library checks + _disable_engine oqgraph + fi + + if use mroonga ; then + # Remove the bundled groonga + # There is no CMake flag, it simply checks for existance + rm -r "${S}"/storage/mroonga/vendor/groonga || die "could not remove packaged groonga" + else + _disable_engine mroonga + fi + + # Don't clash with dev-db/mysql-connector-c + sed -i -e 's/ my_print_defaults.1//' \ + -e 's/ perror.1//' \ + "${S}"/man/CMakeLists.txt || die + + cmake-utils_src_prepare + java-pkg-opt-2_src_prepare +} + +src_configure(){ + # bug 508724 mariadb cannot use ld.gold + tc-ld-disable-gold + # Bug #114895, bug #110149 + filter-flags "-O" "-O[01]" + + append-cxxflags -felide-constructors + + # bug #283926, with GCC4.4, this is required to get correct behavior. + append-flags -fno-strict-aliasing + + CMAKE_BUILD_TYPE="RelWithDebInfo" + + # debug hack wrt #497532 + mycmakeargs=( + -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')" + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(usex debug '' '-DNDEBUG')" + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr" + -DMYSQL_DATADIR="${EPREFIX}/var/lib/mysql" + -DSYSCONFDIR="${EPREFIX}/etc/mysql" + -DINSTALL_BINDIR=bin + -DINSTALL_DOCDIR=share/doc/${PF} + -DINSTALL_DOCREADMEDIR=share/doc/${PF} + -DINSTALL_INCLUDEDIR=include/mysql + -DINSTALL_INFODIR=share/info + -DINSTALL_LIBDIR=$(get_libdir) + -DINSTALL_MANDIR=share/man + -DINSTALL_MYSQLSHAREDIR=share/mariadb + -DINSTALL_PLUGINDIR=$(get_libdir)/mariadb/plugin + -DINSTALL_SCRIPTDIR=share/mariadb/scripts + -DINSTALL_MYSQLDATADIR="${EPREFIX}/var/lib/mysql" + -DINSTALL_SBINDIR=sbin + -DINSTALL_SUPPORTFILESDIR="${EPREFIX}/usr/share/mariadb" + -DWITH_COMMENT="Gentoo Linux ${PF}" + -DWITH_UNIT_TESTS=$(usex test ON OFF) + -DWITH_LIBEDIT=0 + -DWITH_ZLIB=system + -DWITHOUT_LIBWRAP=1 + -DENABLED_LOCAL_INFILE=1 + -DMYSQL_UNIX_ADDR="${EPREFIX}/var/run/mysqld/mysqld.sock" + -DINSTALL_UNIX_ADDRDIR="${EPREFIX}/var/run/mysqld/mysqld.sock" + -DWITH_DEFAULT_COMPILER_OPTIONS=0 + -DWITH_DEFAULT_FEATURE_SET=0 + -DINSTALL_SYSTEMD_UNITDIR="$(systemd_get_systemunitdir)" + # The build forces this to be defined when cross-compiling. We pass it + # all the time for simplicity and to make sure it is actually correct. + -DSTACK_DIRECTION=$(tc-stack-grows-down && echo -1 || echo 1) + -DPKG_CONFIG_EXECUTABLE="${EPREFIX}/usr/bin/$(tc-getPKG_CONFIG)" + -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO) + -DAUTH_GSSAPI_PLUGIN_TYPE=$(usex kerberos DYNAMIC OFF) + -DCONC_WITH_EXTERNAL_ZLIB=YES + -DWITH_EXTERNAL_ZLIB=YES + -DSUFFIX_INSTALL_DIR="" + -DWITH_UNITTEST=OFF + -DWITHOUT_CLIENTLIBS=YES + -DCLIENT_PLUGIN_DIALOG=OFF + -DCLIENT_PLUGIN_AUTH_GSSAPI_CLIENT=OFF + -DCLIENT_PLUGIN_CLIENT_ED25519=OFF + -DCLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD=STATIC + -DCLIENT_PLUGIN_CACHING_SHA2_PASSWORD=OFF + ) + if use test ; then + mycmakeargs+=( -DINSTALL_MYSQLTESTDIR=share/mariadb/mysql-test ) + else + mycmakeargs+=( -DINSTALL_MYSQLTESTDIR='' ) + fi + + if ! use yassl ; then + mycmakeargs+=( -DWITH_SSL=system -DCLIENT_PLUGIN_SHA256_PASSWORD=STATIC ) + else + mycmakeargs+=( -DWITH_SSL=bundled ) + fi + + # bfd.h is only used starting with 10.1 and can be controlled by NOT_FOR_DISTRIBUTION + mycmakeargs+=( + -DWITH_READLINE=$(usex bindist 1 0) + -DNOT_FOR_DISTRIBUTION=$(usex bindist 0 1) + -DENABLE_DTRACE=$(usex systemtap) + ) + + if use server ; then + + # Federated{,X} must be treated special otherwise they will not be built as plugins + if ! use extraengine ; then + mycmakeargs+=( + -DPLUGIN_FEDERATED=NO + -DPLUGIN_FEDERATEDX=NO ) + fi + + mycmakeargs+=( + -DWITH_PCRE=system + -DPLUGIN_OQGRAPH=$(usex oqgraph DYNAMIC NO) + -DPLUGIN_SPHINX=$(usex sphinx YES NO) + -DPLUGIN_TOKUDB=$(usex tokudb YES NO) + -DPLUGIN_AUTH_PAM=$(usex pam YES NO) + -DPLUGIN_CRACKLIB_PASSWORD_CHECK=$(usex cracklib YES NO) + -DPLUGIN_CASSANDRA=NO + -DPLUGIN_SEQUENCE=$(usex extraengine YES NO) + -DPLUGIN_SPIDER=$(usex extraengine YES NO) + -DPLUGIN_CONNECT=$(usex extraengine YES NO) + -DCONNECT_WITH_MYSQL=1 + -DCONNECT_WITH_LIBXML2=$(usex xml) + -DCONNECT_WITH_ODBC=$(usex odbc) + -DCONNECT_WITH_JDBC=$(usex jdbc) + # Build failure and autodep wrt bug 639144 + -DCONNECT_WITH_MONGO=OFF + -DWITH_WSREP=$(usex galera) + -DWITH_INNODB_LZ4=$(usex innodb-lz4 ON OFF) + -DWITH_INNODB_LZO=$(usex innodb-lzo ON OFF) + -DWITH_INNODB_SNAPPY=$(usex innodb-snappy ON OFF) + -DPLUGIN_MROONGA=$(usex mroonga DYNAMIC NO) + -DPLUGIN_AUTH_GSSAPI=$(usex kerberos DYNAMIC NO) + -DWITH_MARIABACKUP=$(usex backup ON OFF) + -DWITH_LIBARCHIVE=$(usex backup ON OFF) + -DINSTALL_SQLBENCHDIR="" + -DPLUGIN_ROCKSDB=$(usex rocksdb DYNAMIC NO) + # systemd is only linked to for server notification + -DWITH_SYSTEMD=$(usex systemd yes no) + -DWITH_NUMA=$(usex numa ON OFF) + ) + + # Workaround for MDEV-14524 + use tokudb && mycmakeargs+=( -DTOKUDB_OK=1 ) + + if use test ; then + # This is needed for the new client lib which tests a real, open server + mycmakeargs+=( -DSKIP_TESTS=ON ) + fi + + if [[ ( -n ${MYSQL_DEFAULT_CHARSET} ) && ( -n ${MYSQL_DEFAULT_COLLATION} ) ]]; then + ewarn "You are using a custom charset of ${MYSQL_DEFAULT_CHARSET}" + ewarn "and a collation of ${MYSQL_DEFAULT_COLLATION}." + ewarn "You MUST file bugs without these variables set." + + mycmakeargs+=( + -DDEFAULT_CHARSET=${MYSQL_DEFAULT_CHARSET} + -DDEFAULT_COLLATION=${MYSQL_DEFAULT_COLLATION} + ) + + elif ! use latin1 ; then + mycmakeargs+=( + -DDEFAULT_CHARSET=utf8 + -DDEFAULT_COLLATION=utf8_general_ci + ) + else + mycmakeargs+=( + -DDEFAULT_CHARSET=latin1 + -DDEFAULT_COLLATION=latin1_swedish_ci + ) + fi + mycmakeargs+=( + -DEXTRA_CHARSETS=all + -DMYSQL_USER=mysql + -DDISABLE_SHARED=$(usex static YES NO) + -DWITH_DEBUG=$(usex debug) + -DWITH_EMBEDDED_SERVER=OFF + -DWITH_PROFILING=$(usex profiling) + ) + + if use static; then + mycmakeargs+=( -DWITH_PIC=1 ) + fi + + if use jemalloc || use tcmalloc ; then + mycmakeargs+=( -DWITH_SAFEMALLOC=OFF ) + fi + + # Storage engines + mycmakeargs+=( + -DWITH_ARCHIVE_STORAGE_ENGINE=1 + -DWITH_BLACKHOLE_STORAGE_ENGINE=1 + -DWITH_CSV_STORAGE_ENGINE=1 + -DWITH_HEAP_STORAGE_ENGINE=1 + -DWITH_INNOBASE_STORAGE_ENGINE=1 + -DWITH_MYISAMMRG_STORAGE_ENGINE=1 + -DWITH_MYISAM_STORAGE_ENGINE=1 + -DWITH_PARTITION_STORAGE_ENGINE=1 + ) + + else + mycmakeargs+=( + -DWITHOUT_SERVER=1 + -DWITH_EMBEDDED_SERVER=OFF + -DEXTRA_CHARSETS=none + -DINSTALL_SQLBENCHDIR= + -DWITH_SYSTEMD=no + ) + fi + + cmake-utils_src_configure +} + +src_compile() { + cmake-utils_src_compile +} + +src_install() { + cmake-utils_src_install + + # Remove an unnecessary, private config header which will never match between ABIs and is not meant to be used + if [[ -f "${ED}/usr/include/mysql/server/private/config.h" ]] ; then + rm "${ED}/usr/include/mysql/server/private/config.h" || die + fi + + # Make sure the vars are correctly initialized + mysql_init_vars + + # Convenience links + einfo "Making Convenience links for mysqlcheck multi-call binary" + dosym "mysqlcheck" "/usr/bin/mysqlanalyze" + dosym "mysqlcheck" "/usr/bin/mysqlrepair" + dosym "mysqlcheck" "/usr/bin/mysqloptimize" + + # INSTALL_LAYOUT=STANDALONE causes cmake to create a /usr/data dir + if [[ -d "${ED}/usr/data" ]] ; then + rm -Rf "${ED}/usr/data" || die + fi + + # Unless they explicitly specific USE=test, then do not install the + # testsuite. It DOES have a use to be installed, esp. when you want to do a + # validation of your database configuration after tuning it. + if ! use test ; then + rm -rf "${D}/${MY_SHAREDSTATEDIR}/mysql-test" + fi + + # Configuration stuff + einfo "Building default configuration ..." + insinto "${MY_SYSCONFDIR#${EPREFIX}}" + [[ -f "${S}/scripts/mysqlaccess.conf" ]] && doins "${S}"/scripts/mysqlaccess.conf + cp "${FILESDIR}/my.cnf-10.2" "${TMPDIR}/my.cnf" || die + eprefixify "${TMPDIR}/my.cnf" + doins "${TMPDIR}/my.cnf" + insinto "${MY_SYSCONFDIR#${EPREFIX}}/mariadb.d" + cp "${FILESDIR}/my.cnf.distro-client" "${TMPDIR}/50-distro-client.cnf" || die + eprefixify "${TMPDIR}/50-distro-client.cnf" + doins "${TMPDIR}/50-distro-client.cnf" + + if use server ; then + mycnf_src="my.cnf.distro-server" + sed -e "s!@DATADIR@!${MY_DATADIR}!g" \ + "${FILESDIR}/${mycnf_src}" \ + > "${TMPDIR}/my.cnf.ok" || die + if use prefix ; then + sed -i -r -e '/^user[[:space:]]*=[[:space:]]*mysql$/d' \ + "${TMPDIR}/my.cnf.ok" || die + fi + if use latin1 ; then + sed -i \ + -e "/character-set/s|utf8|latin1|g" \ + "${TMPDIR}/my.cnf.ok" || die + fi + eprefixify "${TMPDIR}/my.cnf.ok" + newins "${TMPDIR}/my.cnf.ok" 50-distro-server.cnf + + einfo "Including support files and sample configurations" + docinto "support-files" + local script + for script in \ + "${S}"/support-files/magic + do + [[ -f "$script" ]] && dodoc "${script}" + done + + docinto "scripts" + for script in "${S}"/scripts/mysql* ; do + [[ ( -f "$script" ) && ( "${script%.sh}" == "${script}" ) ]] && dodoc "${script}" + done + # Manually install supporting files that conflict with other packages + # but are needed for galera and initial installation + exeinto /usr/libexec/mariadb + doexe "${BUILD_DIR}/extra/my_print_defaults" "${BUILD_DIR}/extra/perror" + fi + + # Remove mytop if perl is not selected + if [[ -e "${ED}/usr/bin/mytop" ]] && ! use perl ; then + rm -f "${ED}/usr/bin/mytop" || die + fi + + # Fix a dangling symlink when galera is not built + if [[ -L "${ED}/usr/bin/wsrep_sst_rsync_wan" ]] && ! use galera ; then + rm "${ED}/usr/bin/wsrep_sst_rsync_wan" || die + fi + + # Remove broken SST scripts that are incompatible + local scriptremove + for scriptremove in wsrep_sst_xtrabackup wsrep_sst_xtrabackup-v2 ; do + if [[ -e "${ED}/usr/bin/${scriptremove}" ]] ; then + rm "${ED}/usr/bin/${scriptremove}" || die + fi + done +} + +# Official test instructions: +# USE='extraengine perl server' \ +# FEATURES='test userpriv -usersandbox' \ +# ebuild mariadb-X.X.XX.ebuild \ +# digest clean package +src_test() { + + _disable_test() { + local rawtestname reason + rawtestname="${1}" ; shift + reason="${@}" + ewarn "test '${rawtestname}' disabled: '${reason}'" + echo ${rawtestname} : ${reason} >> "${T}/disabled.def" + } + + local TESTDIR="${BUILD_DIR}/mysql-test" + local retstatus_unit + local retstatus_tests + + if ! use server ; then + einfo "Skipping server tests due to minimal build." + return 0 + fi + + # Bug #213475 - MySQL _will_ object strenously if your machine is named + # localhost. Also causes weird failures. + [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" + + if [[ $UID -eq 0 ]]; then + die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root." + fi + has usersandbox $FEATURES && ewarn "Some tests may fail with FEATURES=usersandbox" + + einfo ">>> Test phase [test]: ${CATEGORY}/${PF}" + + # Run CTest (test-units) + cmake-utils_src_test + retstatus_unit=$? + + # Ensure that parallel runs don't die + export MTR_BUILD_THREAD="$((${RANDOM} % 100))" + # Enable parallel testing, auto will try to detect number of cores + # You may set this by hand. + # The default maximum is 8 unless MTR_MAX_PARALLEL is increased + export MTR_PARALLEL="${MTR_PARALLEL:-auto}" + + # create directories because mysqladmin might run out of order + mkdir -p "${T}"/var-tests{,/log} || die + + # Run mysql tests + pushd "${TESTDIR}" > /dev/null || die + + touch "${T}/disabled.def" + # These are failing in MariaDB 10.0 for now and are believed to be + # false positives: + # + # main.mysql_client_test, main.mysql_client_test_nonblock + # main.mysql_client_test_comp: + # segfaults at random under Portage only, suspect resource limits. + + local t + for t in plugins.cracklib_password_check plugins.two_password_validations ; do + _disable_test "$t" "False positive due to varying policies" + done + + for t in main.mysql_client_test main.mysql_client_test_nonblock \ + main.mysql main.gis_notembedded \ + main.mysql_client_test_comp rpl.rpl_extra_col_master_myisam ; do + _disable_test "$t" "False positives in Gentoo" + done + + _disable_test main.plugin_auth "Needs client libraries built" + _disable_test plugins.auth_ed25519 "Needs client libraries built" + + _disable_test main.func_time "Dependent on time test was written" + _disable_test main.ssl_crl "Not compatible with OpenSSL 1.1.1" + + # run mysql-test tests + perl mysql-test-run.pl --force --vardir="${T}/var-tests" --reorder --skip-test=tokudb --skip-test-list="${T}/disabled.def" + retstatus_tests=$? + + popd > /dev/null || die + + # Cleanup is important for these testcases. + pkill -9 -f "${S}/ndb" 2>/dev/null + pkill -9 -f "${S}/sql" 2>/dev/null + + local failures="" + [[ $retstatus_unit -eq 0 ]] || failures="${failures} test-unit" + [[ $retstatus_tests -eq 0 ]] || failures="${failures} tests" + + [[ -z "$failures" ]] || die "Test failures: $failures" + einfo "Tests successfully completed" +} + +mysql_init_vars() { + MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="${EPREFIX}/usr/share/mariadb"} + MY_SYSCONFDIR=${MY_SYSCONFDIR="${EPREFIX}/etc/mysql"} + MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="${EPREFIX}/var/lib/mysql"} + MY_LOGDIR=${MY_LOGDIR="${EPREFIX}/var/log/mysql"} + + if [[ -z "${MY_DATADIR}" ]] ; then + MY_DATADIR="" + if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then + MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \ + | sed -ne '/datadir/s|^--datadir=||p' \ + | tail -n1` + if [[ -z "${MY_DATADIR}" ]] ; then + MY_DATADIR=`grep ^datadir "${MY_SYSCONFDIR}/my.cnf" \ + | sed -e 's/.*=\s*//' \ + | tail -n1` + fi + fi + if [[ -z "${MY_DATADIR}" ]] ; then + MY_DATADIR="${MY_LOCALSTATEDIR}" + einfo "Using default MY_DATADIR" + fi + elog "MySQL MY_DATADIR is ${MY_DATADIR}" + + if [[ -z "${PREVIOUS_DATADIR}" ]] ; then + if [[ -e "${MY_DATADIR}" ]] ; then + # If you get this and you're wondering about it, see bug #207636 + elog "MySQL datadir found in ${MY_DATADIR}" + elog "A new one will not be created." + PREVIOUS_DATADIR="yes" + else + PREVIOUS_DATADIR="no" + fi + export PREVIOUS_DATADIR + fi + else + if [[ ${EBUILD_PHASE} == "config" ]]; then + local new_MY_DATADIR + new_MY_DATADIR=`"my_print_defaults" mysqld 2>/dev/null \ + | sed -ne '/datadir/s|^--datadir=||p' \ + | tail -n1` + + if [[ ( -n "${new_MY_DATADIR}" ) && ( "${new_MY_DATADIR}" != "${MY_DATADIR}" ) ]]; then + ewarn "MySQL MY_DATADIR has changed" + ewarn "from ${MY_DATADIR}" + ewarn "to ${new_MY_DATADIR}" + MY_DATADIR="${new_MY_DATADIR}" + fi + fi + fi + + export MY_SHAREDSTATEDIR MY_SYSCONFDIR + export MY_LOCALSTATEDIR MY_LOGDIR + export MY_DATADIR +} + +pkg_config() { + _getoptval() { + local mypd="${EROOT}"usr/libexec/mariadb/my_print_defaults + local section="$1" + local flag="--${2}=" + local extra_options="${3}" + "${mypd}" $extra_options $section | sed -n "/^${flag}/s,${flag},,gp" + } + local old_MY_DATADIR="${MY_DATADIR}" + local old_HOME="${HOME}" + # my_print_defaults needs to read stuff in $HOME/.my.cnf + export HOME=${EPREFIX}/root + + # Make sure the vars are correctly initialized + mysql_init_vars + + [[ -z "${MY_DATADIR}" ]] && die "Sorry, unable to find MY_DATADIR" + if [[ ! -x "${EROOT}/usr/sbin/mysqld" ]] ; then + die "Minimal builds do NOT include the MySQL server" + fi + + if [[ ( -n "${MY_DATADIR}" ) && ( "${MY_DATADIR}" != "${old_MY_DATADIR}" ) ]]; then + local MY_DATADIR_s="${ROOT}/${MY_DATADIR}" + MY_DATADIR_s="${MY_DATADIR_s%%/}" + local old_MY_DATADIR_s="${ROOT}/${old_MY_DATADIR}" + old_MY_DATADIR_s="${old_MY_DATADIR_s%%/}" + + if [[ ( -d "${old_MY_DATADIR_s}" ) && ( "${old_MY_DATADIR_s}" != / ) ]]; then + if [[ -d "${MY_DATADIR_s}" ]]; then + ewarn "Both ${old_MY_DATADIR_s} and ${MY_DATADIR_s} exist" + ewarn "Attempting to use ${MY_DATADIR_s} and preserving ${old_MY_DATADIR_s}" + else + elog "Moving MY_DATADIR from ${old_MY_DATADIR_s} to ${MY_DATADIR_s}" + mv --strip-trailing-slashes -T "${old_MY_DATADIR_s}" "${MY_DATADIR_s}" \ + || die "Moving MY_DATADIR failed" + fi + else + ewarn "Previous MY_DATADIR (${old_MY_DATADIR_s}) does not exist" + if [[ -d "${MY_DATADIR_s}" ]]; then + ewarn "Attempting to use ${MY_DATADIR_s}" + else + eerror "New MY_DATADIR (${MY_DATADIR_s}) does not exist" + die "Configuration Failed! Please reinstall ${CATEGORY}/${PN}" + fi + fi + fi + + local pwd1="a" + local pwd2="b" + local maxtry=15 + + if [ -z "${MYSQL_ROOT_PASSWORD}" ]; then + local tmp_mysqld_password_source= + + for tmp_mysqld_password_source in mysql client; do + einfo "Trying to get password for mysql 'root' user from '${tmp_mysqld_password_source}' section ..." + MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password)" + if [[ -n "${MYSQL_ROOT_PASSWORD}" ]]; then + if [[ ${MYSQL_ROOT_PASSWORD} == *$'\n'* ]]; then + ewarn "Ignoring password from '${tmp_mysqld_password_source}' section due to newline character (do you have multiple password options set?)!" + MYSQL_ROOT_PASSWORD= + continue + fi + + einfo "Found password in '${tmp_mysqld_password_source}' section!" + break + fi + done + + # Sometimes --show is required to display passwords in some implementations of my_print_defaults + if [[ "${MYSQL_ROOT_PASSWORD}" == '*****' ]]; then + MYSQL_ROOT_PASSWORD="$(_getoptval "${tmp_mysqld_password_source}" password --show)" + fi + + unset tmp_mysqld_password_source + fi + MYSQL_TMPDIR="$(_getoptval mysqld tmpdir | tail -n1)" + # These are dir+prefix + MYSQL_RELAY_LOG="$(_getoptval mysqld relay-log | tail -n1)" + MYSQL_RELAY_LOG=${MYSQL_RELAY_LOG%/*} + MYSQL_LOG_BIN="$(_getoptval mysqld log-bin | tail -n1)" + MYSQL_LOG_BIN=${MYSQL_LOG_BIN%/*} + + if [[ ! -d "${ROOT}/$MYSQL_TMPDIR" ]]; then + einfo "Creating MySQL tmpdir $MYSQL_TMPDIR" + install -d -m 770 -o mysql -g mysql "${EROOT}/$MYSQL_TMPDIR" + fi + if [[ ! -d "${ROOT}/$MYSQL_LOG_BIN" ]]; then + einfo "Creating MySQL log-bin directory $MYSQL_LOG_BIN" + install -d -m 770 -o mysql -g mysql "${EROOT}/$MYSQL_LOG_BIN" + fi + if [[ ! -d "${EROOT}/$MYSQL_RELAY_LOG" ]]; then + einfo "Creating MySQL relay-log directory $MYSQL_RELAY_LOG" + install -d -m 770 -o mysql -g mysql "${EROOT}/$MYSQL_RELAY_LOG" + fi + + if [[ -d "${ROOT}/${MY_DATADIR}/mysql" ]] ; then + ewarn "You have already a MySQL database in place." + ewarn "(${ROOT}/${MY_DATADIR}/*)" + ewarn "Please rename or delete it if you wish to replace it." + die "MySQL database already exists!" + fi + + # Bug #213475 - MySQL _will_ object strenously if your machine is named + # localhost. Also causes weird failures. + [[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost" + + if [ -z "${MYSQL_ROOT_PASSWORD}" ]; then + + einfo "Please provide a password for the mysql 'root' user now" + einfo "or through the ${HOME}/.my.cnf file." + ewarn "Avoid [\"'\\_%] characters in the password" + read -rsp " >" pwd1 ; echo + + einfo "Retype the password" + read -rsp " >" pwd2 ; echo + + if [[ "x$pwd1" != "x$pwd2" ]] ; then + die "Passwords are not the same" + fi + MYSQL_ROOT_PASSWORD="${pwd1}" + unset pwd1 pwd2 + fi + + local options + local sqltmp="$(emktemp)" + + # Fix bug 446200. Don't reference host my.cnf, needs to come first, + # see https://bugs.mysql.com/bug.php?id=31312 + use prefix && options="${options} '--defaults-file=${MY_SYSCONFDIR}/my.cnf'" + + # Figure out which options we need to disable to do the setup + local helpfile="${TMPDIR}/mysqld-help" + "${EROOT}/usr/sbin/mysqld" --verbose --help >"${helpfile}" 2>/dev/null + for opt in grant-tables host-cache name-resolve networking slave-start \ + federated ssl log-bin relay-log slow-query-log external-locking \ + log-slave-updates \ + ; do + optexp="--(skip-)?${opt}" optfull="--loose-skip-${opt}" + egrep -sq -- "${optexp}" "${helpfile}" && options="${options} ${optfull}" + done + + einfo "Creating the mysql database and setting proper permissions on it ..." + + # Now that /var/run is a tmpfs mount point, we need to ensure it exists before using it + PID_DIR="${EROOT}/var/run/mysqld" + if [[ ! -d "${PID_DIR}" ]]; then + install -d -m 755 -o mysql -g mysql "${PID_DIR}" || die "Could not create pid directory" + fi + + if [[ ! -d "${MY_DATADIR}" ]]; then + install -d -m 750 -o mysql -g mysql "${MY_DATADIR}" || die "Could not create data directory" + fi + + pushd "${TMPDIR}" &>/dev/null || die + + # Filling timezones, see + # https://dev.mysql.com/doc/mysql/en/time-zone-support.html + "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null + + local cmd=( "${EROOT}usr/share/mariadb/scripts/mysql_install_db" ) + [[ -f "${cmd}" ]] || cmd=( "${EROOT}usr/bin/mysql_install_db" ) + cmd+=( "--basedir=${EPREFIX}/usr" ${options} "--datadir=${ROOT}/${MY_DATADIR}" "--tmpdir=${ROOT}/${MYSQL_TMPDIR}" ) + einfo "Command: ${cmd[*]}" + su -s /bin/sh -c "${cmd[*]}" mysql \ + >"${TMPDIR}"/mysql_install_db.log 2>&1 + if [ $? -ne 0 ]; then + grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2 + die "Failed to initialize mysqld. Please review ${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log" + fi + popd &>/dev/null || die + [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \ + || die "MySQL databases not installed" + + use prefix || options="${options} --user=mysql" + + local socket="${EROOT}/var/run/mysqld/mysqld${RANDOM}.sock" + local pidfile="${EROOT}/var/run/mysqld/mysqld${RANDOM}.pid" + local mysqld="${EROOT}/usr/sbin/mysqld \ + ${options} \ + --log-warnings=0 \ + --basedir=${EROOT}/usr \ + --datadir=${ROOT}/${MY_DATADIR} \ + --max_allowed_packet=8M \ + --net_buffer_length=16K \ + --socket=${socket} \ + --pid-file=${pidfile} \ + --tmpdir=${ROOT}/${MYSQL_TMPDIR}" + #einfo "About to start mysqld: ${mysqld}" + ebegin "Starting mysqld" + einfo "Command ${mysqld}" + ${mysqld} & + rc=$? + while ! [[ -S "${socket}" || "${maxtry}" -lt 1 ]] ; do + maxtry=$((${maxtry}-1)) + echo -n "." + sleep 1 + done + eend $rc + + if ! [[ -S "${socket}" ]]; then + die "Completely failed to start up mysqld with: ${mysqld}" + fi + + ebegin "Setting root password" + # Do this from memory, as we don't want clear text passwords in temp files + local sql="UPDATE mysql.user SET Password = PASSWORD('${MYSQL_ROOT_PASSWORD}') WHERE USER='root'; FLUSH PRIVILEGES" + "${EROOT}/usr/bin/mysql" \ + "--socket=${socket}" \ + -hlocalhost \ + -e "${sql}" + eend $? + + if [[ -n "${sqltmp}" ]] ; then + ebegin "Loading \"zoneinfo\", this step may require a few seconds" + "${EROOT}/usr/bin/mysql" \ + "--socket=${socket}" \ + -hlocalhost \ + -uroot \ + --password="${MYSQL_ROOT_PASSWORD}" \ + mysql < "${sqltmp}" + rc=$? + eend $? + [[ $rc -ne 0 ]] && ewarn "Failed to load zoneinfo!" + fi + + # Stop the server and cleanup + einfo "Stopping the server ..." + kill $(< "${pidfile}" ) + rm -f "${sqltmp}" + wait %1 + einfo "Done" +} diff --git a/dev-db/mongodb/Manifest b/dev-db/mongodb/Manifest index 2ad267d36427..c5d170e9afcb 100644 --- a/dev-db/mongodb/Manifest +++ b/dev-db/mongodb/Manifest @@ -21,11 +21,11 @@ DIST mongodb-src-r4.0.13.tar.gz 50006727 BLAKE2B bf47bd32cf50c24084091a1baa81169 DIST mongodb-src-r4.2.0.tar.gz 60781115 BLAKE2B 75531f69647c84f71127d4cdccf13bc21e50586240c767b4c1aa1efbf56cf008bf4f32b3a2011120ad9099da0f97be934375b8dd3d012670034327175c454f0e SHA512 be2f4e00364ac49b1a0490fa859640680a4d10d861252d200bd3db535c770a3b97cee9de6d2b0b6b3622502d055ba92b6c1d88cb1134d251aa2cf50a8951b64c DIST mongodb-src-r4.2.1.tar.gz 60922510 BLAKE2B b06141cf0a8d256fc24e64c7115093009f42a97c74d270997ad4a70fb040199db05c5083cf1639283cc253264fbeb975d7efe3a41227d75146d7aa2e2fb9fa12 SHA512 6057f68ebeb2d5f74e70639fcc08aecfb112d386e3d016e18dfb2413319abf46249a0f5ffcfb74be9264a2ef34f45dd96f9774d86b1ec7e7213276f1c84f3106 EBUILD mongodb-3.6.13.ebuild 4230 BLAKE2B b2d7e960c5d6a4dc9e4f882d999446eb9ab4e8a1128a513e87e1d119ade30197aa1941e75632d32f1adee32e9a6d0b659f32ad64adc1f0472982885ef303479c SHA512 70e382660c6ceca1bcd53beb41656add3d16c3fec27108864423e7eeeadef90cb4fe7d9b992af6d24b362a2a614b95171a22585eb9addf2f22c177dd65e4a635 -EBUILD mongodb-3.6.14.ebuild 4231 BLAKE2B d285158017e7495ab091797ff655f86f192558eeb483863fa2307f4da26299b093ac1329c9a80560a2921134e573e1f23c249240c88e15ccb818e6bcf6433e53 SHA512 372a006e05788a405e9aae7363d12d4019974a2957be9f1c730fa10d93d1eb4374c01c252f3d286a76917f3e9fc3e7058ad33f586523fe9f7e96150ea5a8d4a8 +EBUILD mongodb-3.6.14.ebuild 4216 BLAKE2B f61802d40a82cefcd1006c2f3c069690eb6bf6cb42129d02f164df5066573a82d7f87146eca68ae16738b4f22f9b51b65088188088d594abe2b7b343ac3b9c2c SHA512 ef381b59444c55e147c2af37dde25ce145e4a385153c364ef65d0895b08988e3f2e80b3db24acb6187103875a82c31fa5318a4dc89cac83d7d037248945e361b EBUILD mongodb-3.6.8.ebuild 4197 BLAKE2B d28a62156019eaeab2d0fa8b4de5c5589e96c955145f283d810ba58c906d01e6447d74b08fc8037e2ebfff9b43dea38c3f6d5b28615e322ebee892bbe9c97d3a SHA512 90c2f9937355bed8d110044a89a7a5a3980c236b0e33b67457c3bc3ffce2ba3dc730dd55b977667cdd43ff07ecec4489183cee50e8e0e2a618ee2ec3e4fe82ef EBUILD mongodb-4.0.10.ebuild 4231 BLAKE2B 981c770cdbde22763fa8f4c7be235de7e8d312b1a1b1b6e688de557201cd0c265405b4bd8e5415d9e845618abdd0156bb594036376185ec57caa02cbe7b7ef56 SHA512 9e8153cd872408325dd0941f7e2fdffef09e6b1bd24dd8cf297821fdeb94098c1096df1a722db8e282db18a3bff0f95ce672cc3a3243801cbe3408135094c91a EBUILD mongodb-4.0.12.ebuild 4291 BLAKE2B dedfea39b0454fd1d4c13fe96c032845d8c951f75bcb6bc85bac84fbd1d6577e415cf817fddf5a6fab50e958b01dbdb467bcb1d33f4a3f1652efee2eacf745c3 SHA512 d0ec6aa07bb7a46b54ce43e4dccb599149e6e67dea4ecd7a85ff7332d515b802e7cf14f5dfc384e1c37820d9503913082bb0699bee37f6ab5308b12c8c26c5af -EBUILD mongodb-4.0.13.ebuild 4292 BLAKE2B 083dfd2200179cecda627ea545d4d0e5c7f26b7f0c5f4c0bfaf030d666b4cb1ee476056ab494b7e1dbf3678848e8a68f58a00d618f16b1d511954f028bf6bf8c SHA512 76d5a91f4530754698084c273115cdd7932edd0c8045148bd575c9d03cf73f8aa70ad28e4b0e826232cab37637d8af9353f7ff13e6cfe0f8beea43d6951a7ed5 +EBUILD mongodb-4.0.13.ebuild 4217 BLAKE2B 8de92d34b4d0b1b0b750d7d65bf89140e84e56af16b81dfe81648a1036cd82eb8be9023aa90893ad9e8ca6185630393d11f726ed1efb405819859c355e9e88fe SHA512 73855a9a943d3938a67c5ca28900582246ac430e4e097ca61418a38b00b1874082b6fe2fb94e3805227fe06e58c9ced2dc94702bbb59cd80990f4f87fffd8aca EBUILD mongodb-4.2.0-r2.ebuild 4333 BLAKE2B 0ec1ff9596f0840de62c4ef6844aa0f38fd01a4f0de1c9a9545bb9de991482fae3ee398f3cec39367457c92758f442414986914354dbe8cd8d5bf3b34b37ccbd SHA512 01f7426d86a90f3e52b0310c260ce738b77c31baf01f3634734e41c978fa0123946c269834e12af93f4fe748d3019782d234a30c7a327a3814c3f7ef63d42a5d -EBUILD mongodb-4.2.1.ebuild 4278 BLAKE2B 1e5ee63d8c5eb814ddd3df7f298d5ba0ec7cfda7d5eb9a3dfebb44fa7cded350d2b4ef392254aee1af95787cd9bba4cca76540f01218c1d55658ba7e0e05812f SHA512 1e94249d45d6c4d41bb5b8d91b68223d52d50f5cbeb3df129e8391b7a716eeb837f18f14ad61668f0910b77e31d257591b1c330f30085babab56c5a966e6529e +EBUILD mongodb-4.2.1.ebuild 4203 BLAKE2B 16394f58bbe5fb5b8ce63b8b7e5c8d4c8fdceab48aaf9fa8b982cb2a117de077f791db6249937f3ae15db477fcf90410b444676b86ba59f0bb79cba429d54262 SHA512 1be7c415208cedb6ed60294da3f034e02a94e4085421e328d745781ad3a9b3e8672fa1489af240e1d66ee7c1943c56df9dcfb60d1782bb6205d8d01a8da9ac87 MISC metadata.xml 901 BLAKE2B f7fde58679ba05518634b82bf5fcc371897165364fe5b023a2ec161790c869de82b4a3dd769d5e1bb450f99679869b60bb1e35beb8d41c54d3448dfca580a7ae SHA512 48f133d396aa31b992bac5f947e5a262b2d07a1016c6d49fa3c86dabb85981edfa332abb867413826762d88051ff3981cc77c2ec92e992d7a231c3b542336e36 diff --git a/dev-db/mongodb/mongodb-3.6.14.ebuild b/dev-db/mongodb/mongodb-3.6.14.ebuild index a1ca3bf944f8..b63d5ceeb560 100644 --- a/dev-db/mongodb/mongodb-3.6.14.ebuild +++ b/dev-db/mongodb/mongodb-3.6.14.ebuild @@ -10,7 +10,7 @@ CHECKREQS_DISK_BUILD="2400M" CHECKREQS_DISK_USR="512M" CHECKREQS_MEMORY="1024M" -inherit check-reqs flag-o-matic multiprocessing pax-utils python-any-r1 scons-utils systemd toolchain-funcs user +inherit check-reqs flag-o-matic multiprocessing pax-utils python-any-r1 scons-utils systemd toolchain-funcs MY_P=${PN}-src-r${PV/_rc/-rc} @@ -23,7 +23,9 @@ SLOT="0" KEYWORDS="~amd64" IUSE="debug kerberos libressl lto mms-agent ssl test +tools" -RDEPEND=">=app-arch/snappy-1.1.3 +RDEPEND="acct-group/mongodb + acct-user/mongodb + >=app-arch/snappy-1.1.3 >=dev-cpp/yaml-cpp-0.5.3:= >=dev-libs/boost-1.60:=[threads(+)] >=dev-libs/libpcre-8.41[cxx] @@ -54,6 +56,7 @@ PDEPEND="tools? ( >=app-admin/mongo-tools-${PV} )" PATCHES=( "${FILESDIR}/${PN}-3.6.1-fix-scons.patch" "${FILESDIR}/${PN}-3.6.1-no-compass.patch" + "${FILESDIR}/${PN}-4.0.12-boost-1.71-cxxabi-include.patch" ) S="${WORKDIR}/${MY_P}" @@ -70,13 +73,6 @@ pkg_pretend() { fi } -pkg_setup() { - enewgroup mongodb - enewuser mongodb -1 -1 /var/lib/${PN} mongodb - - python-any-r1_pkg_setup -} - src_prepare() { default diff --git a/dev-db/mongodb/mongodb-4.0.13.ebuild b/dev-db/mongodb/mongodb-4.0.13.ebuild index d549bea6ba8f..74236bf4fa1e 100644 --- a/dev-db/mongodb/mongodb-4.0.13.ebuild +++ b/dev-db/mongodb/mongodb-4.0.13.ebuild @@ -10,7 +10,7 @@ CHECKREQS_DISK_BUILD="2400M" CHECKREQS_DISK_USR="512M" CHECKREQS_MEMORY="1024M" -inherit check-reqs flag-o-matic multiprocessing pax-utils python-any-r1 scons-utils systemd toolchain-funcs user +inherit check-reqs flag-o-matic multiprocessing pax-utils python-any-r1 scons-utils systemd toolchain-funcs MY_P=${PN}-src-r${PV/_rc/-rc} @@ -23,7 +23,9 @@ SLOT="0" KEYWORDS="~amd64" IUSE="debug kerberos libressl lto mms-agent ssl test +tools" -RDEPEND=">=app-arch/snappy-1.1.3 +RDEPEND="acct-group/mongodb + acct-user/mongodb + >=app-arch/snappy-1.1.3 >=dev-cpp/yaml-cpp-0.5.3:= >=dev-libs/boost-1.60:=[threads(+)] >=dev-libs/libpcre-8.41[cxx] @@ -71,13 +73,6 @@ pkg_pretend() { fi } -pkg_setup() { - enewgroup mongodb - enewuser mongodb -1 -1 /var/lib/${PN} mongodb - - python-any-r1_pkg_setup -} - src_prepare() { default diff --git a/dev-db/mongodb/mongodb-4.2.1.ebuild b/dev-db/mongodb/mongodb-4.2.1.ebuild index 3feef0be5a7d..cdd1a9ed1be5 100644 --- a/dev-db/mongodb/mongodb-4.2.1.ebuild +++ b/dev-db/mongodb/mongodb-4.2.1.ebuild @@ -10,7 +10,7 @@ CHECKREQS_DISK_BUILD="2400M" CHECKREQS_DISK_USR="512M" CHECKREQS_MEMORY="1024M" -inherit check-reqs flag-o-matic multiprocessing pax-utils python-any-r1 scons-utils systemd toolchain-funcs user +inherit check-reqs flag-o-matic multiprocessing pax-utils python-any-r1 scons-utils systemd toolchain-funcs MY_P=${PN}-src-r${PV/_rc/-rc} @@ -23,7 +23,9 @@ SLOT="0" KEYWORDS="~amd64" IUSE="debug kerberos libressl lto ssl test +tools" -RDEPEND=">=app-arch/snappy-1.1.3 +RDEPEND="acct-group/mongodb + acct-user/mongodb + >=app-arch/snappy-1.1.3 >=dev-cpp/yaml-cpp-0.6.2:= >=dev-libs/boost-1.70:=[threads(+)] >=dev-libs/libpcre-8.42[cxx] @@ -71,13 +73,6 @@ pkg_pretend() { fi } -pkg_setup() { - enewgroup mongodb - enewuser mongodb -1 -1 /var/lib/${PN} mongodb - - python-any-r1_pkg_setup -} - src_prepare() { default diff --git a/dev-db/mysql-connector-c++/Manifest b/dev-db/mysql-connector-c++/Manifest index c166424c156e..c166fc6d06e2 100644 --- a/dev-db/mysql-connector-c++/Manifest +++ b/dev-db/mysql-connector-c++/Manifest @@ -3,20 +3,16 @@ AUX mysql-connector-c++-1.1.11-fix-cpp-linking.patch 440 BLAKE2B 2b78f683c8e4645 AUX mysql-connector-c++-1.1.11-fix-mariadb.patch 1939 BLAKE2B 4ca552777bfcb8671e5dc0213c411f9e1e8fbcbeb0f9f3369572c82ba03304a9df2ab98725b1fb3a365a63e4c8ed9d3d86332c54ffcb14210469b3d6078d89da SHA512 3d02972b57a0c2a544edef9ec5050c82f9214a7013e941cdc13a8f0742b7608812f33bc0c84367e70ea556562efb653297730ce5fc8d928458c5af1d71f3f60a AUX mysql-connector-c++-1.1.6-fix-cmake.patch 762 BLAKE2B 4cecebd2cb075c6e1af7ab74a84132f41beeeb202d4d286038b05cbbb202cef709e7114563bdbee12aab4e6a738a9e23bbb9455fc1ce0f906d952af4e0042f05 SHA512 c4c89b398aa88a9e7b4ed4cf42b055b79670dc70685775afd1ef2d683e5b3754575c831a6083ef0d097431e796513597e1daf7737e3ade710abad917f63ed32f AUX mysql-connector-c++-1.1.8-fix-mariadb.patch 1939 BLAKE2B f2d2528cacfa4457c20587557e5125f9d642ce162319ba6b077173b5407319d8d07e6b525a5fb95e797d43a3ad4e9ceb111ebd07a52cf38df1db71b9b4f2ab4c SHA512 66e4783b2ad2db463b243d2fcd7c4f89f1ddbb02f6c5711adb09b402bb448e4ee69b50f635c60201cf63048aebaea25b5db6a18f46b35b25e8d7920dbcfde9bd -AUX mysql-connector-c++-8.0.13-fix-build.patch 10931 BLAKE2B aeeaa25d76073525a45b7b4bd5b51b6bfa151b7c20f9e563ff98673b5273ad84a3ef9c2ce26f17b175f1038ab4924187ec2e2d059f2052855d8875823ee762bd SHA512 a965e2a475e7802e8a0dd64c39b6e0f9996b9c1c49d647c26cefac33bf52afceb012c7b0acad383006152fb52d94ffb5481d4be9b2ba957776529df842370ffb AUX mysql-connector-c++-8.0.15-fix-build.patch 10052 BLAKE2B 11c37dcfaf64783bddb05f15a4a31a41123904bbdc39d7bff3f314f30c5e6fb56bf4890fd6aefc824bee2b39e9c8ac28f42c96d4a752695109ff9a1fd0176773 SHA512 fdc38272ff584d7ec3cfb2b014693102654b59f4864b68866455fdfaca171d1e4cbe800a06d2dd2c5975d47cb8d88211219c8201fbd571177c8c35c5e9055840 +AUX mysql-connector-c++-8.0.18-fix-build.patch 8968 BLAKE2B 1a738d7ca5e291e5dc17ddcf0f316e0b4588a0e01a4b3fe2b4961e7d082aca6a61870c43f4821a69aca1bfc5ae5777b837440d5863fd6a45d190b425adde20e4 SHA512 ef226d90d2d968e4e7aed3852c8ae8e608b383adbdc81818d1ca8ea1646b5d034db2fa8fb62ab6ffa3095362d326d2a11519782d5541965bacea3ecddb475a2b DIST mysql-connector-c++-1.1.11.tar.gz 504872 BLAKE2B 16a265ce291d18d3e76f6654b42271d8c6cc9329f047d9eb0c6cdfaea37e1c13f04932e595e4333882b26154f0940949bc9bdab9d8af8e25d2bfff43be0030fa SHA512 d6839ecda12d1f088f24b20c08f3e9a757e9907d3375dba39e0f247b6a11de59817739644201e74d782d4c900aa18bf60910fe60a9ee98a2c0138104fb55dc22 DIST mysql-connector-c++-1.1.12.tar.gz 518615 BLAKE2B 386a4753ca3f03999a49a89507da1b1172b3db89797c38403fee4eea86e7108a5e4f91f24a17de86d585c2a3d9e5742a117fa84d9b14aad649f938a597f3dae9 SHA512 d7e132dbc2efda4a77f8ae00c24006a1ade1d0a50f22d89ece453505e6d206427ee7988df29c0d6ef8b396ad6b8d326b6d263a1d4fa08ef5db0966fb4f1479f4 DIST mysql-connector-c++-1.1.9.tar.gz 508255 BLAKE2B e2cd300946a873a94beab13d9d1cb64ecb5bd9a9a56ef2217b1f7aff1643adc9afc0aa22c2ff1e0f6b8318cd34d12a7fe95f0584c96c212307fa9bd0cb54a2a1 SHA512 ec4d6cb7f21d52e786de3bff951e65ea5ad7391ba097b599d0094d3e8356cf17f700dee618e38e79d7a9e562684a6c51cca95fb8e2e225942766d33f8d0a5646 -DIST mysql-connector-c++-8.0.11-src.tar.gz 2322951 BLAKE2B a1ea47c0440beae1892144186ad6b99a4519369845e1f37f5ce42088df6c29a458bd41840a1f9401dbd29827bc3a7c96ba34563a3a4cf3176e29e377cc254b9f SHA512 5113efb473b7cc63f680c04dacf5bee78d0a58ee20b41c8203edb92f8720c31c52c24de838996f25476eaa3d734c845531440317e82cb5e5f635bc03b057a148 -DIST mysql-connector-c++-8.0.13-src.tar.gz 2174609 BLAKE2B 5293ccfb7ad3bd6d50e0518db402d93f707535498ff1f608acc5c642cdc2c671601cbb7c14c7e6ec66fea8bdcb22effbb90e0ee2c207e8e82be7a2b446512f24 SHA512 0c260eff0002f5abc177049b9d050daf3b7860634355c10c02cb0ece18a3d1505454d67d8742d7e879c0cc6b44f8045f75e64d79bdd0bbfc211de9903abec902 DIST mysql-connector-c++-8.0.15-src.tar.gz 2210243 BLAKE2B 45e0ffa2134c9df5a7e311963c7f2c58b5d7cfc0eefd80a5dc323bbe34ba60d40c79154f932e19c5f8e18ae45d0b61d304b7b7daba4955f92f830cf20c718931 SHA512 9a217b8f61babe5dac405be19b12d34b22673e779433d880a3aa31ea2e128f93434599a3fe0c1150b3f7b8c4d03f595d545d8cc33342a60561a2f60bff71ef14 -DIST mysql-connector-c++-8.0.17-src.tar.gz 3111144 BLAKE2B d828ea0a37344719ff57017c7602597e8d419456d17313bddeaa1b69c239405ba584be2961ce833f2961b6b87ff7b29560be30d3a7412955c5b7db2399802ae9 SHA512 63b3e6e4c8bae3fd9bf23342f3684cc290b98d9fcf8af1e4eb5936ad37afce1169ea0cac211be1eff6827a0517cf56f4d215fbe2165a47591d940c77e1ecfa87 +DIST mysql-connector-c++-8.0.18-src.tar.gz 3115736 BLAKE2B f28229593d20f4a401a3e9d0e636ee896a90fb7573f06d9b60340540d6c4d577b4f44daa287c7896a03a60d75dec343413cba981e63a22607ce60eb20f4de122 SHA512 f5b202677392bcf5c5bdd4c3433332e57aa20c1a140de81b57ce3ce69709661d572e2466ae022926fc220b20159c90f09f15b5e44f384529103a24fd592de60d EBUILD mysql-connector-c++-1.1.11-r1.ebuild 1621 BLAKE2B fdf824ec8993976294bbc03467c63da10206bd04ed066ec33a2d7ce9310e654a0cdd1440e57517bcb22c37851310da0fb2e8e8c48696a99800da3e45cdc0c47a SHA512 7c05b18bac4af342c9feab9622e63afc916bd408a8f2b88dcf59c6192b5a62fba481b3e3f5cbca6826f61d092e7c91e9ef8f20f29b7272c11454c28a836fb15c EBUILD mysql-connector-c++-1.1.12-r1.ebuild 1648 BLAKE2B 4f16129647c28a35338981d7b0efe867acc6a0aba527d26c9c79c695073d4eed57219cd740bb046a2c869326f75c101a589c4383ea876fcbd619aab15bab1db8 SHA512 382856ec409b13e3c5e96ef7f5b9282b97dcf02f6715f5c6b786e46a2859e30ee64e5911ff81b9691a379f35904fb94f7e895e747d1ed6d5804c21390ffbdbbc EBUILD mysql-connector-c++-1.1.9-r1.ebuild 1570 BLAKE2B 2f5d17177fe53a0ab0a70efe13d225a6982746819191719d1378b072881037ce81b0d63beb1e0e3dd9106dc04d17ef29b6ac010831734fca2f184901568ba2b2 SHA512 ce9598a2a5f8924cb24822dec8b5349f1655148ba7aba234e324912999d7a5df054a3b3d78c7e9c33c909d046d28bceb9322dc1848370fbed00b27941d49d387 -EBUILD mysql-connector-c++-8.0.11.ebuild 831 BLAKE2B cd00b3ef8d70e64c8fa7d4852a45d58f060fa443dfb90ebffdb3fa11310d4afabf0396eb05ec4af04b2d3fb3115f38b10eb76a1a302d9d7a1cbb5b4f7e61fda0 SHA512 8de6feaa69664b8faea224769777b7050470fd0b60c0d317e00049bc0e29471bac94274ae0da4239ff211651bf3775df0526d29a02d39d88b1d107bddbb44ee0 -EBUILD mysql-connector-c++-8.0.13.ebuild 840 BLAKE2B ad79745000c37f90f50ffb434613bdabcdf7cc8c8fb93e24e2148f08e65414f5bfcbd792a6b942494b776bbcd8b0717760d8576dc77d78607aeba473a2e5878a SHA512 8ed227a9269efc07223a71798225f4e573904aae94126c549e32abcf4e02459269c570a7d8e4e4db3ec7a825636a77feab6b1752ceaf23d4416cc42d4ea94e8b EBUILD mysql-connector-c++-8.0.15.ebuild 909 BLAKE2B 3a0fa261424e3ce299cf1d10ff5ace8e8bedc4e91fd0eb098916ca1b2d2353562a21d4aaf3fb73c119a665ad64da113036fba6ad9a02a6199306cece67b1f835 SHA512 32c8692e66ed3805c3e01ad5b4e66b04bc0a750e1fd270fc52f70777242abd21d5f11acdff27210b9194190e2ea1bfb3d203e264986c985f0d13210618e51047 -EBUILD mysql-connector-c++-8.0.17.ebuild 909 BLAKE2B 3a0fa261424e3ce299cf1d10ff5ace8e8bedc4e91fd0eb098916ca1b2d2353562a21d4aaf3fb73c119a665ad64da113036fba6ad9a02a6199306cece67b1f835 SHA512 32c8692e66ed3805c3e01ad5b4e66b04bc0a750e1fd270fc52f70777242abd21d5f11acdff27210b9194190e2ea1bfb3d203e264986c985f0d13210618e51047 +EBUILD mysql-connector-c++-8.0.18.ebuild 1015 BLAKE2B e14bf0abe5da065ff96a350c16ce5e90bd8f2190665d0fc45d29a3c6cfe447987733a9b10bb42671cc6c9ccdef485070a3ab265880b256739958cd46a4f7b186 SHA512 3b53b586627adeb2567d275a1a7f8f1787dc9d01d996015bf273e2fed9b387666793eba0add85961fc1eae2c011d8ce11b359f400217154a2029ea67c2783de1 MISC metadata.xml 378 BLAKE2B 43fdbbc8d3b6ef99e51da96ddfefbdeaa70ef5fcb2fc6067305f75f75b7ee2fd21b79ca76704d8752bf59ae057b28efb187b063770964246f93fea629b58b467 SHA512 c6e545fb60d306792421ea26a937aaa6aea53d2a4100c9cafe78cf695c9dd0620cf3e770d43ff42749ae42bbe3a35212407ea84edee9af2dcb0255c2b763ddfc diff --git a/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.13-fix-build.patch b/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.13-fix-build.patch deleted file mode 100644 index 9bc45d274d7d..000000000000 --- a/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.13-fix-build.patch +++ /dev/null @@ -1,329 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 8ba914a..e1127f1 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -669,7 +669,7 @@ set_target_properties(connector PROPERTIES - - - install(TARGETS connector -- CONFIGURATIONS Release RelWithDebInfo -+ CONFIGURATIONS Release RelWithDebInfo Gentoo - ARCHIVE DESTINATION "${INSTALL_LIB_DIR_STATIC}" COMPONENT XDevAPIDev - RUNTIME DESTINATION "${INSTALL_LIB_DIR}" COMPONENT XDevAPIDll - LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT XDevAPIDll -@@ -740,6 +740,12 @@ TARGET_LINK_LIBRARIES(try connector) - SET_INTERFACE_OPTIONS(try devapi) - # ADD_GCOV(try) - -+IF(WITH_SSL STREQUAL "system") -+ find_package(OpenSSL REQUIRED) -+ TARGET_LINK_LIBRARIES(try ${OPENSSL_LIBRARIES}) -+ENDIF() -+ -+ - if(WITH_JDBC) - - add_executable(try_jdbc EXCLUDE_FROM_ALL try_jdbc.cc) -diff --git a/buildinfo.cmake b/buildinfo.cmake -index cc57a2c..129afeb 100644 ---- a/buildinfo.cmake -+++ b/buildinfo.cmake -@@ -112,4 +112,4 @@ if(WITH_JDBC) - endif() - - --install(FILES "${PROJECT_BINARY_DIR}/BUILDINFO.txt" DESTINATION . COMPONENT Readme) -+#install(FILES "${PROJECT_BINARY_DIR}/BUILDINFO.txt" DESTINATION . COMPONENT Readme) -diff --git a/cdk/cmake/install_macros.cmake b/cdk/cmake/install_macros.cmake -index 37c1061..39336cf 100644 ---- a/cdk/cmake/install_macros.cmake -+++ b/cdk/cmake/install_macros.cmake -@@ -327,7 +327,7 @@ FUNCTION(INSTALL_DEBUG_TARGET target) - DESTINATION ${ARG_DESTINATION} - ${RENAME_PARAM} - ${PERMISSIONS_${target_type}} -- CONFIGURATIONS Release RelWithDebInfo -+ CONFIGURATIONS Release RelWithDebInfo Gentoo - COMPONENT ${ARG_COMPONENT} - OPTIONAL) - -@@ -346,7 +346,7 @@ FUNCTION(INSTALL_DEBUG_TARGET target) - INSTALL(FILES ${debug_pdb_target_location} - DESTINATION ${ARG_PDB_DESTINATION} - ${PDB_RENAME_PARAM} -- CONFIGURATIONS Release RelWithDebInfo -+ CONFIGURATIONS Release RelWithDebInfo Gentoo - COMPONENT ${ARG_COMPONENT} - OPTIONAL) - ENDIF() -diff --git a/cdk/cmake/libutils.cmake b/cdk/cmake/libutils.cmake -index 959fc5d..aec2d91 100644 ---- a/cdk/cmake/libutils.cmake -+++ b/cdk/cmake/libutils.cmake -@@ -282,14 +282,7 @@ function(add_library_ex TARGET) - endforeach() - - if(libs) -- -- if(${type} STREQUAL "STATIC") -- merge_static_libraries(${TARGET} ${libs}) -- add_dependencies(${TARGET} ${libs}) -- else() - target_link_libraries(${TARGET} PRIVATE ${libs}) -- endif() -- - endif() - - # -diff --git a/cdk/cmake/protobuf.cmake b/cdk/cmake/protobuf.cmake -index 95ecc71..484687c 100644 ---- a/cdk/cmake/protobuf.cmake -+++ b/cdk/cmake/protobuf.cmake -@@ -26,201 +26,8 @@ - # along with this program; if not, write to the Free Software Foundation, Inc., - # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - --# --# Usage: --# --# INCLUDE(protobuf) --# [USE_FULL_PROTOBUF()] --# --# MYSQLX_PROTOBUF_GENERATE_CPP(SRCS HDRS <protobuf definitions>) --# ADD_LIBRARY(target ... ${SRCS}) --# -- --if(DEFINED WITH_PROTOBUF) -- -- # -- # If WITH_PROTOBUF is defined, it should point at external location where -- # protobuf libraries were built using our CMakeLists.txt (so that -- # exports.cmake was produced). -- # -- -- if (NOT EXISTS "${WITH_PROTOBUF}/exports.cmake") -- message(FATAL_ERROR -- "Valid protobuf build not found at the given location" -- " (could not find exports.cmake): ${WITH_PROTOBUF}" -- ) -- endif() -- -- message("Using protobuf build at: ${WITH_PROTOBUF}") -- --else(DEFINED WITH_PROTOBUF) -- -- # -- # If external WITH_PROTOBUF location is not given, then we arrange for -- # building of protbuf from bundled sources in ${PROJECT_BINARY_DIR}/protobuf. -- # -- -- message("Configuring Protobuf build using cmake generator: ${CMAKE_GENERATOR}") -- file(REMOVE "${PROJECT_BINARY_DIR}/protobuf/CMakeCache.txt") -- file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/protobuf") -- -- # -- # Pick build configuration for the protobuf build. Normally we build using the -- # same build configuration that is used for building CDK (Release/Debug/etc.). -- # But we also support building CDK under non-standard build configuration -- # named 'Static' (this is a dirty trick we use to simplify building our MSIs). -- # Since protobuf does not know 'Static' build configuration, we build protobuf -- # under 'Release' configuration in that case. -- # -- # We need to handle two cases. For some build systems, like Makefiles, -- # the build configuration is specified at cmake time using CMAKE_BUILD_TYPE -- # variable. In that case we also set it during protobuf build configuration. -- # Another case is a multi-configuration build system like MSVC. In this case -- # we use generator expression to pick correct configuration when the build -- # command is invoked below. -- # -- -- if(CMAKE_BUILD_TYPE) -- if(CMAKE_BUILD_TYPE MATCHES "[Ss][Tt][Aa][Tt][Ii][Cc]") -- set(set_build_type -DCMAKE_BUILD_TYPE=Release) -- else() -- set(set_build_type -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}) -- endif() -- endif() -- -- set(CONFIG_EXPR -- $<$<CONFIG:Static>:Release>$<$<NOT:$<CONFIG:Static>>:$<CONFIG>> -- ) -- -- execute_process( -- COMMAND ${CMAKE_COMMAND} -- -G "${CMAKE_GENERATOR}" -- ${set_build_type} -- -DSTATIC_MSVCRT=${STATIC_MSVCRT} -- -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} -- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -- -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -- -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} -- -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE} -- -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -- -DCMAKE_CXX_FLAGS_MINSIZEREL=${CMAKE_CXX_FLAGS_MINSIZEREL} -- -DCMAKE_STATIC_LINKER_FLAGS=${CMAKE_STATIC_LINKER_FLAGS} -- ${PROJECT_SOURCE_DIR}/protobuf -- WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/protobuf -- RESULT_VARIABLE protobuf_config -- ) -- -- if(protobuf_config) -- message(FATAL_ERROR "Could not configure Protobuf build: ${protobuf_config}") -- endif() -- -- set(WITH_PROTOBUF "${PROJECT_BINARY_DIR}/protobuf") -- --endif(DEFINED WITH_PROTOBUF) -- --# Import targets exported by protobuf -- --include(${WITH_PROTOBUF}/exports.cmake) -- --# --# Protobuf library targets imported above (pb_protobuf --# and pb_protobuf-lite) are local to the directory from which --# they were imported. This is not good if cdk is used as --# a sub-project of a parent project, because the parent project --# must have access to these targets. --# --# For that reason below we create global protobuf/protobuf-lite targets --# and copy their locations from the imported targets. --# --# Note: we can't use ALIAS library because it does not work with imported --# targets --# -- --add_library(protobuf STATIC IMPORTED GLOBAL) --add_library(protobuf-lite STATIC IMPORTED GLOBAL) -- --foreach(lib protobuf protobuf-lite) -- #message("processing: ${lib}") -- -- foreach(CONF NOCONFIG DEBUG RELEASE MINSIZEREL RELWITHDEBINFO) -- #message("- CONF: ${CONF}") -- -- get_target_property(LOC pb_${lib} IMPORTED_LOCATION_${CONF}) -- if(LOC) -- #message("- setting imported location to: ${LOC}") -- set_target_properties(${lib} PROPERTIES -- IMPORTED_LOCATION_${CONF} "${LOC}" -- ) -- set_property(TARGET ${lib} APPEND PROPERTY -- IMPORTED_CONFIGURATIONS ${CONF} -- ) -- endif() -- -- endforeach(CONF) -- --endforeach(lib) -- --# --# To support 'Static' build configuration the targets imported from the --# Protobuf project need to have IMPORTED_LOCATION_STATIC defined. We use --# 'Release' locations as Protobuf is built using 'Release' configuration in --# that case. --# -- --foreach(tgt protobuf protobuf-lite pb_protoc) -- -- get_target_property(LOC ${tgt} IMPORTED_LOCATION_RELEASE) -- set_property(TARGET ${tgt} PROPERTY IMPORTED_LOCATION_STATIC ${LOC}) -- --endforeach(tgt) -- -- --# protobuf depends on protobuf-lite -- --set_target_properties(protobuf PROPERTIES -- INTERFACE_LINK_LIBRARIES "protobuf-lite" --) -- -- --message("Protobuf include path: ${PROTOBUF_INCLUDE_DIR}") -- --set(PROTOBUF_INCLUDE_DIRS ${PROTOBUF_INCLUDE_DIR} -- CACHE INTERNAL "Protobuf include path" FORCE) --set(PROTOBUF_PROTOC_EXECUTABLE pb_protoc -- CACHE INTERNAL "Protobuf compiler" FORCE) -- --# --# Custom target build_protobuf ensures that Protobuf project is built. --# --# Note: this depends on Protobuf project generating the stamp file --# -- --if(NOT DEFINED PROTOBUF_BUILD_STAMP) -- message(FATAL_ERROR "Protobuf build stamp file not defined") --endif() -- -- --if(CMAKE_VERSION VERSION_LESS 3.0) -- add_custom_command(OUTPUT ${PROTOBUF_BUILD_STAMP} -- COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIGURATION> -- WORKING_DIRECTORY ${WITH_PROTOBUF} -- COMMENT "Building protobuf using configuration: $(Configuration)" -- ) --else() -- add_custom_command(OUTPUT ${PROTOBUF_BUILD_STAMP} -- COMMAND ${CMAKE_COMMAND} --build . --config ${CONFIG_EXPR} -- WORKING_DIRECTORY ${WITH_PROTOBUF} -- COMMENT "Building protobuf using configuration: $(Configuration)" -- ) --endif() -- --add_custom_target(build_protobuf -- DEPENDS ${PROTOBUF_BUILD_STAMP} --) -- --add_dependencies(protobuf build_protobuf) --add_dependencies(protobuf-lite build_protobuf) --add_dependencies(pb_protoc build_protobuf) -+#SET(Protobuf_USE_STATIC_LIBS ON) -+find_package(Protobuf REQUIRED) - - # - # Choice between full and lite version of the library. -diff --git a/cdk/protocol/mysqlx/crud.cc b/cdk/protocol/mysqlx/crud.cc -index 5cb12dc..6d32e21 100644 ---- a/cdk/protocol/mysqlx/crud.cc -+++ b/cdk/protocol/mysqlx/crud.cc -@@ -295,7 +295,7 @@ public: - class Placeholder_conv_imp - : public Args_conv - { -- map<string, unsigned> m_map; -+ std::map<string, unsigned> m_map; - - public: - -@@ -303,7 +303,7 @@ public: - - unsigned conv_placeholder(const string &name) - { -- map<string, unsigned>::const_iterator it = m_map.find(name); -+ std::map<string, unsigned>::const_iterator it = m_map.find(name); - if (it == m_map.end()) - throw_error("Placeholder converter: Placeholder was not defined on args"); - //throw Generic_error((boost::format("Placeholder %s was not defined on args.") -@@ -314,7 +314,7 @@ public: - - void add_placeholder(const string &name) - { -- map<string, unsigned>::const_iterator it = m_map.find(name); -+ std::map<string, unsigned>::const_iterator it = m_map.find(name); - if (it != m_map.end()) - throw_error("Placeholder converter: Redefined placeholder"); - //throw Generic_error((boost::format("Redifined placeholder %s.") -diff --git a/jdbc.cmake b/jdbc.cmake -index 60898da..b5d8bf0 100644 ---- a/jdbc.cmake -+++ b/jdbc.cmake -@@ -38,7 +38,7 @@ if(MYSQL_CONFIG_EXECUTABLE) - list(APPEND jdbc_cmake_opts -DMYSQL_CONFIG_EXECUTABLE=${MYSQL_CONFIG_EXECUTABLE}) - endif() - --list(APPEND jdbc_cmake_opts -DMYSQLCLIENT_STATIC_LINKING=ON) -+list(APPEND jdbc_cmake_opts -DMYSQLCLIENT_STATIC_LINKING=OFF) - - if(CMAKE_BUILD_TYPE) - if(CMAKE_BUILD_TYPE MATCHES "[Ss][Tt][Aa][Tt][Ii][Cc]") diff --git a/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.18-fix-build.patch b/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.18-fix-build.patch new file mode 100644 index 000000000000..484220442ab8 --- /dev/null +++ b/dev-db/mysql-connector-c++/files/mysql-connector-c++-8.0.18-fix-build.patch @@ -0,0 +1,275 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -463,7 +463,7 @@ set_target_properties(connector PROPERTIES + + + install(TARGETS connector +- CONFIGURATIONS Release RelWithDebInfo ++ CONFIGURATIONS Release RelWithDebInfo Gentoo + ARCHIVE DESTINATION "${INSTALL_LIB_DIR_STATIC}" COMPONENT XDevAPIDev + RUNTIME DESTINATION "${INSTALL_LIB_DIR}" COMPONENT XDevAPIDll + LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT XDevAPIDll +--- a/cdk/cmake/DepFindProtobuf.cmake ++++ b/cdk/cmake/DepFindProtobuf.cmake +@@ -48,197 +48,7 @@ if(TARGET Protobuf::pb) + return() + endif() + +-message(STATUS "Setting up Protobuf.") +- +-set(PB_SOURCE_DIR "${PROJECT_SOURCE_DIR}/protobuf") +-set(PB_BINARY_DIR "${PROJECT_BINARY_DIR}/protobuf") +-set(config_stamp "${PB_BINARY_DIR}/config.stamp") +-set(build_stamp "${PB_BINARY_DIR}/build.stamp") +- +- +-# +-# Pick build configuration for the protobuf build. Normally we build using the +-# same build configuration that is used for building CDK (Release/Debug/etc.). +-# But we also support building CDK under non-standard build configuration +-# named 'Static' (this is a dirty trick we use to simplify building our MSIs). +-# Since protobuf does not know 'Static' build configuration, we build protobuf +-# under 'Release' configuration in that case. +-# +-# We need to handle two cases. For some build systems, like Makefiles, +-# the build configuration is specified at cmake time using CMAKE_BUILD_TYPE +-# variable. In that case we also set it during protobuf build configuration. +-# Another case is a multi-configuration build system like MSVC. In this case +-# we use generator expression to pick correct configuration when the build +-# command is invoked below. +-# +- +-set(build_type) +-if(CMAKE_BUILD_TYPE) +- if(CMAKE_BUILD_TYPE MATCHES "[Ss][Tt][Aa][Tt][Ii][Cc]") +- set(set_build_type -DCMAKE_BUILD_TYPE=Release) +- else() +- set(set_build_type -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}) +- endif() +-endif() +- +-set(CONFIG_EXPR +- $<$<CONFIG:Static>:Release>$<$<NOT:$<CONFIG:Static>>:$<CONFIG>> +-) +- +- +-if(NOT EXISTS "${PB_BINARY_DIR}/exports.cmake") +- +- message("==== Configuring Protobuf build using cmake generator: ${CMAKE_GENERATOR}") +- +- file(REMOVE "${PB_BINARY_DIR}/CMakeCache.txt") +- file(MAKE_DIRECTORY "${PB_BINARY_DIR}") +- +- # Dirty trick to speed up cmake set up time. +- #file( +- # COPY "${CMAKE_BINARY_DIR}/CMakeFiles/${CMAKE_VERSION}" +- # DESTINATION "${PB_BINARY_DIR}/CMakeFiles" +- #) +- +- execute_process( +- COMMAND ${CMAKE_COMMAND} +- -G "${CMAKE_GENERATOR}" +- ${set_build_type} +- -DSTATIC_MSVCRT=${STATIC_MSVCRT} +- -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} +- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} +- -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} +- -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} +- -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE} +- -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} +- -DCMAKE_CXX_FLAGS_MINSIZEREL=${CMAKE_CXX_FLAGS_MINSIZEREL} +- -DCMAKE_STATIC_LINKER_FLAGS=${CMAKE_STATIC_LINKER_FLAGS} +- ${PB_SOURCE_DIR} +- WORKING_DIRECTORY ${PB_BINARY_DIR} +- RESULT_VARIABLE protobuf_config +- ) +- +- if(protobuf_config) +- message(FATAL_ERROR "Could not configure Protobuf build: ${protobuf_config}") +- endif() +- +- message("==== Protobuf build configured.") +- +-endif() +- +- +-include(${PB_BINARY_DIR}/exports.cmake) +- +-# +-# Protobuf library targets imported above (pb_protobuf +-# and pb_protobuf-lite) are local to the directory from which +-# they were imported. This is not good if cdk is used as +-# a sub-project of a parent project, because the parent project +-# must have access to these targets. +-# +-# For that reason below we create global protobuf/protobuf-lite targets +-# and copy their locations from the imported targets. +-# +-# Note: we can't use ALIAS library because it does not work with imported +-# targets +-# +- +-add_library(Protobuf::pb-full STATIC IMPORTED GLOBAL) +-add_library(Protobuf::pb-lite STATIC IMPORTED GLOBAL) +-add_executable(Protobuf::protoc IMPORTED GLOBAL) +- +-set(TGT_protobuf Protobuf::pb-full) +-set(TGT_protobuf-lite Protobuf::pb-lite) +-set(TGT_protoc Protobuf::protoc) +- +-foreach(tgt protobuf protobuf-lite protoc) +- +- #message("processing: ${tgt}") +- +- set(loc_list) +- +- foreach(CONF NOCONFIG DEBUG RELEASE MINSIZEREL RELWITHDEBINFO) +- +- #message("- CONF: ${CONF}") +- +- get_target_property(LOC pb_${tgt} IMPORTED_LOCATION_${CONF}) +- +- if(LOC) +- +- #message("- setting imported location to: ${LOC}") +- list(APPEND loc_list "${LOC}") +- +- set_target_properties(${TGT_${tgt}} PROPERTIES +- IMPORTED_LOCATION_${CONF} "${LOC}" +- ) +- +- set_property(TARGET ${TGT_${tgt}} APPEND PROPERTY +- IMPORTED_CONFIGURATIONS ${CONF} +- ) +- +- endif() +- +- endforeach(CONF) +- +- # +- # To support 'Static' build configuration the targets imported from the +- # Protobuf project need to have IMPORTED_LOCATION_STATIC defined. We use +- # 'Release' locations as Protobuf is built using 'Release' configuration in +- # that case. +- # +- +- get_target_property(LOC ${TGT_${tgt}} IMPORTED_LOCATION_RELEASE) +- set_property(TARGET ${TGT_${tgt}} PROPERTY IMPORTED_LOCATION_STATIC ${LOC}) +- +-endforeach(tgt) +- +- +-#message("Protobuf include path: ${PROTOBUF_INCLUDE_DIR}") +-set(PROTOBUF_INCLUDE_DIR ${PROTOBUF_INCLUDE_DIR} CACHE INTERNAL "") +- +-set_target_properties(Protobuf::pb-lite PROPERTIES +- INTERFACE_INCLUDE_DIRECTORIES "${PROTOBUF_INCLUDE_DIR}" +-) +- +-set_target_properties(Protobuf::pb-full PROPERTIES +- INTERFACE_LINK_LIBRARIES Protobuf::pb-lite +-) +- +-# On UNIX Protobuf uses pthread library +-if(UNIX) +- set_property(TARGET Protobuf::pb-lite APPEND PROPERTY +- INTERFACE_LINK_LIBRARIES pthread +- ) +-endif() +- +-# +-# Note: This is needed to correctly compile headers generated by protobuf +-# with sunpro compiler. +-# +- +-if(SUNPRO) +- set_property(TARGET Protobuf::pb-lite APPEND PROPERTY +- INTERFACE_COMPILE_DEFINITIONS SOLARIS_64BIT_ENABLED +- ) +-endif() +- +- +-add_custom_command(OUTPUT "${build_stamp}" +- COMMAND ${CMAKE_COMMAND} --build . --config ${CONFIG_EXPR} +- COMMAND ${CMAKE_COMMAND} -E touch "${build_stamp}" +- WORKING_DIRECTORY "${PB_BINARY_DIR}" +- COMMENT "Building protobuf" +-) +- +-add_custom_target(build_protobuf +- SOURCES "${build_stamp}" +-) +- +-add_dependencies(Protobuf::pb-full build_protobuf) +-add_dependencies(Protobuf::pb-lite build_protobuf) +-add_dependencies(Protobuf::protoc build_protobuf) +- +-# TODO: Handle lite/full version +- ++find_package(Protobuf REQUIRED) + + + # Standard PROTOBUF_GENERATE_CPP modified to our usage +@@ -268,11 +78,11 @@ function(mysqlx_protobuf_generate_cpp SRCS HDRS) + "${CMAKE_CURRENT_BINARY_DIR}/protobuf/${FIL_WE}.pb.h" + COMMAND ${CMAKE_COMMAND} + -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/protobuf" +- COMMAND Protobuf::protoc ++ COMMAND ${Protobuf_PROTOC_EXECUTABLE} + ARGS --cpp_out "${CMAKE_CURRENT_BINARY_DIR}/protobuf" + -I ${ABS_PATH} ${ABS_FIL} +- --proto_path=${PROJECT_SOURCE_DIR}/protobuf/protobuf-3.6.1/src +- DEPENDS ${ABS_FIL} #${PROTOBUF_PROTOC_EXECUTABLE} ++ --proto_path=${Protobuf_INCLUDE_DIR} ++ DEPENDS ${ABS_FIL} #${Protobuf_PROTOC_EXECUTABLE} + COMMENT "Running C++ protocol buffer compiler on ${FIL}" + VERBATIM + ) +--- a/cdk/core/CMakeLists.txt ++++ b/cdk/core/CMakeLists.txt +@@ -44,7 +44,7 @@ add_library(cdk STATIC ${cdk_sources} ${HEADERS}) + + target_link_libraries(cdk + PUBLIC cdk_mysqlx cdk_parser +- PRIVATE Protobuf::pb-lite # required by codecc.cc ++ PRIVATE protobuf # required by codecc.cc + ) + + add_coverage(cdk) +--- a/cdk/protocol/mysqlx/CMakeLists.txt ++++ b/cdk/protocol/mysqlx/CMakeLists.txt +@@ -125,11 +125,7 @@ target_include_directories(cdk_proto_mysqlx PRIVATE + ${CMAKE_CURRENT_BINARY_DIR} + ) + +-if(use_full_protobuf) +- target_link_libraries(cdk_proto_mysqlx PRIVATE Protobuf::pb-full) +-else() +- target_link_libraries(cdk_proto_mysqlx PRIVATE Protobuf::pb-lite) +-endif() ++target_link_libraries(cdk_proto_mysqlx PRIVATE protobuf) + + target_link_libraries(cdk_proto_mysqlx PRIVATE cdk_foundation) + +--- a/jdbc.cmake ++++ b/jdbc.cmake +@@ -66,7 +66,7 @@ if(MYSQL_CONFIG_EXECUTABLE) + list(APPEND jdbc_cmake_opts -DMYSQL_CONFIG_EXECUTABLE=${MYSQL_CONFIG_EXECUTABLE}) + endif() + +-list(APPEND jdbc_cmake_opts -DMYSQLCLIENT_STATIC_LINKING=ON) ++list(APPEND jdbc_cmake_opts -DMYSQLCLIENT_STATIC_LINKING=OFF) + + if(CMAKE_BUILD_TYPE) + if(CMAKE_BUILD_TYPE MATCHES "[Ss][Tt][Aa][Tt][Ii][Cc]") +--- a/jdbc/CMakeLists.txt ++++ b/jdbc/CMakeLists.txt +@@ -272,7 +272,7 @@ set_target_properties(connector-jdbc + + + install(TARGETS connector-jdbc +- CONFIGURATIONS Release RelWithDebInfo ++ CONFIGURATIONS Release RelWithDebInfo Gentoo + ARCHIVE DESTINATION "${INSTALL_LIB_DIR_STATIC}" COMPONENT JDBCDev + RUNTIME DESTINATION "${INSTALL_LIB_DIR}" COMPONENT JDBCDll + LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT JDBCDll diff --git a/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.11.ebuild b/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.11.ebuild deleted file mode 100644 index ddae008cc97a..000000000000 --- a/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.11.ebuild +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright 1999-2018 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -CMAKE_MAKEFILE_GENERATOR=emake -inherit cmake-utils - -DESCRIPTION="MySQL database connector for C++ (mimics JDBC 4.0 API)" -HOMEPAGE="https://dev.mysql.com/downloads/connector/cpp/" -URI_DIR="Connector-C++" -SRC_URI="https://dev.mysql.com/get/Downloads/${URI_DIR}/${P}-src.tar.gz" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~sparc ~x86" -IUSE="+legacy" - -RDEPEND=" - dev-libs/openssl:0= - dev-libs/protobuf:= - legacy? ( dev-libs/boost:= - >=dev-db/mysql-connector-c-6.1.8:= )" -DEPEND="${RDEPEND}" -S="${WORKDIR}/${P}-src" - -PATCHES=( - "${FILESDIR}/8.0.11-fix-build.patch" -) - -src_configure() { - local mycmakeargs=( - -DWITH_SSL=system - -DWITH_JDBC=$(usex legacy ON OFF) - ) - - cmake-utils_src_configure -} diff --git a/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.13.ebuild b/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.13.ebuild deleted file mode 100644 index f823bf40e1c4..000000000000 --- a/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.13.ebuild +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 1999-2019 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="7" - -CMAKE_MAKEFILE_GENERATOR=emake -inherit cmake-utils - -DESCRIPTION="MySQL database connector for C++ (mimics JDBC 4.0 API)" -HOMEPAGE="https://dev.mysql.com/downloads/connector/cpp/" -URI_DIR="Connector-C++" -SRC_URI="https://dev.mysql.com/get/Downloads/${URI_DIR}/${P}-src.tar.gz" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~sparc ~x86" -IUSE="+legacy" - -RDEPEND=" - dev-libs/openssl:0= - dev-libs/protobuf:= - legacy? ( - dev-libs/boost:= - >=dev-db/mysql-connector-c-6.1.8:= - )" -DEPEND="${RDEPEND}" -S="${WORKDIR}/${P}-src" - -PATCHES=( - "${FILESDIR}/${PN}-8.0.13-fix-build.patch" -) - -src_configure() { - local mycmakeargs=( - -DWITH_SSL=system - -DWITH_JDBC=$(usex legacy ON OFF) - ) - - cmake-utils_src_configure -} diff --git a/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.17.ebuild b/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.18.ebuild index 2b7374017ca9..bc937af3de44 100644 --- a/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.17.ebuild +++ b/dev-db/mysql-connector-c++/mysql-connector-c++-8.0.18.ebuild @@ -28,13 +28,15 @@ DEPEND="${RDEPEND}" S="${WORKDIR}/${P}-src" PATCHES=( - "${FILESDIR}/${PN}-8.0.15-fix-build.patch" + "${FILESDIR}/${PN}-8.0.18-fix-build.patch" ) src_configure() { local mycmakeargs=( -DWITH_SSL=system -DWITH_JDBC=$(usex legacy ON OFF) + $(usex legacy '-DMYSQLCLIENT_STATIC_BINDING=0' '') + $(usex legacy '-DMYSQLCLIENT_STATIC_LINKING=0' '') ) cmake-utils_src_configure diff --git a/dev-db/qt5-sqlcipher/Manifest b/dev-db/qt5-sqlcipher/Manifest index 4a7434265c64..29631bafa8ee 100644 --- a/dev-db/qt5-sqlcipher/Manifest +++ b/dev-db/qt5-sqlcipher/Manifest @@ -1,4 +1,4 @@ AUX qt5-sqlcipher-install-path.patch 542 BLAKE2B 099aec88aa739615c444478dcf946a11782d34bcda0ea9905d88a766745a063b97f1198d0e03bb7222f338293178dad2c00d430eab7754475766ebfdf95a785d SHA512 a46bb590fe8f56f61d404b4c5deba362f70ecf3044fd746f5de3a897cf884aada1bd2345e768774e674ee8e91bd162775b6f2131e4f822cc91fae22c4d71bb13 -DIST qt5-sqlcipher-1.0.1_p20181221.tar.xz 27668 BLAKE2B e9f7a380be72997a1364ff985271b421230ea75b80200fc1cb4d58946abcb5a98504e458811e9b6641a84a4f8bc7145fd9d6746a147f98bc886e8c2639698646 SHA512 408f71b7fdb26aea3f0419ce0fb295a438c247aa1649756a20b6743571dd9d45cb17d46f5b261a1fd611df4fe39a9dcd6cbd36180bf3742b0abba8b02a9a2d9a -EBUILD qt5-sqlcipher-1.0.1_p20181221.ebuild 1226 BLAKE2B ae61660cdc3fb6ec76999904048130b4069093c6ac3ec44651a069c1820356efccbffcd668e46916cae1169897866e5c6176b3e4708fe0740c9b30e2a60fe1e2 SHA512 b9610f70d2ec403741e388be772f0a343165f380314d492dc8cb9f20d46801a88f93269be947f9780563b4a1d3b2a4fe8d279fd6f534ad6e6b5bd8b032a17135 +DIST qt5-sqlcipher-1.0.1_p20191025.tar.gz 200293 BLAKE2B 5a0c6401353bc1c9dc511ac585ebce8556742278c303032b3434116c5a778034df01a5133913f8eaac187863b91ef8432b20184b75882c738ed6d850682ac765 SHA512 9e5294ff4c25dc18ef83ecec6c7ef985fec73744f36b27d21591983eb9976b8a13151ef0a31ce3af9767ee3f6388b8f008404002345d328bf0094d03ca4dd8d0 +EBUILD qt5-sqlcipher-1.0.1_p20191025.ebuild 1276 BLAKE2B ebfe234dfdf6e32255f8da50cf45241e508ec5fef977cbb995c8979077449711dcf46ba8b94845fca838bb06cef688d52c88259289c8d509f093c3dcf66d50af SHA512 e01730d3d851091e0e8a5f4bf3b52e37bbc85c8e3b47103d20623ef9012b6460a27a9095d8dc9da95a9265c138ab3d123ac8880c87c6762cea345c52c6cb2bb5 MISC metadata.xml 212 BLAKE2B ecb53eb3efac6ceef048d345601c5ca0430e2f62d6409dc2a18494ee188f792d4763892816f197418d2e9a6d04452091a0c69d83afc207b366fca816632209ee SHA512 3919b8b096abf61c7edaa6a76898603b6ca2e206e2eccd27c671957a9d085bc2591a2fb4839a85ef2a51dcbf887bb2c752d4b38e82ea19c48dfd6d99b67954fa diff --git a/dev-db/qt5-sqlcipher/qt5-sqlcipher-1.0.1_p20181221.ebuild b/dev-db/qt5-sqlcipher/qt5-sqlcipher-1.0.1_p20191025.ebuild index 744c62f7f414..06dc4411a574 100644 --- a/dev-db/qt5-sqlcipher/qt5-sqlcipher-1.0.1_p20181221.ebuild +++ b/dev-db/qt5-sqlcipher/qt5-sqlcipher-1.0.1_p20191025.ebuild @@ -5,20 +5,21 @@ EAPI=7 inherit cmake-utils +COMMIT="8b8ba1579f4fdd0d2c1e8bd9596eedf5101dd917" DESCRIPTION="Qt SQL driver plugin for SQLCipher" HOMEPAGE="https://github.com/blizzard4591/qt5-sqlcipher" -SRC_URI="https://dev.gentoo.org/~ulm/distfiles/${P}.tar.xz" +SRC_URI="https://github.com/blizzard4591/${PN}/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" LICENSE="LGPL-2.1" # version 2.1 only SLOT="0" KEYWORDS="~amd64" RDEPEND=">=dev-db/sqlcipher-3.4.1 - >=dev-qt/qtcore-5.7.1:5= - >=dev-qt/qtsql-5.7.1:5=[sqlite] <dev-qt/qtsql-5.13:5=[sqlite]" + >=dev-qt/qtcore-5.12.3:5= + >=dev-qt/qtsql-5.12.3:5=[sqlite] <dev-qt/qtsql-5.14:5=[sqlite]" DEPEND="${RDEPEND}" -S="${WORKDIR}/${PN}" +S="${WORKDIR}/${PN}-${COMMIT}" DOCS=(README.md) src_prepare() { @@ -31,10 +32,8 @@ src_prepare() { if ! [[ -d qt-file-cache/${v} ]]; then local vc case $(ver_cut 1-2 ${v}) in - 5.7) vc=5.7.1 ;; - 5.9) vc=5.9.6 ;; - 5.11) vc=5.11.3 ;; - 5.12) vc=5.12.0 ;; + 5.12) vc=5.12.5 ;; + 5.13) vc=5.13.1 ;; *) die "qtsql-${v} not supported" ;; esac elog "qtsql-${v} not in cache, using ${vc} instead" diff --git a/dev-db/sqlite/Manifest b/dev-db/sqlite/Manifest index 5dc3426aa5bf..f4dfa4956b16 100644 --- a/dev-db/sqlite/Manifest +++ b/dev-db/sqlite/Manifest @@ -12,5 +12,5 @@ DIST sqlite-doc-3290000.zip 9415641 BLAKE2B 97fef1f01d3e7730e5220541ad9ccdf9f853 DIST sqlite-src-3280000.zip 12477204 BLAKE2B e62e0f36f0bebf89990f8ec91cb1e508a5ebc92bb212eaf9c80eb0febecb5623f5938ecd31c210837314f1f9aab19a18189824f82a106799384d8184ca5f65ab SHA512 49c35c65fa686a2326e13218db583c54fa5fe8f48f0caddd11a942601803b3023f7d32ffbab16641e0d72dc9ed288ad26eaa7226c865ac54e1f181859125651f DIST sqlite-src-3290000.zip 12557725 BLAKE2B b1aeb80734a2cb7d45c6f2e278bad2996b56ecaf792a8f26322bf50aeaa430eea267f23edb1721bb80ecb6e0c8e14c7a5d8f26178d056fd23efb52f496cc03e1 SHA512 575398fbe20c6471ee2abcbde170b8d48efbb3cb2716a65f42f05c52429a45d14e8046e50c59bbf75bfe2d8f151c34abd50b440c50af571f19e19f3290b230df EBUILD sqlite-3.28.0.ebuild 10067 BLAKE2B 1db1b8101b6db76d7146143bf9bbe2b27358d6d7233009fc7d1ac10b09589da34d3aa5c9a945f67a991c5123aa5e31562adee245a08d791eedc224521a367088 SHA512 d1fb4bbae6dd93a50f0242895bcab0508e0de42e7b0ec523fbeb4bae3b93eecc5ec0ad511a278748283124c38d60609dd251d8fb892f77dc43ddf2cc0a601a67 -EBUILD sqlite-3.29.0.ebuild 12011 BLAKE2B 91889b43433a9d85ea2dffa3331ff101d8d4742d0c26a0c4cd7142aa4050f89d5eedc6d3ffb9762286de490109b903af0509a50d980a73677d7a413b1bd233ba SHA512 c5102b6760938baf3415f98c91f5569ba9e5fad817f3c97070ae87df1aa4896e2a2d6d1412a80adcc3f731674f2b6b92356645e653b327e3f731e61245fa2ea1 +EBUILD sqlite-3.29.0.ebuild 12010 BLAKE2B 4cc533b7b9e57e759c93bbf91adf5d1ae04b252ae9244beef08ee98ebbc4d52c724a441b207aef3fdbbb52658d685f6b21f196fff55df49a7640e24e732ad06e SHA512 d7e7bec9be46e9e29935bbf584efe6228b2d19e4c0ec54c22c73a545d6b3b88a324dc67a6a9057d6623ff170deae1bb15051ced2e6a42c510ce71ec4af05d084 MISC metadata.xml 748 BLAKE2B c58da3e33e12b7747bbadacfd1a6137cf847fd5bd0525fc02ef854eb5bcad7bad0b29739257b632e19190995659768fdea418ffa7e485e55ef15f40f58b8382c SHA512 66f3f134065f76229b74a7ab7b469066a93da737a9037435e6fe78e85f45c980ec561537f2bb9b95db9de026bad025d8b06682187c97dedd2741717e893d43da diff --git a/dev-db/sqlite/sqlite-3.29.0.ebuild b/dev-db/sqlite/sqlite-3.29.0.ebuild index 332d40390c4f..a00c771c8c08 100644 --- a/dev-db/sqlite/sqlite-3.29.0.ebuild +++ b/dev-db/sqlite/sqlite-3.29.0.ebuild @@ -25,7 +25,7 @@ fi LICENSE="public-domain" SLOT="3" -KEYWORDS="alpha amd64 arm ~arm64 hppa ia64 m68k ~mips ppc ppc64 ~riscv s390 sh sparc x86 ~ppc-aix ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 ~riscv s390 sh sparc x86 ~ppc-aix ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" IUSE="debug doc icu +readline secure-delete static-libs tcl test tools" if [[ "${PV}" == "9999" ]]; then PROPERTIES="live" |