Merge pull request #84164 from Izorkin/mariadb-tokudb-20.03

[20.03] mariadb: backport updates
This commit is contained in:
Florian Klink 2020-04-03 15:52:26 +02:00 committed by GitHub
commit e89b1063fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 38 additions and 41 deletions

View File

@ -1007,6 +1007,12 @@ auth required pam_succeed_if.so uid >= 1000 quiet
</warning>
</para>
</listitem>
<listitem>
<para>
The TokuDB storage engine will be disabled in <package>mariadb</package> 10.5. It is recommended to switch
to RocksDB. See also <link xlink:href="https://mariadb.com/kb/en/tokudb/">TokuDB</link>.
</para>
</listitem>
</itemizedlist>
</section>

View File

@ -1,15 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1ea7c1df..b0face0d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -176,6 +176,10 @@ ELSE()
SET (SKIP_COMPONENTS "N-O-N-E")
ENDIF()
+IF (WITHOUT_CLIENT)
+ SET (SKIP_COMPONENTS "Client|ClientPlugins|ManPagesClient")
+ENDIF()
+
OPTION(NOT_FOR_DISTRIBUTION "Allow linking with GPLv2-incompatible system libraries. Only set it you never plan to distribute the resulting binaries" OFF)
INCLUDE(check_compiler_flag)

View File

