mysql80: init at 8.0.17 (#65221)

MySQL 8.0 is a significant iteration after MySQL 5.7. This patch adds it as
a parallel build alongside mysql57 (similar to mysql56 and mysql55 before).

authored by Tim Otten and committed by Orivej Desh (NixOS) dae42566 a3bf0c2e

+102
+73
pkgs/servers/sql/mysql/8.0.x.nix
··· 1 + { lib, stdenv, fetchurl, bison, cmake, pkgconfig 2 + , boost, icu, libedit, libevent, lz4, ncurses, openssl, protobuf, re2, readline, zlib 3 + , numactl, perl, cctools, CoreServices, developer_cmds 4 + }: 5 + 6 + let 7 + self = stdenv.mkDerivation rec { 8 + name = "mysql-8.0.17"; 9 + 10 + src = fetchurl { 11 + url = "https://dev.mysql.com/get/Downloads/MySQL-${self.mysqlVersion}/${name}.tar.gz"; 12 + sha256 = "1mjrlxn8vigi69r0r674j2dibdnkaar01ji5965gsyx7k60z7qy6"; 13 + }; 14 + 15 + patches = [ 16 + ./abi-check.patch 17 + ./libutils.patch 18 + ]; 19 + 20 + nativeBuildInputs = [ bison cmake pkgconfig ]; 21 + 22 + buildInputs = [ 23 + boost icu libedit libevent lz4 ncurses openssl protobuf re2 readline zlib 24 + ] ++ lib.optionals stdenv.isLinux [ 25 + numactl 26 + ] ++ lib.optionals stdenv.isDarwin [ 27 + cctools CoreServices developer_cmds 28 + ]; 29 + 30 + outputs = [ "out" "static" ]; 31 + 32 + cmakeFlags = [ 33 + "-DCMAKE_OSX_DEPLOYMENT_TARGET=10.12" # For std::shared_timed_mutex. 34 + "-DCMAKE_SKIP_BUILD_RPATH=OFF" # To run libmysql/libmysql_api_test during build. 35 + "-DFORCE_UNSUPPORTED_COMPILER=1" # To configure on Darwin. 36 + "-DWITH_ROUTER=OFF" # It may be packaged separately. 37 + "-DWITH_SYSTEM_LIBS=ON" 38 + "-DWITH_UNIT_TESTS=OFF" 39 + "-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock" 40 + "-DMYSQL_DATADIR=/var/lib/mysql" 41 + "-DINSTALL_INFODIR=share/mysql/docs" 42 + "-DINSTALL_MANDIR=share/man" 43 + "-DINSTALL_PLUGINDIR=lib/mysql/plugin" 44 + "-DINSTALL_INCLUDEDIR=include/mysql" 45 + "-DINSTALL_DOCREADMEDIR=share/mysql" 46 + "-DINSTALL_SUPPORTFILESDIR=share/mysql" 47 + "-DINSTALL_MYSQLSHAREDIR=share/mysql" 48 + "-DINSTALL_MYSQLTESTDIR=" 49 + "-DINSTALL_DOCDIR=share/mysql/docs" 50 + "-DINSTALL_SHAREDIR=share/mysql" 51 + ]; 52 + 53 + postInstall = '' 54 + moveToOutput "lib/*.a" $static 55 + so=${stdenv.hostPlatform.extensions.sharedLibrary} 56 + ln -s libmysqlclient$so $out/lib/libmysqlclient_r$so 57 + ''; 58 + 59 + passthru = { 60 + client = self; 61 + connector-c = self; 62 + server = self; 63 + mysqlVersion = "8.0"; 64 + }; 65 + 66 + meta = with lib; { 67 + homepage = "https://www.mysql.com/"; 68 + description = "The world's most popular open source database"; 69 + license = licenses.gpl2; 70 + maintainers = with maintainers; [ orivej ]; 71 + platforms = platforms.unix; 72 + }; 73 + }; in self
+18
pkgs/servers/sql/mysql/abi-check.patch
··· 1 + MySQL ABI check assumes that with -nostdinc any standard #include terminates 2 + preprocessing, but we do not provide that: 3 + https://github.com/NixOS/nixpkgs/issues/44530 4 + 5 + "#error" does not terminate preprocessing, so we #include a non-existent file instead. 6 + 7 + --- a/cmake/do_abi_check.cmake 8 + +++ b/cmake/do_abi_check.cmake 9 + @@ -68,1 +68,1 @@ FOREACH(file ${ABI_HEADERS}) 10 + - -E -nostdinc -dI -DMYSQL_ABI_CHECK -I${SOURCE_DIR}/include 11 + + -E -nostdinc -dI -DMYSQL_ABI_CHECK -I${SOURCE_DIR}/include/nostdinc -I${SOURCE_DIR}/include 12 + @@ -74,1 +74,1 @@ FOREACH(file ${ABI_HEADERS}) 13 + - COMMAND sed -e "/^# /d" 14 + + COMMAND sed -e "/^# /d" -e "/^#include <-nostdinc>$/d" 15 + --- /dev/null 16 + +++ b/include/nostdinc/stdint.h 17 + @@ -0,0 +1,1 @@ 18 + +#include <-nostdinc>
+5
pkgs/servers/sql/mysql/libutils.patch
··· 1 + --- a/cmake/libutils.cmake 2 + +++ b/cmake/libutils.cmake 3 + @@ -345 +345 @@ MACRO(MERGE_CONVENIENCE_LIBRARIES) 4 + - COMMAND /usr/bin/libtool -static -o $<TARGET_FILE:${TARGET}> 5 + + COMMAND libtool -static -o $<TARGET_FILE:${TARGET}>
+6
pkgs/top-level/all-packages.nix
··· 14790 14790 boost = boost159; 14791 14791 }; 14792 14792 14793 + mysql80 = callPackage ../servers/sql/mysql/8.0.x.nix { 14794 + inherit (darwin) cctools developer_cmds; 14795 + inherit (darwin.apple_sdk.frameworks) CoreServices; 14796 + boost = boost169; # Configure checks for specific version. 14797 + }; 14798 + 14793 14799 mysql_jdbc = callPackage ../servers/sql/mysql/jdbc { }; 14794 14800 14795 14801 mssql_jdbc = callPackage ../servers/sql/mssql/jdbc { };