From 0a7f2849f6cc9eaa5701c9030995c1f241a4ba16 Mon Sep 17 00:00:00 2001
From: Karn Kallio <kkal...@eka.(none)>
Date: Thu, 16 Sep 2010 22:40:43 -0430
Subject: [PATCH 3/3] Add Nix expression for MySQL Workbench.

A GUI database administration/query client for MySQL.
---
 pkgs/applications/misc/mysql-workbench/default.nix |  133 ++++++++++++++++++++
 pkgs/top-level/all-packages.nix                    |    7 +
 2 files changed, 140 insertions(+), 0 deletions(-)
 create mode 100644 pkgs/applications/misc/mysql-workbench/default.nix

diff --git a/pkgs/applications/misc/mysql-workbench/default.nix b/pkgs/applications/misc/mysql-workbench/default.nix
new file mode 100644
index 0000000..957a1ba
--- /dev/null
+++ b/pkgs/applications/misc/mysql-workbench/default.nix
@@ -0,0 +1,133 @@
+{ stdenv
+, fetchurl
+, makeWrapper
+, autoconf
+, automake
+, boost
+, coreutils
+, 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
+		  coreutils
+		  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
+		  stdenv.gcc
+		  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 ] && ${coreutils}/bin/rm $FIFOCTL
+${coreutils}/bin/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
+    ${coreutils}/bin/rm $FIFOCTL
+) &
+
+exec 19> $FIFOCTL
+            ' 
+  '';
+
+  meta = {
+    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 = "GPL";
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index cefd270..74e839e 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6867,6 +6867,13 @@ let
     tex = tetex;
   };
 
+  mysqlWorkbench = callPackage ../applications/misc/mysql-workbench { 
+    inherit (gnome) glib gnome_keyring gtk gtkmm libglade libgnome pango;
+    lua = lua5;
+    pexpect = pythonPackages.pexpect;
+    paramiko = pythonPackages.paramiko;
+  };
+
   pgadmin = callPackage ../applications/misc/pgadmin { };
 
   pgf = pgf2;
-- 
1.7.2.3

_______________________________________________
nix-dev mailing list
[email protected]
https://mail.cs.uu.nl/mailman/listinfo/nix-dev

Reply via email to