python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / applications / misc / mysql-workbench / default.nix
blobbc6a4817087c1feb5ccea016d797e50ebf6dc7a8
1 { lib, stdenv
2 , fetchurl
3 , substituteAll
4 , cmake
5 , ninja
6 , pkg-config
7 , glibc
8 , gtk3
9 , gtkmm3
10 , pcre
11 , swig
12 , antlr4_9
13 , sudo
14 , mysql
15 , libxml2
16 , libmysqlconnectorcpp
17 , vsqlite
18 , gdal
19 , libiodbc
20 , libpthreadstubs
21 , libXdmcp
22 , libuuid
23 , libzip
24 , libsecret
25 , libssh
26 , python3
27 , jre
28 , boost
29 , libsigcxx
30 , libX11
31 , openssl
32 , rapidjson
33 , proj
34 , cairo
35 , libxkbcommon
36 , libepoxy
37 , wrapGAppsHook
38 , at-spi2-core
39 , dbus
40 , bash
41 , coreutils
42 , zstd
45 let
46   inherit (python3.pkgs) paramiko pycairo pyodbc;
47 in stdenv.mkDerivation rec {
48   pname = "mysql-workbench";
49   version = "8.0.30";
51   src = fetchurl {
52     url = "http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-${version}-src.tar.gz";
53     sha256 = "d094b391760948f42a3b879e8473040ae9bb26991eced482eb982a52c8ff8185";
54   };
56   patches = [
57     ./fix-gdal-includes.patch
59     (substituteAll {
60       src = ./hardcode-paths.patch;
61       catchsegv = "${glibc.bin}/bin/catchsegv";
62       bash = "${bash}/bin/bash";
63       cp = "${coreutils}/bin/cp";
64       dd = "${coreutils}/bin/dd";
65       ls = "${coreutils}/bin/ls";
66       mkdir = "${coreutils}/bin/mkdir";
67       nohup = "${coreutils}/bin/nohup";
68       rm = "${coreutils}/bin/rm";
69       rmdir = "${coreutils}/bin/rmdir";
70       stat = "${coreutils}/bin/stat";
71       sudo = "${sudo}/bin/sudo";
72     })
74     # Fix swig not being able to find headers
75     # https://github.com/NixOS/nixpkgs/pull/82362#issuecomment-597948461
76     (substituteAll {
77       src = ./fix-swig-build.patch;
78       cairoDev = "${cairo.dev}";
79     })
80   ];
82   # 1. have it look for 4.9.3 instead of 4.9.1
83   # 2. for some reason CMakeCache.txt is part of source code
84   preConfigure = ''
85     substituteInPlace CMakeLists.txt \
86       --replace "antlr-4.9.1-complete.jar" "antlr-4.9.3-complete.jar"
87     rm -f build/CMakeCache.txt
88   '';
90   nativeBuildInputs = [
91     cmake
92     ninja
93     pkg-config
94     jre
95     swig
96     wrapGAppsHook
97   ];
99   buildInputs = [
100     gtk3
101     gtkmm3
102     libX11
103     antlr4_9.runtime.cpp
104     python3
105     mysql
106     libxml2
107     libmysqlconnectorcpp
108     vsqlite
109     gdal
110     boost
111     libssh
112     openssl
113     rapidjson
114     libiodbc
115     pcre
116     cairo
117     libuuid
118     libzip
119     libsecret
120     libsigcxx
121     proj
123     # python dependencies:
124     paramiko
125     pycairo
126     pyodbc
127     # TODO: package sqlanydb and add it here
129     # transitive dependencies:
130     libpthreadstubs
131     libXdmcp
132     libxkbcommon
133     libepoxy
134     at-spi2-core
135     dbus
136     zstd
137   ];
139   postPatch = ''
140     patchShebangs tools/get_wb_version.sh
141   '';
143   # error: 'OGRErr OGRSpatialReference::importFromWkt(char**)' is deprecated
144   NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations";
146   cmakeFlags = [
147     "-DMySQL_CONFIG_PATH=${mysql}/bin/mysql_config"
148     "-DIODBC_CONFIG_PATH=${libiodbc}/bin/iodbc-config"
149     # mysql-workbench 8.0.21 depends on libmysqlconnectorcpp 1.1.8.
150     # Newer versions of connector still provide the legacy library when enabled
151     # but the headers are in a different location.
152     "-DWITH_ANTLR_JAR=${antlr4_9.jarLocation}"
153     "-DMySQLCppConn_INCLUDE_DIR=${libmysqlconnectorcpp}/include/jdbc"
154   ];
156   # There is already an executable and a wrapper in bindir
157   # No need to wrap both
158   dontWrapGApps = true;
160   preFixup = ''
161     gappsWrapperArgs+=(
162       --prefix PATH : "${python3}/bin"
163       --prefix PROJSO : "${proj}/lib/libproj.so"
164       --set PYTHONPATH $PYTHONPATH
165     )
166   '';
168   # Let’s wrap the programs not ending with bin
169   # until https://bugs.mysql.com/bug.php?id=91948 is fixed
170   postFixup = ''
171     find -L "$out/bin" -type f -executable -print0 \
172       | while IFS= read -r -d ''' file; do
173       if [[ "''${file}" != *-bin ]]; then
174         echo "Wrapping program $file"
175         wrapGApp "$file"
176       fi
177     done
178   '';
180   meta = with lib; {
181     description = "Visual MySQL database modeling, administration and querying tool";
182     longDescription = ''
183       MySQL Workbench is a modeling tool that allows you to design
184       and generate MySQL databases graphically. It also has administration
185       and query development modules where you can manage MySQL server instances
186       and execute SQL queries.
187     '';
189     homepage = "http://wb.mysql.com/";
190     license = licenses.gpl2;
191     maintainers = [ ];
192     platforms = platforms.linux;
193   };