summaryrefslogtreecommitdiffstats
path: root/pkgs/tools/X11/xpra
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2018-09-13 17:43:31 +0200
committerJan Tojnar <jtojnar@gmail.com>2018-10-04 03:37:10 +0200
commit3b685ee5171416ef322f244187ec9bee01faa358 (patch)
treede99b1e26cabf826d74e319824fdbe728769fb35 /pkgs/tools/X11/xpra
parent2e38f5fc6e85b84936deedfe256a9918c2c775a5 (diff)
xpra: modernize
Port to Python 3 and GTK+ 3.
Diffstat (limited to 'pkgs/tools/X11/xpra')
-rw-r--r--pkgs/tools/X11/xpra/default.nix64
-rw-r--r--pkgs/tools/X11/xpra/fix-paths.patch33
2 files changed, 66 insertions, 31 deletions
diff --git a/pkgs/tools/X11/xpra/default.nix b/pkgs/tools/X11/xpra/default.nix
index 915144daa908..4df793c5b166 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 = "1azvvddjfq7lb5kmbn0ilgq2nf7pmymsc3b9lhbjld6w156qdv01";
};
- 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