summary refs log tree commit diff
diff options
context:
space:
mode:
authorJaka Hudoklin <jakahudoklin@gmail.com>2014-03-23 18:12:07 +0100
committerBjørn Forsman <bjorn.forsman@gmail.com>2014-04-05 18:37:05 +0200
commit413ebfb2469b394a4f4d48ba3567be3c68344722 (patch)
treea90c32d27cc940fe09e99e03985dce084158108d
parent85b1ede2bfa8c8e7cf946a7372d3b05f15e7735a (diff)
downloadnixpkgs-413ebfb2469b394a4f4d48ba3567be3c68344722.tar
nixpkgs-413ebfb2469b394a4f4d48ba3567be3c68344722.tar.gz
nixpkgs-413ebfb2469b394a4f4d48ba3567be3c68344722.tar.bz2
nixpkgs-413ebfb2469b394a4f4d48ba3567be3c68344722.tar.lz
nixpkgs-413ebfb2469b394a4f4d48ba3567be3c68344722.tar.xz
nixpkgs-413ebfb2469b394a4f4d48ba3567be3c68344722.tar.zst
nixpkgs-413ebfb2469b394a4f4d48ba3567be3c68344722.zip
virt-manager: update to 1.0.1, fix & update dependencies, gtk3 support
- Vte, add gtk3 support, enable introspection, update to 0.35.90
- Spice-gtk, add gtk3 support
- gtk-vnc, add gtk3 support
- Add libvirt-glib (thanks @bjornfor)
- Add usbredir
- qemu, enable usbredir
- spice-gtk, enable usbredir
- virt-manager, update to 1.0.1

[Bjørn:
* Set namePrefix = "" to preserve package name "virt-manager"
  (instead of "python2.7-virt-manager")
* Add dconf to GIO_EXTRA_MODULES to get persistent settings in
  virt-manager. Without it:
  GLib-GIO-Message: Using the 'memory' GSettings backend. Your settings will not be saved or shared with other applications.
* Add ${gtk3}/share to XDG_DATA_DIRS to unbreak "Take Screenshot"
  feature (fixes "Settings schema 'org.gtk.Settings.FileChooser' is not installed")
* gtk-vnc: don't pull "pkgs" attrset for optionalString, use stdenv.lib.optionalString instead.
]
-rw-r--r--pkgs/applications/virtualization/qemu/default.nix4
-rw-r--r--pkgs/applications/virtualization/virt-manager/default.nix91
-rw-r--r--pkgs/desktops/gnome-3/core/vte/default.nix23
-rw-r--r--pkgs/development/libraries/libvirt-glib/default.nix48
-rw-r--r--pkgs/development/libraries/spice-gtk/default.nix11
-rw-r--r--pkgs/development/libraries/usbredir/default.nix23
-rw-r--r--pkgs/tools/admin/gtk-vnc/default.nix19
-rw-r--r--pkgs/top-level/all-packages.nix11
8 files changed, 148 insertions, 82 deletions
diff --git a/pkgs/applications/virtualization/qemu/default.nix b/pkgs/applications/virtualization/qemu/default.nix
index 7f3bf8fafc8..af2e1efb59e 100644
--- a/pkgs/applications/virtualization/qemu/default.nix
+++ b/pkgs/applications/virtualization/qemu/default.nix
@@ -3,7 +3,7 @@
 , makeWrapper
 , sdlSupport ? true, SDL
 , vncSupport ? true, libjpeg, libpng
-, spiceSupport ? true, spice, spice_protocol
+, spiceSupport ? true, spice, spice_protocol, usbredir
 , x86Only ? false
 }:
 
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
     ]
     ++ stdenv.lib.optionals sdlSupport [ SDL ]
     ++ stdenv.lib.optionals vncSupport [ libjpeg libpng ]
