anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / development / tools / mysql-shell / 8.nix
blob79f8f638c08c5d1d69d1f3199cbe6576ff44c36f
1 { lib
2 , stdenv
3 , pkg-config
4 , cmake
5 , fetchurl
6 , git
7 , cctools
8 , darwin
9 , makeWrapper
10 , bison
11 , openssl
12 , protobuf
13 , curl
14 , zlib
15 , libssh
16 , zstd
17 , lz4
18 , readline
19 , libtirpc
20 , rpcsvc-proto
21 , libedit
22 , libevent
23 , icu
24 , re2
25 , ncurses
26 , libfido2
27 , python3
28 , cyrus_sasl
29 , openldap
30 , antlr
33 let
34   pythonDeps = with python3.pkgs; [ certifi paramiko pyyaml ];
36   mysqlShellVersion = "8.4.3";
37   mysqlServerVersion = "8.4.3";
39 stdenv.mkDerivation (finalAttrs: {
40   pname = "mysql-shell";
41   version = mysqlShellVersion;
43   srcs = [
44     (fetchurl {
45       url = "https://dev.mysql.com/get/Downloads/MySQL-${lib.versions.majorMinor mysqlServerVersion}/mysql-${mysqlServerVersion}.tar.gz";
46       hash = "sha256-eslWTEeAIvcwBf+Ju7QPZ7OB/AbVUYQWvf/sdeYluBg=";
47     })
48     (fetchurl {
49       url = "https://dev.mysql.com/get/Downloads/MySQL-Shell/mysql-shell-${finalAttrs.version}-src.tar.gz";
50       hash = "sha256-rO+cAfQzUobMrTLGHRbaXsG+vMcjVTtDoZwmyok+dS4=";
51     })
52   ];
54   sourceRoot = "mysql-shell-${finalAttrs.version}-src";
56   postUnpack = ''
57     mv mysql-${mysqlServerVersion} mysql
58   '';
60   patches = [
61     # No openssl bundling on macOS. It's not working.
62     # See https://github.com/mysql/mysql-shell/blob/5b84e0be59fc0e027ef3f4920df15f7be97624c1/cmake/ssl.cmake#L53
63     ./no-openssl-bundling.patch
64   ];
66   postPatch = ''
67     substituteInPlace ../mysql/cmake/libutils.cmake --replace-fail /usr/bin/libtool libtool
68     substituteInPlace ../mysql/cmake/os/Darwin.cmake --replace-fail /usr/bin/libtool libtool
70     substituteInPlace cmake/libutils.cmake --replace-fail /usr/bin/libtool libtool
71   '';
73   nativeBuildInputs = [ pkg-config cmake git bison makeWrapper ]
74     ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ rpcsvc-proto ]
75     ++ lib.optionals stdenv.hostPlatform.isDarwin [ cctools darwin.DarwinTools ];
77   buildInputs = [
78     curl
79     libedit
80     libssh
81     lz4
82     openssl
83     protobuf
84     readline
85     zlib
86     zstd
87     libevent
88     icu
89     re2
90     ncurses
91     libfido2
92     cyrus_sasl
93     openldap
94     python3
95     antlr.runtime.cpp
96   ] ++ pythonDeps
97   ++ lib.optionals stdenv.hostPlatform.isLinux [ libtirpc ]
98   ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.libutil ];
100   preConfigure = ''
101     # Build MySQL
102     echo "Building mysqlclient mysqlxclient"
104     cmake -DWITH_SYSTEM_LIBS=ON -DWITH_FIDO=system -DWITH_ROUTER=OFF -DWITH_UNIT_TESTS=OFF \
105       -DFORCE_UNSUPPORTED_COMPILER=1 -S ../mysql -B ../mysql/build
107     cmake --build ../mysql/build --parallel ''${NIX_BUILD_CORES:-1} --target mysqlclient mysqlxclient
109     cmakeFlagsArray+=(
110       "-DMYSQL_SOURCE_DIR=''${NIX_BUILD_TOP}/mysql"
111       "-DMYSQL_BUILD_DIR=''${NIX_BUILD_TOP}/mysql/build"
112       "-DMYSQL_CONFIG_EXECUTABLE=''${NIX_BUILD_TOP}/mysql/build/scripts/mysql_config"
113       "-DWITH_ZSTD=system"
114       "-DWITH_LZ4=system"
115       "-DWITH_ZLIB=system"
116       "-DWITH_PROTOBUF=system"
117       "-DHAVE_PYTHON=1"
118     )
119   '';
121   postFixup = ''
122     wrapProgram $out/bin/mysqlsh --set PYTHONPATH "${lib.makeSearchPath python3.sitePackages pythonDeps}"
123   '';
125   meta = with lib; {
126     homepage = "https://dev.mysql.com/doc/mysql-shell/${lib.versions.majorMinor finalAttrs.version}/en/";
127     description = "New command line scriptable shell for MySQL";
128     license = licenses.gpl2;
129     maintainers = with maintainers; [ aaronjheng ];
130     mainProgram = "mysqlsh";
131   };