@ -1,8 +1,12 @@
{ stdenv, fetchurl, fetchFromGitHub, cmake, pkgconfig, makeWrapper, ncurses, zlib, xz, lzo, lz4, bzip2, snappy
{ stdenv, fetchurl, fetchFromGitHub, cmake, pkgconfig, makeWrapper, ncurses
, libiconv, openssl, pcre, boost, judy, bison, libxml2, libkrb5, linux-pam, curl
, libaio, libevent, jemalloc, cracklib, systemd, numactl, perl
, libaio, libevent, jemalloc450, jemalloc, cracklib, systemd, perl
, bzip2, lz4, lzo, snappy, xz, zlib, zstd
, fixDarwinDylibNames, cctools, CoreServices, less
, withoutClient ? false
, numactl # NUMA Support
, withStorageMroonga ? true, kytea, msgpack, zeromq
, withStorageRocks ? true
, withStorageToku ? true
}:
with stdenv.lib;
@ -33,9 +37,11 @@ common = rec { # attributes common to both builds
nativeBuildInputs = [ cmake pkgconfig ];
buildInputs = [
ncurses openssl zlib pcre jemalloc libiconv curl
ncurses openssl zlib pcre libiconv curl
] ++ optionals stdenv.hostPlatform.isLinux [ libaio systemd libkrb5 ]
++ optionals stdenv.hostPlatform.isDarwin [ perl fixDarwinDylibNames cctools CoreServices ];
++ optionals stdenv.hostPlatform.isDarwin [ perl fixDarwinDylibNames cctools CoreServices ]
++ optional (!stdenv.hostPlatform.isDarwin && withStorageToku) [ jemalloc450 ]
++ optional (!stdenv.hostPlatform.isDarwin && !withStorageToku) [ jemalloc ];
prePatch = ''
sed -i 's,[^"]*/var/log,/var/log,g' storage/mroonga/vendor/groonga/CMakeLists.txt
@ -79,8 +85,6 @@ common = rec { # attributes common to both builds
# to pass in java explicitly.
"-DCONNECT_WITH_JDBC=OFF"
"-DCURSES_LIBRARY=${ncurses.out}/lib/libncurses.dylib"
] ++ optionals stdenv.hostPlatform.isMusl [
"-DWITHOUT_TOKUDB=1" # mariadb docs say disable this for musl
];
postInstall = ''
@ -98,6 +102,7 @@ common = rec { # attributes common to both builds
passthru.mysqlVersion = "5.7";
meta = {
description = "An enhanced, drop-in replacement for MySQL";
homepage = https://mariadb.org/;
license = licenses.gpl2;
@ -137,18 +142,17 @@ server = stdenv.mkDerivation (common // {
outputs = [ "out" "man" ];
nativeBuildInputs = common.nativeBuildInputs ++ [ bison ] ++ optional (!stdenv.hostPlatform.isDarwin) makeWrapper;
nativeBuildInputs = common.nativeBuildInputs ++ [ bison boost.dev ] ++ optional (!stdenv.hostPlatform.isDarwin) makeWrapper;
buildInputs = common.buildInputs ++ [
xz lzo lz4 bzip2 snappy
libxml2 boost judy libevent cracklib
bzip2 lz4 lzo snappy xz zstd
libxml2 judy libevent cracklib
] ++ optional (stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32) numactl
++ optionals withStorageMroonga [ kytea msgpack zeromq ]
++ optional stdenv.hostPlatform.isLinux linux-pam
++ optional (!stdenv.hostPlatform.isDarwin) mytopEnv;
patches = common.patches ++ [
./cmake-without-client.patch
] ++ optionals stdenv.hostPlatform.isDarwin [
patches = common.patches ++ optionals stdenv.hostPlatform.isDarwin [
./cmake-without-plugin-auth-pam.patch
];
@ -163,11 +167,20 @@ server = stdenv.mkDerivation (common // {
"-DWITH_INNODB_DISALLOW_WRITES=ON"
"-DWITHOUT_EXAMPLE=1"
"-DWITHOUT_FEDERATED=1"
] ++ optionals withoutClient [
"-DWITHOUT_CLIENT=ON"
] ++ optionals stdenv.hostPlatform.isDarwin [
"-DWITHOUT_OQGRAPH=1"
] ++ optional (stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32) [
"-DWITH_NUMA=ON"
] ++ optional (!withStorageMroonga) [
"-DWITHOUT_MROONGA=1"
] ++ optional (!withStorageRocks) [
"-DWITHOUT_ROCKSDB=1"
] ++ optional (!stdenv.hostPlatform.isDarwin && withStorageRocks) [
"-DWITH_ROCKSDB_JEMALLOC=ON"
] ++ optional (stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isMusl || !withStorageToku) [
"-DWITHOUT_TOKUDB=1"
] ++ optional (!stdenv.hostPlatform.isDarwin && withStorageToku) [
"-DWITH_JEMALLOC=static"
] ++ optional stdenv.hostPlatform.isDarwin [
"-DWITHOUT_OQGRAPH=1"
];
preConfigure = optionalString (!stdenv.hostPlatform.isDarwin) ''
@ -178,15 +191,8 @@ server = stdenv.mkDerivation (common // {
chmod +x "$out"/bin/wsrep_sst_common
rm "$out"/bin/{mysql_client_test,mysqltest}
rm -r "$out"/data # Don't need testing data
'' + optionalString withStorageMroonga ''
mv "$out"/share/{groonga,groonga-normalizer-mysql} "$out"/share/doc/mysql
'' + optionalString withoutClient ''
${ # We don't build with GSSAPI on Darwin
optionalString (!stdenv.hostPlatform.isDarwin) ''
rm "$out"/lib/mysql/plugin/auth_gssapi_client.so
''
}
rm "$out"/lib/mysql/plugin/client_ed25519.so
rm "$out"/lib/{libmysqlclient${libExt},libmysqlclient_r${libExt}}
'' + optionalString (!stdenv.hostPlatform.isDarwin) ''
sed -i 's/-mariadb/-mysql/' "$out"/bin/galera_new_cluster
'';

View File

@ -15547,7 +15547,7 @@ in
mariadb = callPackage ../servers/sql/mariadb {
# As per mariadb's cmake, "static jemalloc_pic.a can only be used up to jemalloc 4".
# https://jira.mariadb.org/browse/MDEV-15034
jemalloc = jemalloc450.override ({ disableInitExecTls = true; });
jemalloc450 = jemalloc450.override ({ disableInitExecTls = true; });
inherit (darwin) cctools;
inherit (pkgs.darwin.apple_sdk.frameworks) CoreServices;
};