Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / tools / mysql-shell / innovation.nix
blobe7a12deb3ee40950e055fd2a7889814d99a795c2
1 { lib
2 , stdenv
3 , pkg-config
4 , cmake
5 , fetchurl
6 , git
7 , cctools
8 , DarwinTools
9 , makeWrapper
10 , CoreServices
11 , bison
12 , openssl
13 , protobuf
14 , curl
15 , zlib
16 , libssh
17 , zstd
18 , lz4
19 , boost
20 , readline
21 , libtirpc
22 , rpcsvc-proto
23 , libedit
24 , libevent
25 , icu
26 , re2
27 , ncurses
28 , libfido2
29 , python3
30 , cyrus_sasl
31 , openldap
32 , antlr
35 let
36   pythonDeps = with python3.pkgs; [ certifi paramiko pyyaml ];
38   mysqlShellVersion = "8.2.0";
39   mysqlServerVersion = "8.2.0";
41 stdenv.mkDerivation (finalAttrs: {
42   pname = "mysql-shell-innovation";
43   version = mysqlShellVersion;
45   srcs = [
46     (fetchurl {
47       url = "https://cdn.mysql.com//Downloads/MySQL-${lib.versions.majorMinor mysqlServerVersion}/mysql-${mysqlServerVersion}.tar.gz";
48       hash = "sha256-itPj8cWuIVS+Y4rPVW6JgfcC0FKsxZV+d23xciwhGXk=";
49     })
50     (fetchurl {
51       url = "https://cdn.mysql.com//Downloads/MySQL-Shell/mysql-shell-${finalAttrs.version}-src.tar.gz";
52       hash = "sha256-kuRo+3vcDtc9aOgAuxJTy0e6E85iOFfCx/ZHtrNg08k=";
53     })
54   ];
56   sourceRoot = "mysql-shell-${finalAttrs.version}-src";
58   postUnpack = ''
59     mv mysql-${mysqlServerVersion} mysql
60   '';
62   postPatch = ''
63     substituteInPlace ../mysql/cmake/libutils.cmake --replace /usr/bin/libtool libtool
64     substituteInPlace ../mysql/cmake/os/Darwin.cmake --replace /usr/bin/libtool libtool
66     substituteInPlace cmake/libutils.cmake --replace /usr/bin/libtool libtool
67   '';
69   nativeBuildInputs = [ pkg-config cmake git bison makeWrapper ]
70     ++ lib.optionals (!stdenv.isDarwin) [ rpcsvc-proto ]
71     ++ lib.optionals stdenv.isDarwin [ cctools DarwinTools ];
73   buildInputs = [
74     boost
75     curl
76     libedit
77     libssh
78     lz4
79     openssl
80     protobuf
81     readline
82     zlib
83     zstd
84     libevent
85     icu
86     re2
87     ncurses
88     libfido2
89     cyrus_sasl
90     openldap
91     python3
92     antlr.runtime.cpp
93   ] ++ pythonDeps
94   ++ lib.optionals stdenv.isLinux [ libtirpc ]
95   ++ lib.optionals stdenv.isDarwin [ CoreServices ];
97   preConfigure = ''
98     # Build MySQL
99     echo "Building mysqlclient mysqlxclient"
101     cmake -DWITH_BOOST=system -DWITH_SYSTEM_LIBS=ON -DWITH_ROUTER=OFF -DWITH_UNIT_TESTS=OFF \
102       -DFORCE_UNSUPPORTED_COMPILER=1 -S ../mysql -B ../mysql/build
104     cmake --build ../mysql/build --parallel ''${NIX_BUILD_CORES:-1} --target mysqlclient mysqlxclient
105   '';
107   cmakeFlags = [
108     "-DMYSQL_SOURCE_DIR=../mysql"
109     "-DMYSQL_BUILD_DIR=../mysql/build"
110     "-DMYSQL_CONFIG_EXECUTABLE=../../mysql/build/scripts/mysql_config"
111     "-DWITH_ZSTD=system"
112     "-DWITH_LZ4=system"
113     "-DWITH_ZLIB=system"
114     "-DWITH_PROTOBUF=${protobuf}"
115     "-DHAVE_PYTHON=1"
116   ];
118   postFixup = ''
119     wrapProgram $out/bin/mysqlsh --set PYTHONPATH "${lib.makeSearchPath python3.sitePackages pythonDeps}"
120   '';
122   meta = with lib; {
123     homepage = "https://dev.mysql.com/doc/mysql-shell/${lib.versions.majorMinor finalAttrs.version}/en/";
124     description = "A new command line scriptable shell for MySQL";
125     license = licenses.gpl2;
126     maintainers = with maintainers; [ aaronjheng ];
127     mainProgram = "mysqlsh";
128   };