about summary refs log tree commit diff
path: root/pkgs/applications/misc/mysql-workbench/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/misc/mysql-workbench/default.nix')
-rw-r--r--pkgs/applications/misc/mysql-workbench/default.nix76
1 files changed, 76 insertions, 0 deletions
diff --git a/pkgs/applications/misc/mysql-workbench/default.nix b/pkgs/applications/misc/mysql-workbench/default.nix
new file mode 100644
index 0000000000000..0f3b3f2bb5fdb
--- /dev/null
+++ b/pkgs/applications/misc/mysql-workbench/default.nix
@@ -0,0 +1,76 @@
+{ stdenv, fetchurl, makeWrapper, autoconf, automake, boost, file, gettext
+, glib, glibc, gnome_keyring, gtk, gtkmm, intltool, libctemplate, libglade
+, libgnome, libsigcxx, libtool, libuuid, libxml2, libzip, lua, mesa, mysql
+, pango, paramiko, pcre, pexpect, pkgconfig, python, sqlite
+}:
+
+stdenv.mkDerivation rec {
+  name = "mysql-workbench";
+  version = "5.2.27";
+
+  src = fetchurl {
+    url = "http://mirror.services.wisc.edu/mysql/Downloads/MySQLGUITools/mysql-workbench-gpl-${version}.tar.gz";
+    sha256 = "01l15f9nvcpcsb56r7qb39jjlknh0dkj5iwfg1pj5bm12pbligng";
+  };
+
+  buildInputs = [ autoconf automake boost file gettext glib glibc gnome_keyring gtk gtkmm intltool
+    libctemplate libglade libgnome libsigcxx libtool libuuid libxml2 libzip lua makeWrapper mesa
+    mysql paramiko pcre pexpect pkgconfig python sqlite ];
+
+  preConfigure = ''
+    substituteInPlace $(pwd)/frontend/linux/workbench/mysql-workbench.in --replace "catchsegv" "${glibc}/bin/catchsegv"
+
+    ./autogen.sh --prefix=$out
+  '';
+
+  postInstall = ''
+    wrapProgram "$out/bin/mysql-workbench-bin" \
+      --prefix LD_LIBRARY_PATH : "${python}/lib" \
+      --prefix LD_LIBRARY_PATH : "$(cat ${stdenv.gcc}/nix-support/orig-gcc)/lib64" \
+      --prefix PATH : "${gnome_keyring}/bin" \
+      --set PYTHONPATH $PYTHONPATH \
+      --run '
+# The gnome-keyring-daemon must be running.  To allow for environments like
+# kde, xfce where this is not so, we start it first.
+# It is cleaned up using a supervisor subshell which detects that
+# the parent has finished via the closed pipe as terminate signal idiom,
+# used because we cannot clean up after ourselves due to the exec call.
+
+# Start gnome-keyring-daemon, export the environment variables it asks us to set.
+for expr in $( gnome-keyring-daemon --components=ssh,pkcs11 --start ) ; do eval "export "$expr ; done
+
+# Prepare fifo pipe.
+FIFOCTL="/tmp/gnome-keyring-daemon-ctl.$$.fifo"
+[ -p $FIFOCTL ] && rm $FIFOCTL
+mkfifo $FIFOCTL
+
+# Supervisor subshell waits reading from pipe, will receive EOF when parent
+# closes pipe on termination.  Negate read with ! operator to avoid subshell
+# quitting when read EOF returns 1 due to -e option being set.
+(
+    exec 19< $FIFOCTL
+    ! read -u 19
+
+    kill $GNOME_KEYRING_PID
+    rm $FIFOCTL
+) &
+
+exec 19> $FIFOCTL
+            ' 
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A MySQL visual database modeling, administration and querying tool.";
+    longDescription = ''
+      MySQL Workbench is a modeling tool that allows you to design
+      and generate MySQL databases graphically. It also has administration
+      and query development modules where you can manage MySQL server instances
+      and execute SQL queries.
+    '';
+
+    homepage = http://wb.mysql.com/;
+    license = licenses.gpl2;
+    maintainers = [ maintainers.kkallio ];
+    platforms = platforms.linux;
+  };
+}