diff options
Diffstat (limited to 'pkgs/servers/sql')
-rw-r--r-- | pkgs/servers/sql/mariadb/default.nix | 124 | ||||
-rw-r--r-- | pkgs/servers/sql/postgresql/ext/pgvector.nix | 4 | ||||
-rw-r--r-- | pkgs/servers/sql/postgresql/ext/plv8.nix | 44 | ||||
-rw-r--r-- | pkgs/servers/sql/postgresql/packages.nix | 4 | ||||
-rw-r--r-- | pkgs/servers/sql/proxysql/default.nix | 4 |
5 files changed, 117 insertions, 63 deletions
diff --git a/pkgs/servers/sql/mariadb/default.nix b/pkgs/servers/sql/mariadb/default.nix index 82fdc2a3a38b6..3f1f3448dad8d 100644 --- a/pkgs/servers/sql/mariadb/default.nix +++ b/pkgs/servers/sql/mariadb/default.nix @@ -2,8 +2,8 @@ # Native buildInputs components , bison, boost, cmake, fixDarwinDylibNames, flex, makeWrapper, pkg-config # Common components -, curl, libiconv, ncurses, openssl, pcre2 -, libkrb5, liburing, systemd +, curl, libiconv, ncurses, openssl, pcre, pcre2 +, libkrb5, libaio, liburing, systemd , CoreServices, cctools, perl , jemalloc, less # Server components @@ -14,36 +14,37 @@ , withStorageRocks ? true }: -with lib; - let # in mariadb # spans the whole file libExt = stdenv.hostPlatform.extensions.sharedLibrary; mytopEnv = perl.withPackages (p: with p; [ DBDmysql DBI TermReadKey ]); -mariadb = server // { - inherit client; # MariaDB Client - server = server; # MariaDB Server +mariadbPackage = packageSettings: (server packageSettings) // { + client = client packageSettings; # MariaDB Client + server = server packageSettings; # MariaDB Server }; -common = rec { # attributes common to both builds - version = "10.6.5"; +commonOptions = packageSettings: rec { # attributes common to both builds + inherit (packageSettings) version; src = fetchurl { url = "https://downloads.mariadb.com/MariaDB/mariadb-${version}/source/mariadb-${version}.tar.gz"; - sha256 = "sha256-4L4EBCjZpCqLtL0iG1Z/8lIs1vqJBjhic9pPA8XCCo8="; + inherit (packageSettings) sha256; }; nativeBuildInputs = [ cmake pkg-config ] - ++ optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames - ++ optional (!stdenv.hostPlatform.isDarwin) makeWrapper; + ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames + ++ lib.optional (!stdenv.hostPlatform.isDarwin) makeWrapper; buildInputs = [ - curl libiconv ncurses openssl pcre2 zlib - ] ++ optionals stdenv.hostPlatform.isLinux [ libkrb5 liburing systemd ] - ++ optionals stdenv.hostPlatform.isDarwin [ CoreServices cctools perl ] - ++ optional (!stdenv.hostPlatform.isDarwin) [ jemalloc ]; + curl libiconv ncurses openssl zlib + ] ++ (packageSettings.extraBuildInputs or []) + ++ lib.optionals stdenv.hostPlatform.isLinux ([ libkrb5 systemd ] + ++ (if (lib.versionOlder version "10.6") then [ libaio ] else [ liburing ])) + ++ lib.optionals stdenv.hostPlatform.isDarwin [ CoreServices cctools perl ] + ++ lib.optional (!stdenv.hostPlatform.isDarwin) [ jemalloc ] + ++ (if (lib.versionOlder version "10.5") then [ pcre ] else [ pcre2 ]); prePatch = '' sed -i 's,[^"]*/var/log,/var/log,g' storage/mroonga/vendor/groonga/CMakeLists.txt @@ -54,7 +55,7 @@ common = rec { # attributes common to both builds ] # Fixes a build issue as documented on # https://jira.mariadb.org/browse/MDEV-26769?focusedCommentId=206073&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-206073 - ++ lib.optional (!stdenv.isLinux) ./patch/macos-MDEV-26769-regression-fix.patch; + ++ lib.optional (!stdenv.hostPlatform.isLinux && lib.versionAtLeast version "10.6") ./patch/macos-MDEV-26769-regression-fix.patch; cmakeFlags = [ "-DBUILD_CONFIG=mysql_release" @@ -86,7 +87,7 @@ common = rec { # attributes common to both builds "-DWITH_SAFEMALLOC=OFF" "-DWITH_UNIT_TESTS=OFF" "-DEMBEDDED_LIBRARY=OFF" - ] ++ optionals stdenv.hostPlatform.isDarwin [ + ] ++ lib.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. @@ -98,37 +99,39 @@ common = rec { # attributes common to both builds # 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,mariadb_config,mysql_config} + rm -f "$out"/bin/{mariadb-config,mariadb_config,mysql_config} rm -r $out/include rm -r $out/lib/pkgconfig ''; # perlPackages.DBDmysql is broken on darwin - postFixup = optionalString (!stdenv.hostPlatform.isDarwin) '' - wrapProgram $out/bin/mytop --set PATH ${makeBinPath [ less ncurses ]} + postFixup = lib.optionalString (!stdenv.hostPlatform.isDarwin) '' + wrapProgram $out/bin/mytop --set PATH ${lib.makeBinPath [ less ncurses ]} ''; - 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; + passthru.tests = let + testVersion = "mariadb_${builtins.replaceStrings ["."] [""] (lib.versions.majorMinor (packageSettings.version))}"; + in { + mariadb-galera-rsync = nixosTests.mariadb-galera.${testVersion}; + mysql = nixosTests.mysql.${testVersion}; + mysql-autobackup = nixosTests.mysql-autobackup.${testVersion}; + mysql-backup = nixosTests.mysql-backup.${testVersion}; + mysql-replication = nixosTests.mysql-replication.${testVersion}; }; - meta = { + meta = with lib; { description = "An enhanced, drop-in replacement for MySQL"; homepage = "https://mariadb.org/"; license = licenses.gpl2; - maintainers = with maintainers; [ thoughtpolice ]; + maintainers = with maintainers; [ thoughtpolice ajs124 das_j ]; platforms = platforms.all; }; }; -client = stdenv.mkDerivation (common // { +client = packageSettings: let + common = commonOptions packageSettings; + +in stdenv.mkDerivation (common // { pname = "mariadb-client"; outputs = [ "out" "man" ]; @@ -153,7 +156,10 @@ client = stdenv.mkDerivation (common // { ''; }); -server = stdenv.mkDerivation (common // { +server = packageSettings: let + common = commonOptions packageSettings; + +in stdenv.mkDerivation (common // { pname = "mariadb-server"; outputs = [ "out" "man" ]; @@ -163,11 +169,11 @@ server = stdenv.mkDerivation (common // { buildInputs = common.buildInputs ++ [ bzip2 lz4 lzo snappy xz zstd cracklib judy libevent libxml2 - ] ++ optional (stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32) numactl - ++ optionals stdenv.hostPlatform.isLinux [ linux-pam ] - ++ optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64) pmdk.dev - ++ optional (!stdenv.hostPlatform.isDarwin) mytopEnv - ++ optionals withStorageMroonga [ kytea libsodium msgpack zeromq ]; + ] ++ lib.optional (stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32) numactl + ++ lib.optionals stdenv.hostPlatform.isLinux [ linux-pam ] + ++ lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64) pmdk.dev + ++ lib.optional (!stdenv.hostPlatform.isDarwin) mytopEnv + ++ lib.optionals withStorageMroonga [ kytea libsodium msgpack zeromq ]; patches = common.patches; @@ -188,38 +194,54 @@ server = stdenv.mkDerivation (common // { "-DWITHOUT_EXAMPLE=1" "-DWITHOUT_FEDERATED=1" "-DWITHOUT_TOKUDB=1" - ] ++ optional (stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32) [ + ] ++ lib.optional (stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32) [ "-DWITH_NUMA=ON" - ] ++ optional (!withStorageMroonga) [ + ] ++ lib.optional (!withStorageMroonga) [ "-DWITHOUT_MROONGA=1" - ] ++ optional (!withStorageRocks) [ + ] ++ lib.optional (!withStorageRocks) [ "-DWITHOUT_ROCKSDB=1" - ] ++ optional (!stdenv.hostPlatform.isDarwin && withStorageRocks) [ + ] ++ lib.optional (!stdenv.hostPlatform.isDarwin && withStorageRocks) [ "-DWITH_ROCKSDB_JEMALLOC=ON" - ] ++ optional (!stdenv.hostPlatform.isDarwin) [ + ] ++ lib.optional (!stdenv.hostPlatform.isDarwin) [ "-DWITH_JEMALLOC=yes" - ] ++ optionals stdenv.hostPlatform.isDarwin [ + ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ "-DPLUGIN_AUTH_PAM=OFF" "-DWITHOUT_OQGRAPH=1" "-DWITHOUT_PLUGIN_S3=1" ]; - preConfigure = optionalString (!stdenv.hostPlatform.isDarwin) '' + preConfigure = lib.optionalString (!stdenv.hostPlatform.isDarwin) '' patchShebangs scripts/mytop.sh ''; postInstall = common.postInstall + '' rm -r "$out"/share/aclocal chmod +x "$out"/bin/wsrep_sst_common - rm "$out"/bin/{mariadb-client-test,mariadb-test,mysql_client_test,mysqltest} - '' + optionalString withStorageMroonga '' + rm -f "$out"/bin/{mariadb-client-test,mariadb-test,mysql_client_test,mysqltest} + '' + lib.optionalString withStorageMroonga '' mv "$out"/share/{groonga,groonga-normalizer-mysql} "$out"/share/doc/mysql - '' + optionalString (!stdenv.hostPlatform.isDarwin) '' + '' + lib.optionalString (!stdenv.hostPlatform.isDarwin && lib.versionAtLeast common.version "10.4") '' 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 ''; - CXXFLAGS = optionalString stdenv.hostPlatform.isi686 "-fpermissive"; + CXXFLAGS = lib.optionalString stdenv.hostPlatform.isi686 "-fpermissive"; }); -in mariadb +in { + mariadb_104 = mariadbPackage { + # Supported until 2024-06-18 + version = "10.4.22"; + sha256 = "000ca1hdnj2jg051cjgdd2ralgwgh2p8nwb1x6b85202xdpc7ga4"; + }; + mariadb_105 = mariadbPackage { + # Supported until 2025-06-24 + version = "10.5.13"; + sha256 = "0n0w1pyypv6wsknaqyykj3lc9zv6smji4q5jcf90w4rid330iw0n"; + }; + mariadb_106 = mariadbPackage { + # Supported until 2026-07 + version = "10.6.5"; + sha256 = "13qaqb2h6kysfdi3h1l9zbb2qlpjgxb1n8mxnj5jm96r50209gp0"; + }; +} diff --git a/pkgs/servers/sql/postgresql/ext/pgvector.nix b/pkgs/servers/sql/postgresql/ext/pgvector.nix index c1bd999ebf558..d2a783354f49b 100644 --- a/pkgs/servers/sql/postgresql/ext/pgvector.nix +++ b/pkgs/servers/sql/postgresql/ext/pgvector.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "pgvector"; - version = "0.2.0"; + version = "0.2.2"; src = fetchFromGitHub { owner = "ankane"; repo = pname; rev = "v${version}"; - sha256 = "1jl6rpys24qxhkv3q798pp9v03z2z7gswivp19yria9xr3bg6wjv"; + sha256 = "sha256-rdhmdfxRK4rdgGsv8Rdokm46N/+S3ZwArkW5eJTQGsY="; }; buildInputs = [ postgresql ]; diff --git a/pkgs/servers/sql/postgresql/ext/plv8.nix b/pkgs/servers/sql/postgresql/ext/plv8.nix index 6f5411340e457..eaf9c389e926a 100644 --- a/pkgs/servers/sql/postgresql/ext/plv8.nix +++ b/pkgs/servers/sql/postgresql/ext/plv8.nix @@ -1,6 +1,8 @@ -{ lib, stdenv, fetchFromGitHub, v8, perl, postgresql }: +{ lib, stdenv, fetchFromGitHub, v8, perl, postgresql +# For test +, runCommand, coreutils, gnugrep }: -stdenv.mkDerivation rec { +let self = stdenv.mkDerivation rec { pname = "plv8"; version = "3.0.0"; @@ -29,6 +31,8 @@ stdenv.mkDerivation rec { ]; preConfigure = '' + # We build V8 as a monolith, so this is unnecessary. + substituteInPlace Makefile.shared --replace "-lv8_libplatform" "" patchShebangs ./generate_upgrade.sh substituteInPlace generate_upgrade.sh \ --replace " 2.3.10)" " 2.3.10 2.3.11 2.3.12 2.3.13 2.3.14 2.3.15)" @@ -42,10 +46,36 @@ stdenv.mkDerivation rec { rmdir "$out/nix/store"/* "$out/nix/store" "$out/nix" ''; - # Without this, PostgreSQL will crash at runtime. - # The flags are only included in Makefile, not Makefile.shared. - # https://github.com/plv8/plv8/pull/469 - NIX_CFLAGS_COMPILE = "-DJSONB_DIRECT_CONVERSION -DV8_COMPRESS_POINTERS=1 -DV8_31BIT_SMIS_ON_64BIT_ARCH=1"; + NIX_CFLAGS_COMPILE = [ + # V8 depends on C++14. + "-std=c++14" + # Without this, PostgreSQL will crash at runtime. + # The flags are only included in Makefile, not Makefile.shared. + # https://github.com/plv8/plv8/pull/469 + "-DJSONB_DIRECT_CONVERSION" "-DV8_COMPRESS_POINTERS=1" "-DV8_31BIT_SMIS_ON_64BIT_ARCH=1" + ]; + + passthru.tests.smoke = runCommand "${pname}-test" {} '' + export PATH=${lib.makeBinPath [ (postgresql.withPackages (_: [self])) coreutils gnugrep ]} + db="$PWD/testdb" + initdb "$db" + postgres -k "$db" -D "$db" & + pid="$!" + + for i in $(seq 1 100); do + if psql -h "$db" -d postgres -c "" 2>/dev/null; then + break + elif ! kill -0 "$pid"; then + exit 1 + else + sleep 0.1 + fi + done + + psql -h "$db" -d postgres -c 'CREATE EXTENSION plv8; DO $$ plv8.elog(NOTICE, plv8.version); $$ LANGUAGE plv8;' 2> "$out" + grep -q "${version}" "$out" + kill -0 "$pid" + ''; meta = with lib; { description = "V8 Engine Javascript Procedural Language add-on for PostgreSQL"; @@ -54,4 +84,4 @@ stdenv.mkDerivation rec { platforms = [ "x86_64-linux" ]; license = licenses.postgresql; }; -} +}; in self diff --git a/pkgs/servers/sql/postgresql/packages.nix b/pkgs/servers/sql/postgresql/packages.nix index e751ae621f32d..f3df8a99ca227 100644 --- a/pkgs/servers/sql/postgresql/packages.nix +++ b/pkgs/servers/sql/postgresql/packages.nix @@ -26,7 +26,9 @@ self: super: { plr = super.callPackage ./ext/plr.nix { }; - plv8 = super.callPackage ./ext/plv8.nix { }; + plv8 = super.callPackage ./ext/plv8.nix { + v8 = self.v8_8_x; + }; pgjwt = super.callPackage ./ext/pgjwt.nix { }; diff --git a/pkgs/servers/sql/proxysql/default.nix b/pkgs/servers/sql/proxysql/default.nix index 078ebfb7b6e4f..142dfe29fa226 100644 --- a/pkgs/servers/sql/proxysql/default.nix +++ b/pkgs/servers/sql/proxysql/default.nix @@ -25,7 +25,7 @@ , pcre , perl , prometheus-cpp -, python +, python2 , re2 , zlib }: @@ -56,7 +56,7 @@ stdenv.mkDerivation rec { cmake libtool perl - python + python2 ]; buildInputs = [ |