diff --git a/pkgs/applications/misc/mysql-workbench/default.nix b/pkgs/applications/misc/mysql-workbench/default.nix new file mode 100644 index 00000000000..0f3b3f2bb5f --- /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; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9581d1e0bcc..6b49d999cbf 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6953,6 +6953,11 @@ let tex = tetex; }; + mysqlWorkbench = newScope gnome ../applications/misc/mysql-workbench { + lua = lua5; + inherit (pythonPackages) pexpect paramiko; + }; + pgadmin = callPackage ../applications/misc/pgadmin { }; pgf = pgf2;