about summary refs log tree commit diff
path: root/pkgs/tools
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2018-10-18 05:59:09 +0200
committerGitHub <noreply@github.com>2018-10-18 05:59:09 +0200
commit21f20b5f7b837b15d6918405a48586c31328c270 (patch)
tree1c75bf9c320d9d89d791b03b8feaca134021d675 /pkgs/tools
parentb2dabdc697b760b3c95056c2dd8dc2771ef93a12 (diff)
parentd4d87b049ba127df57bdb03bc9d960fac964a5a1 (diff)
downloadnixlib-21f20b5f7b837b15d6918405a48586c31328c270.tar
nixlib-21f20b5f7b837b15d6918405a48586c31328c270.tar.gz
nixlib-21f20b5f7b837b15d6918405a48586c31328c270.tar.bz2
nixlib-21f20b5f7b837b15d6918405a48586c31328c270.tar.lz
nixlib-21f20b5f7b837b15d6918405a48586c31328c270.tar.xz
nixlib-21f20b5f7b837b15d6918405a48586c31328c270.tar.zst
nixlib-21f20b5f7b837b15d6918405a48586c31328c270.zip
Merge pull request #46613 from jtojnar/xpra-gtk3
xpra: port to gtk3
Diffstat (limited to 'pkgs/tools')
-rw-r--r--pkgs/tools/X11/xpra/default.nix64
-rw-r--r--pkgs/tools/X11/xpra/fix-paths.patch33
-rw-r--r--pkgs/tools/X11/xpra/gtk3.nix79
3 files changed, 66 insertions, 110 deletions
diff --git a/pkgs/tools/X11/xpra/default.nix b/pkgs/tools/X11/xpra/default.nix
index 3e4d49108b71..7f1552f91979 100644
--- a/pkgs/tools/X11/xpra/default.nix
+++ b/pkgs/tools/X11/xpra/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, lib, fetchurl, callPackage, python2Packages, pkgconfig
-, xorg, gtk2, glib, pango, cairo, gdk_pixbuf, atk
-, makeWrapper, xorgserver, getopt, xauth, utillinux, which
+{ stdenv, lib, fetchurl, callPackage, substituteAll, python3, pkgconfig
+, xorg, gtk3, glib, pango, cairo, gdk_pixbuf, atk
+, wrapGAppsHook, xorgserver, getopt, xauth, utillinux, which
 , ffmpeg, x264, libvpx, libwebp
 , libfakeXinerama
 , gst_all_1, pulseaudio, gobjectIntrospection
@@ -9,7 +9,7 @@
 with lib;
 
 let
-  inherit (python2Packages) cython buildPythonApplication;
+  inherit (python3.pkgs) cython buildPythonApplication;
 
   xf86videodummy = callPackage ./xf86videodummy { };
 in buildPythonApplication rec {
@@ -21,7 +21,14 @@ in buildPythonApplication rec {
     sha256 = "0wa3kx54himy3i1b2801hlzfilh3cf4kjk40k1cjl0ds28m5hija";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit (xorg) xkeyboardconfig;
+    })
+  ];
+
+  nativeBuildInputs = [ pkgconfig gobjectIntrospection wrapGAppsHook ];
   buildInputs = [
     cython
 
@@ -30,11 +37,10 @@ in buildPythonApplication rec {
     xorg.xproto xorg.fixesproto xorg.libXtst xorg.libXfixes xorg.libXcomposite xorg.libXdamage
     xorg.libXrandr xorg.libxkbfile
 
-    pango cairo gdk_pixbuf atk gtk2 glib
+    pango cairo gdk_pixbuf atk gtk3 glib
 
     ffmpeg libvpx x264 libwebp
 
-    gobjectIntrospection
     gst_all_1.gstreamer
     gst_all_1.gst-plugins-base
     gst_all_1.gst-plugins-good
@@ -42,38 +48,34 @@ in buildPythonApplication rec {
     gst_all_1.gst-libav
 
     pam
+  ];
 
-    makeWrapper
+  propagatedBuildInputs = with python3.pkgs; [
+    pillow rencode pycrypto cryptography pycups lz4 dbus-python
+    netifaces numpy websockify pygobject3 pycairo gst-python pam
   ];
 
-  propagatedBuildInputs = with python2Packages; [
-    pillow pygtk pygobject2 rencode pycrypto cryptography pycups lz4 dbus-python
-    netifaces numpy websockify pygobject3 gst-python pam
+  NIX_CFLAGS_COMPILE = [
+    # error: 'import_cairo' defined but not used
+    "-Wno-error=unused-function"
   ];
 
-  preBuild = ''
-    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags gtk+-2.0) $(pkg-config --cflags pygtk-2.0) $(pkg-config --cflags xtst)"
-    substituteInPlace xpra/server/auth/pam_auth.py --replace "/lib/libpam.so.1" "${pam}/lib/libpam.so"
-    substituteInPlace xpra/x11/bindings/keyboard_bindings.pyx --replace "/usr/share/X11/xkb" "${xorg.xkeyboardconfig}/share/X11/xkb"
-  '';
-  setupPyBuildFlags = ["--with-Xdummy" "--without-strict"];
-
-  postInstall = ''
-    wrapProgram $out/bin/xpra \
-      --set XPRA_INSTALL_PREFIX "$out" \
-      --set GI_TYPELIB_PATH "$GI_TYPELIB_PATH" \
-      --set GST_PLUGIN_SYSTEM_PATH_1_0 "$GST_PLUGIN_SYSTEM_PATH_1_0" \
-      --prefix LD_LIBRARY_PATH : ${libfakeXinerama}/lib  \
+  setupPyBuildFlags = [
+    "--with-Xdummy"
+    "--without-strict"
+    "--with-gtk3"
+    "--without-gtk2"
+  ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --set XPRA_INSTALL_PREFIX "$out"
+      --prefix LD_LIBRARY_PATH : ${libfakeXinerama}/lib
       --prefix PATH : ${stdenv.lib.makeBinPath [ getopt xorgserver xauth which utillinux pulseaudio ]}
+    )
   '';
 
-  preCheck = "exit 0";
-
-  #TODO: replace postInstall with postFixup to avoid double wrapping of xpra; needs more work though
-  #postFixup = ''
-  #  sed -i '3iexport FONTCONFIG_FILE="${fontsConf}"' $out/bin/xpra
-  #  sed -i '4iexport PATH=${stdenv.lib.makeBinPath [ getopt xorgserver xauth which utillinux ]}\${PATH:+:}\$PATH' $out/bin/xpra
-  #'';
+  doCheck = false;
 
   passthru = { inherit xf86videodummy; };
 
diff --git a/pkgs/tools/X11/xpra/fix-paths.patch b/pkgs/tools/X11/xpra/fix-paths.patch
new file mode 100644
index 000000000000..c50ec28c35e2
--- /dev/null
+++ b/pkgs/tools/X11/xpra/fix-paths.patch
@@ -0,0 +1,33 @@
+--- a/setup.py
++++ b/setup.py
+@@ -1885,7 +1885,7 @@
+     if OSX:
+         pycairo = "py3cairo"
+     else:
+-        pycairo = "pycairo"
++        pycairo = "py3cairo"
+     cython_add(Extension("xpra.client.gtk3.cairo_workaround",
+                 ["xpra/client/gtk3/cairo_workaround.pyx"],
+                 **pkgconfig(pycairo)
+--- a/xpra/client/gtk3/cairo_workaround.pyx
++++ b/xpra/client/gtk3/cairo_workaround.pyx
+@@ -65,7 +65,7 @@
+     void cairo_surface_flush (cairo_surface_t *surface)
+     void cairo_surface_mark_dirty (cairo_surface_t *surface)
+ 
+-cdef extern from "pycairo/pycairo.h":
++cdef extern from "py3cairo.h":
+     ctypedef struct Pycairo_CAPI_t:
+         pass
+     ctypedef struct PycairoSurface:
+--- a/xpra/x11/bindings/keyboard_bindings.pyx
++++ b/xpra/x11/bindings/keyboard_bindings.pyx
+@@ -19,7 +19,7 @@
+ 
+ DEF PATH_MAX = 1024
+ DEF DFLT_XKB_RULES_FILE = "base"
+-DEF DFLT_XKB_CONFIG_ROOT = "/usr/share/X11/xkb"
++DEF DFLT_XKB_CONFIG_ROOT = "@xkeyboardconfig@/share/X11/xkb"
+ 
+ ###################################
+ # Headers, python magic
diff --git a/pkgs/tools/X11/xpra/gtk3.nix b/pkgs/tools/X11/xpra/gtk3.nix
deleted file mode 100644
index ceba4269e808..000000000000
--- a/pkgs/tools/X11/xpra/gtk3.nix
+++ /dev/null
@@ -1,79 +0,0 @@
-{ stdenv, fetchurl, buildPythonApplication
-, python, cython, pkgconfig
-, xorg, gtk3, glib, pango, cairo, gdk_pixbuf, atk, pygobject3, pycairo, gobjectIntrospection
-, makeWrapper, xorgserver, getopt, xauth, utillinux, which, fontsConf
-, ffmpeg, x264, libvpx, libwebp
-, libfakeXinerama, pam }:
-
-buildPythonApplication rec {
-  name = "xpra-${version}";
-  version = "2.2.5";
-
-  src = fetchurl {
-    url = "https://xpra.org/src/${name}.tar.xz";
-    sha256 = "1q2l00nc3bgwlhjzkbk4a8x2l8z9w1799yn31icsx5hrgh98a1js";
-  };
-
-  patchPhase = ''
-    substituteInPlace setup.py --replace 'pycairo' 'py3cairo'
-    substituteInPlace xpra/client/gtk3/cairo_workaround.pyx --replace 'pycairo/pycairo.h' 'py3cairo.h'
-  '';
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [
-    xorg.libX11 xorg.renderproto xorg.libXrender xorg.libXi xorg.inputproto xorg.kbproto
-    xorg.randrproto xorg.damageproto xorg.compositeproto xorg.xextproto xorg.recordproto
-    xorg.xproto xorg.fixesproto xorg.libXtst xorg.libXfixes xorg.libXcomposite xorg.libXdamage
-    xorg.libXrandr xorg.libxkbfile
-
-    pango cairo gdk_pixbuf atk gtk3 glib gobjectIntrospection
-
-    ffmpeg libvpx x264 libwebp
-
-    makeWrapper
-
-    pam
-  ];
-
-  propagatedBuildInputs = [
-    pygobject3 pycairo cython
-  ];
-
-  preBuild = ''
-    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags gtk+-3.0) $(pkg-config --cflags xtst)"
-    substituteInPlace xpra/server/auth/pam_auth.py --replace "/lib/libpam.so.1" "${pam}/lib/libpam.so"
-  '';
-  setupPyBuildFlags = [ "--without-strict" "--with-gtk3" "--without-gtk2" "--with-Xdummy" ];
-
-  preInstall = ''
-    # see https://bitbucket.org/pypa/setuptools/issue/130/install_data-doesnt-respect-prefix
-    ${python}/bin/${python.executable} setup.py install_data --install-dir=$out --root=$out
-    sed -i '/ = data_files/d' setup.py
-  '';
-
-  postInstall = ''
-    wrapProgram $out/bin/xpra \
-      --set FONTCONFIG_FILE "${fontsConf}" \
-      --prefix LD_LIBRARY_PATH : ${libfakeXinerama}/lib \
-      --prefix PATH : ${stdenv.lib.makeBinPath [ getopt xorgserver xauth which utillinux ]}
-  '';
-
-  preCheck = "exit 0";
-  doInstallCheck = false;
-
-  #TODO: replace postInstall with postFixup to avoid double wrapping of xpra; needs more work though
-  #postFixup = ''
-  #  sed -i '3iexport FONTCONFIG_FILE="${fontsConf}"' $out/bin/xpra
-  #  sed -i '4iexport PATH=${stdenv.lib.makeBinPath [ getopt xorgserver xauth which utillinux ]}\${PATH:+:}\$PATH' $out/bin/xpra
-  #'';
-
-
-  meta = with stdenv.lib; {
-    homepage = http://xpra.org/;
-    downloadPage = "https://xpra.org/src/";
-    downloadURLRegexp = "xpra-.*[.]tar[.]xz$";
-    description = "Persistent remote applications for X";
-    platforms = platforms.linux;
-    license = licenses.gpl2;
-  };
-}