summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoachim Schiele <js@lastlog.de>2012-07-20 23:27:24 +0000
committerJoachim Schiele <js@lastlog.de>2012-07-20 23:27:24 +0000
commit538b17a791bc38e6cbd16a144832858504ce7da6 (patch)
treec71fe3436792291ee9b8bb3175e7b44f24679b66
parentc6452f372cb1d22e46cec7dd1c8706d718d98513 (diff)
downloadnixpkgs-538b17a791bc38e6cbd16a144832858504ce7da6.tar
nixpkgs-538b17a791bc38e6cbd16a144832858504ce7da6.tar.gz
nixpkgs-538b17a791bc38e6cbd16a144832858504ce7da6.tar.bz2
nixpkgs-538b17a791bc38e6cbd16a144832858504ce7da6.tar.lz
nixpkgs-538b17a791bc38e6cbd16a144832858504ce7da6.tar.xz
nixpkgs-538b17a791bc38e6cbd16a144832858504ce7da6.tar.zst
nixpkgs-538b17a791bc38e6cbd16a144832858504ce7da6.zip
fixed most virt-manager issues!
-rw-r--r--pkgs/applications/virtualization/virt-manager/custom_runner.py13
-rw-r--r--pkgs/applications/virtualization/virt-manager/default.nix127
-rw-r--r--pkgs/applications/virtualization/virtinst/default.nix8
-rw-r--r--pkgs/desktops/gnome-2/bindings/gnome-python/default.nix7
-rw-r--r--pkgs/desktops/gnome-2/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix5
-rw-r--r--pkgs/top-level/python-packages.nix2
7 files changed, 94 insertions, 72 deletions
diff --git a/pkgs/applications/virtualization/virt-manager/custom_runner.py b/pkgs/applications/virtualization/virt-manager/custom_runner.py
new file mode 100644
index 00000000000..5322c20dd32
--- /dev/null
+++ b/pkgs/applications/virtualization/virt-manager/custom_runner.py
@@ -0,0 +1,13 @@
+#!/usr/bin/python -t
+# this script was written to use /etc/nixos/nixpkgs/pkgs/development/python-modules/generic/wrap.sh
+# which already automates python executable wrapping by extending the PATH/pythonPath
+
+# from http://docs.python.org/library/subprocess.html
+# Warning Invoking the system shell with shell=True can be a security hazard if combined with untrusted input. See the warning under Frequently Used Arguments for details.
+
+from subprocess import Popen, PIPE, STDOUT
+
+cmd = 'PYTHON_EXECUTABLE_PATH -t THE_CUSTOM_PATH/share/virt-manager/THE_CUSTOM_PROGRAM.py'
+p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
+output = p.stdout.read()
+print output
diff --git a/pkgs/applications/virtualization/virt-manager/default.nix b/pkgs/applications/virtualization/virt-manager/default.nix
index c41db3f58c5..79ea777eead 100644
--- a/pkgs/applications/virtualization/virt-manager/default.nix
+++ b/pkgs/applications/virtualization/virt-manager/default.nix
@@ -1,70 +1,85 @@
-x@{builderDefsPackage
-  , gnome, gtk, glib, libxml2, libvirt, gtkvnc, cyrus_sasl, libtasn1, makeWrapper 
-  , intltool, python, pygtk, libxml2Python
-  # virtinst is required, but it breaks when building
-  , ...}:
-builderDefsPackage
-(a :  
-let 
-  helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ 
-    ["gnome"];
+{ stdenv, fetchurl, pythonPackages, intltool, libvirt, libxml2Python, curl, python, makeWrapper, virtinst, pyGtkGlade, pythonDBus, gnome_python, gtkvnc}:
 
-  buildInputs = (map (n: builtins.getAttr n x)
-    (builtins.attrNames (builtins.removeAttrs x helperArgNames)))
-    ++ [gnome.libglade intltool python libvirt];
-  sourceInfo = rec {
-    baseName="virt-manager";
+with stdenv.lib;
 
-    version = "0.9.1"; 
-    name = "virt-manager-${version}";
+let version = "0.9.1"; in
+
+stdenv.mkDerivation rec {
+  name = "virt-manager-${version}";
+
+  src = fetchurl {
     url = "http://virt-manager.et.redhat.com/download/sources/virt-manager/virt-manager-${version}.tar.gz";
-    hash = "15e064167ba5ff84ce6fc8790081d61890430f2967f89886a84095a23e40094a";
-  };
-in
-rec {
-  src = a.fetchurl {
-    url = sourceInfo.url;
-    sha256 = sourceInfo.hash;
+    sha256 = "15e064167ba5ff84ce6fc8790081d61890430f2967f89886a84095a23e40094a";
   };
 
-  patchPhase = a.fullDepEntry '' 
-    substituteInPlace "src/virt-manager.in" --replace "exec /usr/bin/python" "exec ${python}/bin/python"
-    sed -e '/import libxml2/i import sys\
-    sys.path.append("${libxml2Python}/lib/${python.libPrefix}/site-packages")' \
-    -i src/virtManager/util.py
-    sed -e '/import libxml2/i import sys\
-    sys.path.append("${libxml2Python}/lib/${python.libPrefix}/site-packages")' \
-    -i src/virtManager/libvirtobject.py
-  '' ["minInit"];
+  pythonPath = with pythonPackages;
+    [ setuptools 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
+    ];
+
+  buildInputs =
+    [ pythonPackages.python 
+      pythonPackages.wrapPython
+      pythonPackages.mox
+      pythonPackages.urlgrabber
+      intltool
+      pyGtkGlade
+      pythonDBus
+      gnome_python
+      gtkvnc
+    ] ++ pythonPath;
+
+  buildPhase = "make";
+  
+  buildNativeInputs = [ makeWrapper pythonPackages.wrapPython ];
 
-  inherit (sourceInfo) name version;
-  inherit buildInputs;
+  # patch the runner script in order to make wrapPythonPrograms work and run the program using a syscall
+  # example code: /etc/nixos/nixpkgs/pkgs/development/interpreters/spidermonkey/1.8.0-rc1.nix
+  customRunner = ./custom_runner.py;
 
-  /* doConfigure should be removed if not needed */
-  phaseNames = [ "doUnpack" "patchPhase" "doConfigure" "doMakeInstall" "installPhase" ];
+  # 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)
 
-  installPhase = a.fullDepEntry ''
-    wrapProgram $out/bin/virt-manager --set PYTHONPATH $PYTHONPATH
-  '' ["minInit"];
+#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
 
-  #NIX_CFLAGS_COMPILE = "-fno-stack-protector";
+  patchPhase = ''
+    cat ${customRunner} > src/virt-manager.in
+    substituteInPlace "src/virt-manager.in" --replace "THE_CUSTOM_PATH" "$out"
+    substituteInPlace "src/virt-manager.in" --replace "THE_CUSTOM_PROGRAM" "virt-manager"
+    substituteInPlace "src/virt-manager.in" --replace "PYTHON_EXECUTABLE_PATH" "${python}/bin/python"
+
+    cat ${customRunner} > src/virt-manager-tui.in
+    substituteInPlace "src/virt-manager-tui.in" --replace "THE_CUSTOM_PATH" "$out"
+    substituteInPlace "src/virt-manager-tui.in" --replace "THE_CUSTOM_PROGRAM" "virt-manager-tui"
+    substituteInPlace "src/virt-manager-tui.in" --replace "PYTHON_EXECUTABLE_PATH" "${python}/bin/python"
+  '';
+
+  # /etc/nixos/nixpkgs/pkgs/development/python-modules/generic/wrap.sh
+  installPhase = ''
+    make install
+    wrapPythonPrograms
+  '';
 
   meta = {
     homepage = http://virt-manager.org;
     description = "The 'Virtual Machine Manager' application (virt-manager for short package name) is a desktop user interface for managing virtual machines.";
-  
-    maintainers = with a.lib.maintainers;
-    [
-      qknight
-    ];
-    platforms = with a.lib.platforms;
-      linux;
-    license = a.lib.licenses.gpl2;
-  };
-  passthru = {
-    updateInfo = {
-      downloadPage = "http://virt-manager.org/download.html";
-    };
+    license = "GPLv2";
+    maintainers = with stdenv.lib.maintainers; [qknight];
   };
-}) x
-
+}
diff --git a/pkgs/applications/virtualization/virtinst/default.nix b/pkgs/applications/virtualization/virtinst/default.nix
index 0c574db2391..2bb2adaa00a 100644
--- a/pkgs/applications/virtualization/virtinst/default.nix
+++ b/pkgs/applications/virtualization/virtinst/default.nix
@@ -30,19 +30,11 @@ stdenv.mkDerivation rec {
 
   buildPhase = "python setup.py build";
 
-  PYTHON_EGG_CACHE = "`pwd`/.egg-cache";
-
-#      substituteInPlace nova/api/ec2/cloud.py \
-#        --replace 'sh genrootca.sh' $out/libexec/nova/genrootca.sh
-#    '';
-
   installPhase =
     ''    
        python setup.py install --prefix="$out";
     '';
 
-  #checkPhase = "python setup.py test";
-
   meta = {
     homepage = http://virt-manager.org;
     license = "GPLv2+";
diff --git a/pkgs/desktops/gnome-2/bindings/gnome-python/default.nix b/pkgs/desktops/gnome-2/bindings/gnome-python/default.nix
index 3d47ed56787..c65c8b98c6a 100644
--- a/pkgs/desktops/gnome-2/bindings/gnome-python/default.nix
+++ b/pkgs/desktops/gnome-2/bindings/gnome-python/default.nix
@@ -13,9 +13,10 @@ stdenv.mkDerivation rec {
 
   phases = "unpackPhase configurePhase buildPhase installPhase";
 
-  # You should be using WAF instead; see the file INSTALL.WAF
+  # WAF is probably the biggest crap on this planet, btw i removed the /gtk-2.0 path thingy
   configurePhase = ''
-    python waf configure --prefix=$out
+    sed -e "s@{PYTHONDIR}/gtk-2.0@{PYTHONDIR}/@" -i gconf/wscript 
+    python waf configure --prefix=$out 
   '';
 
   buildPhase = ''
@@ -35,4 +36,4 @@ stdenv.mkDerivation rec {
     description = "Python wrapper for gconf";
     maintainers = [ stdenv.lib.maintainers.qknight ];
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/desktops/gnome-2/default.nix b/pkgs/desktops/gnome-2/default.nix
index 943dbc9a500..36d0860caa5 100644
--- a/pkgs/desktops/gnome-2/default.nix
+++ b/pkgs/desktops/gnome-2/default.nix
@@ -44,6 +44,8 @@
 
   gnome_mime_data = callPackage ./platform/gnome-mime-data { };
 
+  gnome_python = callPackage ./bindings/gnome-python { };
+
   gnome_vfs = callPackage ./platform/gnome-vfs { };
 
   gnome_vfs_monikers = callPackage ./platform/gnome-vfs-monikers { };
@@ -115,6 +117,4 @@
 
   libglademm = callPackage ./bindings/libglademm { };
 
-  gnome_python = callPackage ./bindings/gnome-python { };
-
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 14c4273e266..88effa9ccdf 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -7609,7 +7609,10 @@ let
   };
 
   virtviewer = callPackage ../applications/virtualization/virt-viewer {};
-  virtmanager = callPackage ../applications/virtualization/virt-manager {};
+  virtmanager = callPackage ../applications/virtualization/virt-manager {
+    inherit (gnome) gnome_python; 
+  };
+
   virtinst = callPackage ../applications/virtualization/virtinst {};
 
   virtualgl = callPackage ../tools/X11/virtualgl { };
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 35c265fffd8..b8327ddaaae 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -2521,8 +2521,6 @@ let pythonPackages = python.modules // rec {
 
     propagatedBuildInputs = [ pycurl ];
 
-    PYTHON_EGG_CACHE = "`pwd`/.egg-cache";
-
     meta = {
       homepage = "urlgrabber.baseurl.org";
       license = "LGPLv2+";