diff options
author | ajs124 <git@ajs124.de> | 2021-12-08 09:46:40 +0000 |
---|---|---|
committer | ajs124 <git@ajs124.de> | 2022-01-22 02:27:04 +0100 |
commit | 98c829527953fa9cbf0469fd769c44c1fba36490 (patch) | |
tree | b566afa02bd6e0615563db2b370432a84f0af638 /pkgs | |
parent | fc4148a47fa927319186061aa42633c8aa5777f1 (diff) | |
download | nixpkgs-98c829527953fa9cbf0469fd769c44c1fba36490.tar nixpkgs-98c829527953fa9cbf0469fd769c44c1fba36490.tar.gz nixpkgs-98c829527953fa9cbf0469fd769c44c1fba36490.tar.bz2 nixpkgs-98c829527953fa9cbf0469fd769c44c1fba36490.tar.lz nixpkgs-98c829527953fa9cbf0469fd769c44c1fba36490.tar.xz nixpkgs-98c829527953fa9cbf0469fd769c44c1fba36490.tar.zst nixpkgs-98c829527953fa9cbf0469fd769c44c1fba36490.zip |
mariadb: support multiple versions
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/servers/sql/mariadb/default.nix | 125 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 9 |
2 files changed, 81 insertions, 53 deletions
diff --git a/pkgs/servers/sql/mariadb/default.nix b/pkgs/servers/sql/mariadb/default.nix index 82fdc2a3a38..101e4609c50 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,40 @@ 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-mariabackup = nixosTests.mariadb-galera-mariabackup.${testVersion}; + mariadb-galera-rsync = nixosTests.mariadb-galera-rsync.${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 +157,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 +170,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 +195,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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9c387d041fd..a1f1db8459a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -21427,10 +21427,15 @@ with pkgs; asio = asio_1_10; }; - mariadb = callPackage ../servers/sql/mariadb { + inherit (callPackage ../servers/sql/mariadb { inherit (darwin) cctools; inherit (darwin.apple_sdk.frameworks) CoreServices; - }; + }) + mariadb_104 + mariadb_105 + mariadb_106 + ; + mariadb = mariadb_106; mongodb = hiPrio mongodb-3_4; |