-    ++ stdenv.lib.optionals spiceSupport [ spice_protocol spice ];
+    ++ stdenv.lib.optionals spiceSupport [ spice_protocol spice usbredir ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/applications/virtualization/virt-manager/default.nix b/pkgs/applications/virtualization/virt-manager/default.nix
index fb2dde66442..dba0d11b425 100644
--- a/pkgs/applications/virtualization/virt-manager/default.nix
+++ b/pkgs/applications/virtualization/virt-manager/default.nix
@@ -1,74 +1,67 @@
 { stdenv, fetchurl, pythonPackages, intltool, libxml2Python, curl, python
 , makeWrapper, virtinst, pyGtkGlade, pythonDBus, gnome_python, gtkvnc, vte
-, spiceSupport ? true, spice_gtk
+, gtk3, gobjectIntrospection, libvirt-glib, gsettings_desktop_schemas, glib
+, avahi, dconf, spiceSupport ? true, spice_gtk
 }:
 
 with stdenv.lib;
+with pythonPackages;
 
-let version = "0.9.5"; in
-
-stdenv.mkDerivation rec {
+buildPythonPackage rec {
   name = "virt-manager-${version}";
+  version = "1.0.1";
+  namePrefix = "";
 
   src = fetchurl {
-    url = "http://virt-manager.et.redhat.com/download/sources/virt-manager/virt-manager-${version}.tar.gz";
-    sha256 = "0gc06cdbq6c2a06l939516lvjii7lr0wng90kqgl1i5q5wlgnajx";
+    url = "http://virt-manager.org/download/sources/virt-manager/${name}.tar.gz";
+    sha256 = "1n248kack1fni8y17ysgq5xhvffcgy4l62hnd0zvr4kjw0579qq8";
   };
 
-  pythonPath = with pythonPackages;
-    [ setuptools eventlet greenlet gflags netaddr sqlalchemy carrot routes
+  propagatedBuildInputs =
+    [ eventlet greenlet gflags netaddr sqlalchemy carrot routes
       paste_deploy m2crypto ipy boto_1_9 twisted sqlalchemy_migrate
       distutils_extra simplejson readline glance cheetah lockfile httplib2
-      # !!! should libvirt be a build-time dependency?  Note that
-      # libxml2Python is a dependency of libvirt.py.
-      libvirt libxml2Python urlgrabber virtinst pyGtkGlade pythonDBus gnome_python
-      gtkvnc vte
+      urlgrabber virtinst pyGtkGlade pythonDBus gnome_python pygobject3
+      libvirt libxml2Python ipaddr vte
     ] ++ optional spiceSupport spice_gtk;
 
   buildInputs =
-    [ pythonPackages.python
-      pythonPackages.wrapPython
-      pythonPackages.mox
-      pythonPackages.urlgrabber
+    [ mox
       intltool
-      pyGtkGlade
-      pythonDBus
-      gnome_python
       gtkvnc
-    ] ++ pythonPath;
-
-  buildPhase = "make";
-
-  nativeBuildInputs = [ makeWrapper pythonPackages.wrapPython ];
+      gtk3
+      libvirt-glib
+      avahi
+      glib
+      gobjectIntrospection
+    ];
 
-  # TODO
-  # virt-manager     -> import gtk.glade -> No module named glade --> fixed by removing 'pygtk' and by only using pyGtkGlade
-  #                  -> import gconf     -> ImportError: No module named gconf
-  #                        -> pfad um gtk-2.0 erweitern in virt-manger runner -> /nix/store/hnyxc9i4yz2mc42n44ms13mn8n486s5h-gnome-python-2.28.1/lib/python2.7/site-packages/gtk-2.0
-  #                  -> Error starting Virtual Machine Manager: Failed to contact configuration server; the most common cause is a missing or misconfigured D-Bus session bus daemon. See http://projects.gnome.org/gconf/ for information. (Details -  1: GetIOR failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.GConf was not provided by any .service files)
-
-#Traceback (most recent call last):
-#  File "/nix/store/y9rcdiv6686sqcv4r39p575s37jzc2cz-virt-manager-0.9.1/share/virt-manager/virt-manager.py", line 383, in <module>
-#    main()
-#  File "/nix/store/y9rcdiv6686sqcv4r39p575s37jzc2cz-virt-manager-0.9.1/share/virt-manager/virt-manager.py", line 315, in main
-#    config = virtManager.config.vmmConfig(appname, appversion, glade_dir)
-#  File "/nix/store/y9rcdiv6686sqcv4r39p575s37jzc2cz-virt-manager-0.9.1/share/virt-manager/virtManager/config.py", line 98, in __init__
-#    self.conf.add_dir(self.conf_dir, gconf.CLIENT_PRELOAD_NONE)
-#GError: Failed to contact configuration server; the most common cause is a missing or misconfigured D-Bus session bus daemon. See http://projects.gnome.org/gconf/ for information. (Details -  1: GetIOR failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.GConf was not provided by any .service files)
-# -> fixed by http://nixos.org/wiki/Solve_GConf_errors_when_running_GNOME_applications & a restart
-  # virt-manager-tui -> ImportError: No module named newt_syrup.dialogscreen
+  configurePhase = ''
+    sed -i 's/from distutils.core/from setuptools/g' setup.py
+    sed -i 's/from distutils.command.install/from setuptools.command.install/g' setup.py
+    python setup.py configure --prefix=$out
+  '';
 
-  installPhase = ''
-    make install
+  buildPhase = "true";
 
-    # A hack, but the most reliable method so far
-    echo "#!/usr/bin/env python" | cat - src/virt-manager.py > $out/bin/virt-manager
-    echo "#!/usr/bin/env python" | cat - src/virt-manager-tui.py > $out/bin/virt-manager-tui
+  postInstall = ''
+    # GI_TYPELIB_PATH is needed at runtime for GObject stuff to work
+    for file in "$out"/bin/*; do
+        wrapProgram "$file" \
+            --prefix GI_TYPELIB_PATH : $GI_TYPELIB_PATH \
+            --prefix GIO_EXTRA_MODULES : "${dconf}/lib/gio/modules" \
+            --prefix GSETTINGS_SCHEMA_DIR : $out/share/glib-2.0/schemas \
+            --prefix LD_LIBRARY_PATH : ${gtk3}/lib/:${libvirt-glib}/lib/:${vte}/lib:${gtkvnc}/lib${optionalString spiceSupport ":${spice_gtk}/lib"} \
+            --prefix XDG_DATA_DIRS : "$out/share:${gsettings_desktop_schemas}/share:${gtk3}/share:\$XDG_DATA_DIRS"
+    done
 
-    wrapPythonPrograms
+    ${glib}/bin/glib-compile-schemas "$out"/share/glib-2.0/schemas
   '';
 
-  meta = {
+  # Failed tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
     homepage = http://virt-manager.org;
     description = "Desktop user interface for managing virtual machines";
     longDescription = ''
@@ -76,7 +69,7 @@ stdenv.mkDerivation rec {
       virtual machines through libvirt. It primarily targets KVM VMs, but also
       manages Xen and LXC (linux containers).
     '';
-    license = "GPLv2";
-    maintainers = with stdenv.lib.maintainers; [qknight];
+    license = licenses.gpl2;
+    maintainers = with maintainers; [qknight offline];
   };
 }
diff --git a/pkgs/desktops/gnome-3/core/vte/default.nix b/pkgs/desktops/gnome-3/core/vte/default.nix
index b0e522c0f29..d98ddc716de 100644
--- a/pkgs/desktops/gnome-3/core/vte/default.nix
+++ b/pkgs/desktops/gnome-3/core/vte/default.nix
@@ -1,32 +1,21 @@
-{ stdenv, fetchurl, intltool, pkgconfig, gnome3, ncurses
-, pythonSupport ? false, python, pygtk}:
+{ stdenv, fetchurl, intltool, pkgconfig, gnome3, ncurses, gobjectIntrospection }:
 
 stdenv.mkDerivation rec {
 
-  versionMajor = "0.34";
-  versionMinor = "9";
+  versionMajor = "0.35";
+  versionMinor = "90";
   moduleName   = "vte";
   
   name = "${moduleName}-${versionMajor}.${versionMinor}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz";
-    sha256 = "1q93dsxg56f57mxblmh8kn4v9kyc643j2pjf1j3mn2kxypnwaf3g";
+    sha256 = "c47182d1724db479095b918898ce62297ec71988f24cd575506151c59f7b98cf";
   };
 
-  buildInputs = [ intltool pkgconfig gnome3.glib gnome3.gtk ncurses ] ++
-                stdenv.lib.optionals pythonSupport [python pygtk];
+  buildInputs = [ gobjectIntrospection intltool pkgconfig gnome3.glib gnome3.gtk3 ncurses ];
 
-  configureFlags = ''
-    ${if pythonSupport then "--enable-python" else "--disable-python"}
-  '';
-
-  postInstall = stdenv.lib.optionalString pythonSupport ''
-    cd $(toPythonPath $out)/gtk-2.0
-    for n in *; do
-      ln -s "gtk-2.0/$n" "../$n"
-    done
-  '';
+  configureFlags = ''--enable-introspection'';
 
   meta = {
     homepage = http://www.gnome.org/;
diff --git a/pkgs/development/libraries/libvirt-glib/default.nix b/pkgs/development/libraries/libvirt-glib/default.nix
new file mode 100644
index 00000000000..afce119e396
--- /dev/null
+++ b/pkgs/development/libraries/libvirt-glib/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchurl, pkgconfig, libvirt, glib, libxml2, intltool, libtool, yajl
+, nettle, libgcrypt, python, pygobject, gobjectIntrospection, libcap_ng
+}:
+
+stdenv.mkDerivation rec {
+  name = "libvirt-glib-0.1.8";
+
+  src = fetchurl {
+    url = "http://libvirt.org/sources/glib/${name}.tar.gz";
+    sha256 = "0ld7g9vlpdzx8rm90i8y1gnpygkn20x5z12gvsgms7dy5nala3ns";
+  };
+
+  buildInputs = [
+    pkgconfig libvirt glib libxml2 intltool libtool yajl nettle libgcrypt
+    python pygobject gobjectIntrospection libcap_ng
+  ];
+
+  # Compiler flag -fstack-protector-all fixes this build error:
+  #
+  #   ./.libs/libvirt-glib-1.0.so: undefined reference to `__stack_chk_guard'
+  #
+  # And the extra include path fixes this build error:
+  #
+  #   In file included from ../libvirt-gobject/libvirt-gobject-domain-device.h:30:0,
+  #                    from /tmp/nix-build-libvirt-glib-0.1.7.drv-2/libvirt-glib-0.1.7/libvirt-gobject/libvirt-gobject.h:33,
+  #                    from <stdin>:4:
+  #   ../libvirt-gobject/libvirt-gobject-domain.h:33:29: fatal error: libvirt/libvirt.h: No such file or directory
+  #   compilation terminated.
+  #   make[3]: *** [LibvirtGObject-1.0.gir] Error 1
+  preConfigure = ''
+    export NIX_CFLAGS_COMPILE="-fstack-protector-all -I${libvirt}/include"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Library for working with virtual machines";
+    longDescription = ''
+      libvirt-glib wraps libvirt to provide a high-level object-oriented API better
+      suited for glib-based applications, via three libraries:
+
+      - libvirt-glib    - GLib main loop integration & misc helper APIs
+      - libvirt-gconfig - GObjects for manipulating libvirt XML documents
+      - libvirt-gobject - GObjects for managing libvirt objects
+    '';
+    homepage = http://libvirt.org/;
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/spice-gtk/default.nix b/pkgs/development/libraries/spice-gtk/default.nix
index 60bf24dfd78..adb1fe90558 100644
--- a/pkgs/development/libraries/spice-gtk/default.nix
+++ b/pkgs/development/libraries/spice-gtk/default.nix
@@ -1,6 +1,7 @@
 { stdenv, fetchurl, pkgconfig, gtk, spice_protocol, intltool, celt_0_5_1
 , openssl, pulseaudio, pixman, gobjectIntrospection, libjpeg_turbo, zlib
-, cyrus_sasl, python, pygtk, autoconf, automake, libtool }:
+, cyrus_sasl, python, pygtk, autoconf, automake, libtool, usbredir
+, gtk3, enableGTK3 ? false }:
 
 with stdenv.lib;
 
@@ -13,9 +14,9 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [
-    gtk spice_protocol celt_0_5_1 openssl pulseaudio pixman gobjectIntrospection
-    libjpeg_turbo zlib cyrus_sasl python pygtk
-  ];
+    spice_protocol celt_0_5_1 openssl pulseaudio pixman gobjectIntrospection
+    libjpeg_turbo zlib cyrus_sasl python pygtk usbredir
+  ] ++ (if enableGTK3 then [ gtk3 ] else [ gtk ]);
 
   nativeBuildInputs = [ pkgconfig intltool libtool autoconf automake ];
 
@@ -31,7 +32,7 @@ stdenv.mkDerivation rec {
 
   configureFlags = [
     "--disable-maintainer-mode"
-    "--with-gtk=2.0"
+    (if enableGTK3 then "--with-gtk3" else "--with-gtk=2.0")
   ];
 
   dontDisableStatic = true; # Needed by the coroutine test
diff --git a/pkgs/development/libraries/usbredir/default.nix b/pkgs/development/libraries/usbredir/default.nix
new file mode 100644
index 00000000000..7f05daab021
--- /dev/null
+++ b/pkgs/development/libraries/usbredir/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, pkgconfig, libusb }:
+
+stdenv.mkDerivation rec {
+  name = "usbredir-${version}";
+  version = "0.6";
+
+  src = fetchurl {
+    url = "http://spice-space.org/download/usbredir/${name}.tar.bz2";
+    sha256 = "028184960044ea4124030000b3c55a35c3238835116e3a0fbcaff449df2c8edf";
+  };
+
+  buildInputs = [ pkgconfig libusb ];
+  propagatedBuildInputs = [ libusb ];
+
+  meta = with stdenv.lib; {
+    description = "USB traffic redirection protocol";
+    homepage = http://spice-space.org/page/UsbRedir;
+    license = licenses.lgpl21;
+
+    maintainers = [ maintainers.offline ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/admin/gtk-vnc/default.nix b/pkgs/tools/admin/gtk-vnc/default.nix
index d4c45b7ba96..c3a82b2e4a2 100644
--- a/pkgs/tools/admin/gtk-vnc/default.nix
+++ b/pkgs/tools/admin/gtk-vnc/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, fetchurl
+{ stdenv, fetchurl, gobjectIntrospection
 , python, gtk, pygtk, gnutls, cairo, libtool, glib, pkgconfig, libtasn1
 , libffi, cyrus_sasl, intltool, perl, perlPackages, firefoxPkgs, pulseaudio
-, kbproto, libX11, libXext, xextproto, pygobject, libgcrypt }:
-
+, kbproto, libX11, libXext, xextproto, pygobject, libgcrypt, gtk3, vala
+, pygobject3, enableGTK3 ? false }:
 
 stdenv.mkDerivation rec {
   name = "gtk-vnc-${version}";
@@ -14,21 +14,24 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [
-    python gtk pygtk gnutls cairo libtool pkgconfig glib libffi libgcrypt
-    intltool cyrus_sasl pulseaudio pygobject perl perlPackages.TextCSV
-  ];
+    python gnutls cairo libtool pkgconfig glib libffi libgcrypt
+    intltool cyrus_sasl pulseaudio perl perlPackages.TextCSV
+    gobjectIntrospection
+  ] ++ (if enableGTK3 then [ gtk3 vala pygobject3 ] else [ gtk pygtk pygobject ]);
 
   NIX_CFLAGS_COMPILE = "-fstack-protector-all";
   configureFlags = [
     "--with-python"
     "--with-examples"
+    (if enableGTK3 then "--with-gtk=3.0" else "--with-gtk=2.0")
   ];
 
-  makeFlags = "CODEGENDIR=${pygobject}/share/pygobject/2.0/codegen/ DEFSDIR=${pygtk}/share/pygtk/2.0/defs/";
+  makeFlags = stdenv.lib.optionalString (!enableGTK3)
+    "CODEGENDIR=${pygobject}/share/pygobject/2.0/codegen/ DEFSDIR=${pygtk}/share/pygtk/2.0/defs/";
 
   meta = with stdenv.lib; {
     description = "A GTK VNC widget";
-    maintainers = with maintainers; [ raskin ];
+    maintainers = with maintainers; [ raskin offline ];
     platforms = platforms.linux;
     license = licenses.lgpl21;
   };
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f2b10785962..39434aa4bb3 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5222,6 +5222,8 @@ let
 
   libvirt = callPackage ../development/libraries/libvirt { };
 
+  libvirt-glib = callPackage ../development/libraries/libvirt-glib { };
+
   libvisio = callPackage ../development/libraries/libvisio { };
 
   libvisual = callPackage ../development/libraries/libvisual { };
@@ -5910,6 +5912,10 @@ let
 
   ustr = callPackage ../development/libraries/ustr { };
 
+  usbredir = callPackage ../development/libraries/usbredir {
+    libusb = libusb1;
+  };
+
   ucommon = callPackage ../development/libraries/ucommon { };
 
   vaapiIntel = callPackage ../development/libraries/vaapi-intel { };
@@ -9301,7 +9307,10 @@ let
   virtviewer = callPackage ../applications/virtualization/virt-viewer {};
   virtmanager = callPackage ../applications/virtualization/virt-manager {
     inherit (gnome) gnome_python;
-    vte = gnome.vte.override { pythonSupport = true; };
+    vte = gnome3.vte;
+    dconf = gnome3.dconf;
+    gtkvnc = gtkvnc.override { enableGTK3 = true; };
+    spice_gtk = spice_gtk.override { enableGTK3 = true; };
   };
 
   virtinst = callPackage ../applications/virtualization/virtinst {};