summaryrefslogtreecommitdiffstats
path: root/pkgs/tools/X11/xpra
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/X11/xpra
parentb2dabdc697b760b3c95056c2dd8dc2771ef93a12 (diff)
parentd4d87b049ba127df57bdb03bc9d960fac964a5a1 (diff)
Merge pull request #46613 from jtojnar/xpra-gtk3
xpra: port to gtk3
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
-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;
- };
-}