diff options
Diffstat (limited to 'pkgs/servers/sql')
-rw-r--r-- | pkgs/servers/sql/mariadb/cmake-includedir.patch | 11 | ||||
-rw-r--r-- | pkgs/servers/sql/mariadb/default.nix | 74 | ||||
-rw-r--r-- | pkgs/servers/sql/mysql/5.5.x.nix | 12 | ||||
-rw-r--r-- | pkgs/servers/sql/mysql/5.7.x.nix | 27 |
4 files changed, 94 insertions, 30 deletions
diff --git a/pkgs/servers/sql/mariadb/cmake-includedir.patch b/pkgs/servers/sql/mariadb/cmake-includedir.patch new file mode 100644 index 000000000000..0c4fe7d321e2 --- /dev/null +++ b/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/pkgs/servers/sql/mariadb/default.nix b/pkgs/servers/sql/mariadb/default.nix index d6731a5b7dc3..66125b353783 100644 --- a/pkgs/servers/sql/mariadb/default.nix +++ b/pkgs/servers/sql/mariadb/default.nix @@ -11,24 +11,18 @@ let # in mariadb # spans the whole file mariadb = everything // { inherit client; # libmysqlclient.so in .out, necessary headers in .dev and utils in .bin server = everything; # a full single-output build, including everything in `client` again - lib = client; # compat. with the old mariadb split + inherit connector-c; # libmysqlclient.so }; common = rec { # attributes common to both builds - version = "10.1.28"; + version = "10.2.11"; src = fetchurl { url = "https://downloads.mariadb.org/f/mariadb-${version}/source/mariadb-${version}.tar.gz/from/http%3A//ftp.hosteurope.de/mirror/archive.mariadb.org/?serve"; - sha256 = "1g9b0c04qhgcgw6xw29bvdjjjacr7kn82crc7apvvi10ykzwhb99"; + sha256 = "1s53ravbrxcc8ixvkm56rwgs3cfifzngc56pidd1f1dr1n0mlmb3"; name = "mariadb-${version}.tar.gz"; }; - prePatch = '' - substituteInPlace cmake/libutils.cmake \ - --replace /usr/bin/libtool libtool - sed -i 's,[^"]*/var/log,/var/log,g' storage/mroonga/vendor/groonga/CMakeLists.txt - ''; - nativeBuildInputs = [ cmake pkgconfig ]; buildInputs = [ @@ -36,6 +30,12 @@ common = rec { # attributes common to both builds ] ++ stdenv.lib.optionals stdenv.isLinux [ libaio systemd ] ++ stdenv.lib.optionals stdenv.isDarwin [ perl fixDarwinDylibNames cctools CoreServices ]; + 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" @@ -72,7 +72,7 @@ common = rec { # attributes common to both builds find "''${!outputBin}/bin" -name '*test*' -delete ''; - passthru.mysqlVersion = "5.6"; + passthru.mysqlVersion = "5.7"; meta = with stdenv.lib; { description = "An enhanced, drop-in replacement for MySQL"; @@ -83,7 +83,6 @@ common = rec { # attributes common to both builds }; }; - client = stdenv.mkDerivation (common // { name = "mariadb-client-${common.version}"; @@ -97,21 +96,23 @@ client = stdenv.mkDerivation (common // { preConfigure = common.preConfigure + '' cmakeFlags="$cmakeFlags \ - -DINSTALL_BINDIR=$bin/bin -DINSTALL_SCRIPTDIR=$bin/bin \ + -DINSTALL_BINDIR=$bin/bin \ + -DINSTALL_SCRIPTDIR=$bin/bin \ -DINSTALL_SUPPORTFILESDIR=$bin/share/mysql \ - -DINSTALL_DOCDIR=$bin/share/doc/mysql -DINSTALL_DOCREADMEDIR=$bin/share/doc/mysql \ + -DINSTALL_DOCDIR=$bin/share/doc/mysql \ + -DINSTALL_DOCREADMEDIR=$bin/share/doc/mysql \ " ''; # prevent cycle; it needs to reference $dev postInstall = common.postInstall + '' moveToOutput bin/mysql_config "$dev" + moveToOutput bin/mariadb_config "$dev" ''; enableParallelBuilding = true; # the client should be OK }); - everything = stdenv.mkDerivation (common // { name = "mariadb-${common.version}"; @@ -120,9 +121,7 @@ everything = stdenv.mkDerivation (common // { buildInputs = common.buildInputs ++ [ xz lzo lz4 bzip2 snappy libxml2 boost judy libevent cracklib - ] - ++ optionals (stdenv.isLinux && !stdenv.isArm) [ numactl ] - ; + ] ++ optionals (stdenv.isLinux && !stdenv.isArm) [ numactl ]; cmakeFlags = common.cmakeFlags ++ [ "-DMYSQL_DATADIR=/var/lib/mysql" @@ -155,10 +154,45 @@ everything = stdenv.mkDerivation (common // { postInstall = common.postInstall + '' rm -r "$out"/{mysql-test,sql-bench,data} # Don't need testing data rm "$out"/share/man/man1/mysql-test-run.pl.1 - - # Don't install mysqlbug to prevent a dependency on gcc. - rm $out/bin/mysqlbug + rm "$out"/bin/rcmysql ''; + + CXXFLAGS = optionalString stdenv.isi686 "-fpermissive"; }); +connector-c = stdenv.mkDerivation rec { + name = "mariadb-connector-c-${version}"; + version = "2.3.4"; + + src = fetchurl { + url = "https://downloads.mariadb.org/interstitial/connector-c-${version}/mariadb-connector-c-${version}-src.tar.gz/from/http%3A//ftp.hosteurope.de/mirror/archive.mariadb.org/?serve"; + sha256 = "1g1sq5knarxkfhpkcczr6qxmq12pid65cdkqnhnfs94av89hbswb"; + name = "mariadb-connector-c-${version}-src.tar.gz"; + }; + + # outputs = [ "dev" "out" ]; FIXME: cmake variables don't allow that < 3.0 + cmakeFlags = [ + "-DWITH_EXTERNAL_ZLIB=ON" + "-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock" + ]; + + nativeBuildInputs = [ cmake ]; + propagatedBuildInputs = [ openssl zlib ]; + + enableParallelBuilding = true; + + postFixup = '' + ln -sv mariadb_config $out/bin/mysql_config + ln -sv mariadb $out/lib/mysql + ln -sv mariadb $out/include/mysql + ''; + + meta = with stdenv.lib; { + description = "Client library that can be used to connect to MySQL or MariaDB"; + license = licenses.lgpl21; + maintainers = with maintainers; [ globin ]; + platforms = platforms.all; + }; +}; + in mariadb diff --git a/pkgs/servers/sql/mysql/5.5.x.nix b/pkgs/servers/sql/mysql/5.5.x.nix index 28e7824cd423..8f6ccd8c0d5b 100644 --- a/pkgs/servers/sql/mysql/5.5.x.nix +++ b/pkgs/servers/sql/mysql/5.5.x.nix @@ -3,7 +3,8 @@ # Note: zlib is not required; MySQL can use an internal zlib. -stdenv.mkDerivation rec { +let +self = stdenv.mkDerivation rec { name = "mysql-${version}"; version = "5.5.58"; @@ -59,11 +60,16 @@ stdenv.mkDerivation rec { rm $out/share/man/man1/mysql-test-run.pl.1 ''; - passthru.mysqlVersion = "5.5"; + passthru = { + client = self; + connector-c = self; + server = self; + mysqlVersion = "5.5"; + }; meta = { homepage = http://www.mysql.com/; description = "The world's most popular open source database"; platforms = stdenv.lib.platforms.unix; }; -} +}; in self diff --git a/pkgs/servers/sql/mysql/5.7.x.nix b/pkgs/servers/sql/mysql/5.7.x.nix index 687993e0dc57..0b2778218760 100644 --- a/pkgs/servers/sql/mysql/5.7.x.nix +++ b/pkgs/servers/sql/mysql/5.7.x.nix @@ -3,7 +3,8 @@ # Note: zlib is not required; MySQL can use an internal zlib. -stdenv.mkDerivation rec { +let +self = stdenv.mkDerivation rec { name = "mysql-${version}"; version = "5.7.20"; @@ -22,15 +23,20 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; + outputs = [ "out" "static" ]; + cmakeFlags = [ "-DWITH_SSL=yes" - "-DWITH_READLINE=yes" "-DWITH_EMBEDDED_SERVER=yes" + "-DWITH_UNITTEST=no" "-DWITH_ZLIB=yes" + "-DWITH_ARCHIVE_STORAGE_ENGINE=yes" + "-DWITH_BLACKHOLE_STORAGE_ENGINE=yes" + "-DWITH_FEDERATED_STORAGE_ENGINE=yes" + "-DCMAKE_VERBOSE_MAKEFILE=yes" "-DHAVE_IPV6=yes" "-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock" "-DMYSQL_DATADIR=/var/lib/mysql" - "-DINSTALL_SYSCONFDIR=etc/mysql" "-DINSTALL_INFODIR=share/mysql/docs" "-DINSTALL_MANDIR=share/man" "-DINSTALL_PLUGINDIR=lib/mysql/plugin" @@ -50,15 +56,22 @@ stdenv.mkDerivation rec { ''; postInstall = '' sed -i -e "s|basedir=\"\"|basedir=\"$out\"|" $out/bin/mysql_install_db - rm -r $out/mysql-test "$out"/lib/*.a - rm $out/share/man/man1/mysql-test-run.pl.1 + install -vD $out/lib/*.a -t $static/lib + rm -r $out/mysql-test + rm $out/share/man/man1/mysql-test-run.pl.1 $out/lib/*.a + ln -s libmysqlclient.so $out/lib/libmysqlclient_r.so ''; - passthru.mysqlVersion = "5.7"; + passthru = { + client = self; + connector-c = self; + server = self; + mysqlVersion = "5.7"; + }; meta = { homepage = http://www.mysql.com/; description = "The world's most popular open source database"; platforms = stdenv.lib.platforms.unix; }; -} +}; in self |