aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb
diff options
context:
space:
mode:
authorMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
committerMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
commitc4625b175f8200f643fd6e11010932ea44c78433 (patch)
treebce3f89888c8ac3991fa5569a878a9eab6801ccc /infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb
parent49f735974dd103039ddc4cb576bb76555164a9e7 (diff)
parentd661aa56a8843e991261510c1bb28fdc2f6975ae (diff)
Add 'infra/libkookie/' from commit 'd661aa56a8843e991261510c1bb28fdc2f6975ae'
git-subtree-dir: infra/libkookie git-subtree-mainline: 49f735974dd103039ddc4cb576bb76555164a9e7 git-subtree-split: d661aa56a8843e991261510c1bb28fdc2f6975ae
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/cmake-includedir.patch11
-rw-r--r--infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/cmake-plugin-includedir.patch16
-rw-r--r--infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/connector-c/3_1.nix6
-rw-r--r--infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/connector-c/default.nix65
-rw-r--r--infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/default.nix219
-rw-r--r--infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/galera/default.nix60
6 files changed, 377 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/cmake-includedir.patch b/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/cmake-includedir.patch
new file mode 100644
index 000000000000..0c4fe7d321e2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/cmake-includedir.patch
@@ -0,0 +1,11 @@
+--- a/include/CMakeLists.txt 2017-12-25 05:59:07.204144374 +0100
++++ b/include/CMakeLists.txt 2017-12-25 05:59:26.339552817 +0100
+@@ -94,7 +94,7 @@
+ ENDIF()
+
+ MACRO(INSTALL_COMPAT_HEADER file footer)
+- INSTALL(CODE "FILE(WRITE \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${INSTALL_INCLUDEDIR}/${file}
++ INSTALL(CODE "FILE(WRITE ${INSTALL_INCLUDEDIR}/${file}
+ \"/* Do not edit this file directly, it was auto-generated by cmake */
+
+ #warning This file should not be included by clients, include only <mysql.h>
diff --git a/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/cmake-plugin-includedir.patch b/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/cmake-plugin-includedir.patch
new file mode 100644
index 000000000000..d2a4535f7ba9
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/cmake-plugin-includedir.patch
@@ -0,0 +1,16 @@
+diff --git a/cmake/plugin.cmake b/cmake/plugin.cmake
+index 31291d26..fad52814 100644
+--- a/cmake/plugin.cmake
++++ b/cmake/plugin.cmake
+@@ -34,6 +34,11 @@ MACRO(MYSQL_ADD_PLUGIN)
+ "LINK_LIBRARIES;DEPENDENCIES"
+ ${ARGN}
+ )
++
++ IF(WITHOUT_SERVER OR ARG_CLIENT)
++ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
++ ENDIF()
++
+ IF(NOT WITHOUT_SERVER OR ARG_CLIENT)
+
+ # Add common include directories
diff --git a/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/connector-c/3_1.nix b/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/connector-c/3_1.nix
new file mode 100644
index 000000000000..fb6835775fbf
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/connector-c/3_1.nix
@@ -0,0 +1,6 @@
+{ callPackage, ... } @ args:
+
+callPackage ./. (args // {
+ version = "3.1.8";
+ sha256 = "0yrzhsxmjiwkhchagx8dymzhvxl3k5h40wn9wpicqjvgjb9k8523";
+})
diff --git a/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/connector-c/default.nix b/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/connector-c/default.nix
new file mode 100644
index 000000000000..8c71514dfba7
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/connector-c/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchurl, cmake
+, curl, openssl, zlib
+, libiconv
+, version, sha256, ...
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation {
+ pname = "mariadb-connector-c";
+ inherit version;
+
+ src = fetchurl {
+ urls = [
+ "https://downloads.mariadb.org/f/connector-c-${version}/mariadb-connector-c-${version}-src.tar.gz"
+ "https://downloads.mariadb.com/Connectors/c/connector-c-${version}/mariadb-connector-c-${version}-src.tar.gz"
+ ];
+ inherit sha256;
+ };
+
+ outputs = [ "out" "dev" ];
+
+ cmakeFlags = [
+ "-DMARIADB_UNIX_ADDR=/run/mysqld/mysqld.sock"
+ "-DWITH_CURL=ON"
+ "-DWITH_EXTERNAL_ZLIB=ON"
+ "-DWITH_MYSQLCOMPAT=ON"
+ ];
+
+ postPatch = ''
+ substituteInPlace mariadb_config/mariadb_config.c.in \
+ --replace '@CMAKE_SYSROOT@@CMAKE_INSTALL_PREFIX@/@INSTALL_INCLUDEDIR@' "$dev/include" \
+ --replace '@CMAKE_SYSROOT@@CMAKE_INSTALL_PREFIX@/@INSTALL_LIBDIR@' "$out/lib/mariadb"
+ '';
+
+ # The cmake setup-hook uses $out/lib by default, this is not the case here.
+ preConfigure = optionalString stdenv.isDarwin ''
+ cmakeFlagsArray+=("-DCMAKE_INSTALL_NAME_DIR=$out/lib/mariadb")
+ '';
+
+ nativeBuildInputs = [ cmake ];
+ propagatedBuildInputs = [ curl openssl zlib ];
+ buildInputs = [ libiconv ];
+
+ enableParallelBuilding = true;
+
+ postInstall = ''
+ moveToOutput bin/mariadb_config "$dev"
+ '';
+
+ postFixup = ''
+ ln -sv mariadb_config $dev/bin/mysql_config
+ ln -sv mariadb $out/lib/mysql
+ ln -sv mariadb $dev/include/mysql
+ ln -sv mariadb_version.h $dev/include/mariadb/mysql_version.h
+ ln -sv libmariadb.pc $dev/lib/pkgconfig/mysqlclient.pc
+ '';
+
+ meta = {
+ description = "Client library that can be used to connect to MySQL or MariaDB";
+ license = licenses.lgpl21;
+ maintainers = with maintainers; [ globin ];
+ platforms = platforms.all;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/default.nix b/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/default.nix
new file mode 100644
index 000000000000..3ba4e367312c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/default.nix
@@ -0,0 +1,219 @@
+{ stdenv, fetchurl, fetchFromGitHub, cmake, pkgconfig, makeWrapper, ncurses, nixosTests
+, libiconv, openssl, pcre, boost, judy, bison, libxml2, libkrb5, linux-pam, curl
+, libaio, libevent, jemalloc450, jemalloc, cracklib, systemd, perl
+, bzip2, lz4, lzo, snappy, xz, zlib, zstd
+, fixDarwinDylibNames, cctools, CoreServices, less
+, numactl # NUMA Support
+, withStorageMroonga ? true, kytea, msgpack, zeromq
+, withStorageRocks ? true
+, withStorageToku ? true
+}:
+
+with stdenv.lib;
+
+let # in mariadb # spans the whole file
+
+libExt = stdenv.hostPlatform.extensions.sharedLibrary;
+
+mytopEnv = perl.withPackages (p: with p; [ DataDumper DBDmysql DBI TermReadKey ]);
+
+mariadb = server // {
+ inherit client; # MariaDB Client
+ server = server; # MariaDB Server
+};
+
+common = rec { # attributes common to both builds
+ version = "10.4.14";
+
+ src = fetchurl {
+ urls = [
+ "https://downloads.mariadb.org/f/mariadb-${version}/source/mariadb-${version}.tar.gz"
+ "https://downloads.mariadb.com/MariaDB/mariadb-${version}/source/mariadb-${version}.tar.gz"
+ ];
+ sha256 = "1z469j39chq7d3dp39cljjbzcz0wl1g7rii85x46290jw1cwsbzr";
+ name = "mariadb-${version}.tar.gz";
+ };
+
+ nativeBuildInputs = [ cmake pkgconfig ];
+
+ buildInputs = [
+ ncurses openssl zlib pcre libiconv curl
+ ] ++ optionals stdenv.hostPlatform.isLinux [ libaio systemd libkrb5 ]
+ ++ 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
+ '';
+
+ patches = [
+ ./cmake-includedir.patch
+ ];
+
+ cmakeFlags = [
+ "-DBUILD_CONFIG=mysql_release"
+ "-DMANUFACTURER=NixOS.org"
+ "-DDEFAULT_CHARSET=utf8mb4"
+ "-DDEFAULT_COLLATION=utf8mb4_unicode_ci"
+ "-DSECURITY_HARDENED=ON"
+
+ "-DINSTALL_UNIX_ADDRDIR=/run/mysqld/mysqld.sock"
+ "-DINSTALL_BINDIR=bin"
+ "-DINSTALL_DOCDIR=share/doc/mysql"
+ "-DINSTALL_DOCREADMEDIR=share/doc/mysql"
+ "-DINSTALL_INCLUDEDIR=include/mysql"
+ "-DINSTALL_LIBDIR=lib"
+ "-DINSTALL_PLUGINDIR=lib/mysql/plugin"
+ "-DINSTALL_INFODIR=share/mysql/docs"
+ "-DINSTALL_MANDIR=share/man"
+ "-DINSTALL_MYSQLSHAREDIR=share/mysql"
+ "-DINSTALL_SCRIPTDIR=bin"
+ "-DINSTALL_SUPPORTFILESDIR=share/doc/mysql"
+ "-DINSTALL_MYSQLTESTDIR=OFF"
+ "-DINSTALL_SQLBENCHDIR=OFF"
+ "-DINSTALL_PAMDIR=share/pam/lib/security"
+ "-DINSTALL_PAMDATADIR=share/pam/etc/security"
+
+ "-DWITH_ZLIB=system"
+ "-DWITH_SSL=system"
+ "-DWITH_PCRE=system"
+ "-DWITH_SAFEMALLOC=OFF"
+ "-DWITH_UNIT_TESTS=OFF"
+ "-DEMBEDDED_LIBRARY=OFF"
+ ] ++ optionals stdenv.hostPlatform.isDarwin [
+ # On Darwin without sandbox, CMake will find the system java and attempt to build with java support, but
+ # then it will fail during the actual build. Let's just disable the flag explicitly until someone decides
+ # to pass in java explicitly.
+ "-DCONNECT_WITH_JDBC=OFF"
+ "-DCURSES_LIBRARY=${ncurses.out}/lib/libncurses.dylib"
+ ];
+
+ postInstall = ''
+ # Remove Development components. Need to use libmysqlclient.
+ rm "$out"/lib/mysql/plugin/daemon_example.ini
+ rm "$out"/lib/{libmariadbclient.a,libmysqlclient.a,libmysqlclient_r.a,libmysqlservices.a}
+ rm "$out"/bin/{mariadb_config,mysql_config}
+ rm -r $out/include
+ rm -r $out/lib/pkgconfig
+ rm -r $out/share/aclocal
+ '';
+
+ enableParallelBuilding = true;
+
+ passthru.mysqlVersion = "5.7";
+
+ passthru.tests = {
+ mariadb-galera-mariabackup = nixosTests.mariadb-galera-mariabackup;
+ mariadb-galera-rsync = nixosTests.mariadb-galera-rsync;
+ mysql = nixosTests.mysql;
+ mysql-autobackup = nixosTests.mysql-autobackup;
+ mysql-backup = nixosTests.mysql-backup;
+ mysql-replication = nixosTests.mysql-replication;
+ };
+
+ meta = {
+ description = "An enhanced, drop-in replacement for MySQL";
+ homepage = "https://mariadb.org/";
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ thoughtpolice ];
+ platforms = platforms.all;
+ };
+};
+
+client = stdenv.mkDerivation (common // {
+ pname = "mariadb-client";
+
+ outputs = [ "out" "man" ];
+
+ patches = common.patches ++ [
+ ./cmake-plugin-includedir.patch
+ ];
+
+ cmakeFlags = common.cmakeFlags ++ [
+ "-DPLUGIN_AUTH_PAM=OFF"
+ "-DWITHOUT_SERVER=ON"
+ "-DWITH_WSREP=OFF"
+ "-DINSTALL_MYSQLSHAREDIR=share/mysql-client"
+ ];
+
+ postInstall = common.postInstall + ''
+ rm -r "$out"/share/doc
+ rm "$out"/bin/{mysqltest,mytop}
+ libmysqlclient_path=$(readlink -f $out/lib/libmysqlclient${libExt})
+ rm "$out"/lib/{libmariadb${libExt},libmysqlclient${libExt},libmysqlclient_r${libExt}}
+ mv "$libmysqlclient_path" "$out"/lib/libmysqlclient${libExt}
+ ln -sv libmysqlclient${libExt} "$out"/lib/libmysqlclient_r${libExt}
+ '';
+});
+
+server = stdenv.mkDerivation (common // {
+ pname = "mariadb-server";
+
+ outputs = [ "out" "man" ];
+
+ nativeBuildInputs = common.nativeBuildInputs ++ [ bison boost.dev ] ++ optional (!stdenv.hostPlatform.isDarwin) makeWrapper;
+
+ buildInputs = common.buildInputs ++ [
+ 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;
+
+ cmakeFlags = common.cmakeFlags ++ [
+ "-DMYSQL_DATADIR=/var/lib/mysql"
+ "-DENABLED_LOCAL_INFILE=OFF"
+ "-DWITH_READLINE=ON"
+ "-DWITH_EXTRA_CHARSETS=all"
+ "-DWITH_EMBEDDED_SERVER=OFF"
+ "-DWITH_UNIT_TESTS=OFF"
+ "-DWITH_WSREP=ON"
+ "-DWITH_INNODB_DISALLOW_WRITES=ON"
+ "-DWITHOUT_EXAMPLE=1"
+ "-DWITHOUT_FEDERATED=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 [
+ "-DPLUGIN_AUTH_PAM=OFF"
+ "-DWITHOUT_OQGRAPH=1"
+ ];
+
+ preConfigure = optionalString (!stdenv.hostPlatform.isDarwin) ''
+ patchShebangs scripts/mytop.sh
+ '';
+
+ postInstall = common.postInstall + ''
+ chmod +x "$out"/bin/wsrep_sst_common
+ rm "$out"/bin/{mariadb-client-test,mariadb-test,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 (!stdenv.hostPlatform.isDarwin) ''
+ mv "$out"/OFF/suite/plugins/pam/pam_mariadb_mtr.so "$out"/share/pam/lib/security
+ mv "$out"/OFF/suite/plugins/pam/mariadb_mtr "$out"/share/pam/etc/security
+ rm -r "$out"/OFF
+ sed -i 's/-mariadb/-mysql/' "$out"/bin/galera_new_cluster
+ '';
+
+ # perlPackages.DBDmysql is broken on darwin
+ postFixup = optionalString (!stdenv.hostPlatform.isDarwin) ''
+ wrapProgram $out/bin/mytop --set PATH ${makeBinPath [ less ncurses ]}
+ '';
+
+ CXXFLAGS = optionalString stdenv.hostPlatform.isi686 "-fpermissive";
+});
+in mariadb
diff --git a/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/galera/default.nix b/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/galera/default.nix
new file mode 100644
index 000000000000..14ab75d159b2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/servers/sql/mariadb/galera/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchFromGitHub, buildEnv
+, asio, boost, check, openssl, scons
+}:
+
+let
+ galeraLibs = buildEnv {
+ name = "galera-lib-inputs-united";
+ paths = [ openssl.out boost check ];
+ };
+
+in stdenv.mkDerivation rec {
+ pname = "mariadb-galera";
+ version = "26.4.5";
+
+ src = fetchFromGitHub {
+ owner = "codership";
+ repo = "galera";
+ rev = "release_${version}";
+ sha256 = "10sir0hxxglw9jsjrclfgrqm8n5zng6rwj2fgff141x9n9l55w7l";
+ fetchSubmodules = true;
+ };
+
+ buildInputs = [ asio boost check openssl scons ];
+
+ postPatch = ''
+ substituteInPlace SConstruct \
+ --replace "boost_library_path = '''" "boost_library_path = '${boost}/lib'"
+ '';
+
+ preConfigure = ''
+ export CPPFLAGS="-I${asio}/include -I${boost.dev}/include -I${check}/include -I${openssl.dev}/include"
+ export LIBPATH="${galeraLibs}/lib"
+ '';
+
+ sconsFlags = "ssl=1 system_asio=1 strict_build_flags=0";
+
+ enableParallelBuilding = true;
+
+ installPhase = ''
+ # copied with modifications from scripts/packages/freebsd.sh
+ GALERA_LICENSE_DIR="$share/licenses/${pname}-${version}"
+ install -d $out/{bin,lib/galera,share/doc/galera,$GALERA_LICENSE_DIR}
+ install -m 555 "garb/garbd" "$out/bin/garbd"
+ install -m 444 "libgalera_smm.so" "$out/lib/galera/libgalera_smm.so"
+ install -m 444 "scripts/packages/README" "$out/share/doc/galera/"
+ install -m 444 "scripts/packages/README-MySQL" "$out/share/doc/galera/"
+ install -m 444 "scripts/packages/freebsd/LICENSE" "$out/$GALERA_LICENSE_DIR"
+ install -m 444 "LICENSE" "$out/$GALERA_LICENSE_DIR/GPLv2"
+ install -m 444 "asio/LICENSE_1_0.txt" "$out/$GALERA_LICENSE_DIR/LICENSE.asio"
+ install -m 444 "www.evanjones.ca/LICENSE" "$out/$GALERA_LICENSE_DIR/LICENSE.crc32c"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Galera 3 wsrep provider library";
+ homepage = "https://galeracluster.com/";
+ license = licenses.lgpl2;
+ maintainers = with maintainers; [ izorkin ];
+ platforms = platforms.all;
+ };
+}