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 python2Packages; [ - pillow pygtk pygobject2 rencode pycrypto cryptography pycups lz4 dbus-python - netifaces numpy websockify pygobject3 gst-python pam + propagatedBuildInputs = with python3.pkgs; [ + pillow rencode pycrypto cryptography pycups lz4 dbus-python + netifaces numpy websockify pygobject3 pycairo gst-python pam ]; - 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"]; + NIX_CFLAGS_COMPILE = [ + # error: 'import_cairo' defined but not used + "-Wno-error=unused-function" + ]; - 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; - }; -} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 8fcf0baba02d..624f2fa9d2c2 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -316,6 +316,7 @@ mapAliases ({ xmonad_log_applet_gnome3 = xmonad_log_applet; # added 2018-05-01 xf86_video_nouveau = xorg.xf86videonouveau; # added 2015-09 xlibs = xorg; # added 2015-09 + xpraGtk3 = xpra; # added 2018-09-13 youtubeDL = youtube-dl; # added 2014-10-26 # added 2017-05-27 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b8b09186acc5..7c8e3fd04f69 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -19791,8 +19791,6 @@ with pkgs; xpra = callPackage ../tools/X11/xpra { }; libfakeXinerama = callPackage ../tools/X11/xpra/libfakeXinerama.nix { }; - #TODO: 'pil' is not available for python3, yet - xpraGtk3 = callPackage ../tools/X11/xpra/gtk3.nix { inherit (texFunctions) fontsConf; inherit (python3Packages) buildPythonApplication python cython pygobject3 pycairo; }; xrectsel = callPackage ../tools/X11/xrectsel { };