diff --git a/.gitignore b/.gitignore index e69de29..283cf77 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,105 @@ +/xpra-0.14.21.tar.xz +/xpra-0.14.22.tar.xz +/xpra-0.14.24.tar.xz +/xpra-0.15.0.tar.xz +/xpra-0.15.1.tar.xz +/xpra-0.15.2.tar.xz +/xpra-0.15.3.tar.xz +/xpra-0.15.4.tar.xz +/xpra-0.15.5.tar.xz +/xpra-0.15.6.tar.xz +/xpra-0.15.7.tar.xz +/xpra-0.15.8.tar.xz +/xpra-0.15.9.tar.xz +/xpra-0.15.10.tar.xz +/xpra-0.16.0.tar.xz +/xpra-0.16.1.tar.xz +/xpra-0.16.2.tar.xz +/xpra-0.16.3.tar.xz +/xpra-0.17.4.tar.xz +/xpra-0.17.5.tar.xz +/xpra-0.17.6.tar.xz +/xpra-1.0.tar.xz +/xpra-1.0.2.tar.xz +/xpra-2.0.2.tar.xz +/xpra-2.0.3.tar.xz +/xpra-2.1.tar.xz +/xpra-2.1.1.tar.xz +/xpra-2.1.2.tar.xz +/xpra-2.1.3.tar.xz +/xpra-2.2.tar.xz +/xpra-2.2.1.tar.xz +/xpra-2.2.2.tar.xz +/xpra-2.2.3.tar.xz +/xpra-2.2.4.tar.xz +/xpra-2.2.5.tar.xz +/xpra-2.2.6.tar.xz +/xpra-2.3.tar.xz +/xpra-2.3.1.tar.xz +/xpra-2.3.2.tar.xz +/xpra-2.3.3.tar.xz +/xpra-2.3.4.tar.xz +/xpra-2.4.tar.xz +/xpra-2.4.1.tar.xz +/xpra-2.4.2.tar.xz +/xpra-2.4.3.tar.xz +/xpra-2.5.tar.xz +/xpra-2.5.1.tar.xz +/xpra-2.5.2.tar.xz +/xpra-2.5.3.tar.xz +/xpra-3.0.tar.xz +/xpra-3.0.1.tar.xz +/xpra-3.0.2.tar.xz +/xpra-3.0.3.tar.xz +/xpra-3.0.5.tar.xz +/xpra-3.0.6.tar.xz +/xpra-3.0.7.tar.xz +/xpra-3.0.8.tar.xz +/xpra-3.0.9.tar.xz +/xpra-4.0.tar.xz +/xpra-4.0.1.tar.xz +/xpra-4.0.2.tar.xz +/xpra-4.0.3.tar.xz +/xpra-4.0.4.tar.xz +/xpra-4.0.5.tar.xz +/xpra-4.0.6.tar.xz +/xpra-4.1.tar.gz +/xpra-4.1.1.tar.gz +/xpra-4.1.2.tar.gz +/xpra-4.1.3.tar.gz +/xpra-4.2.tar.gz +/xpra-4.2.1.tar.gz +/xpra-4.2.2.tar.gz +/xpra-4.2.3.tar.gz +/xpra-4.3.tar.gz +/xpra-4.3.1.tar.gz +/xpra-4.3.2.tar.gz +/xpra-4.3.3.tar.gz +/xpra-4.3.4.tar.gz +/xpra-4.4.tar.gz +/xpra-4.4.1.tar.gz +/xpra-4.4.2.tar.gz +/xpra-4.4.3.tar.gz +/xpra-4.4.4.tar.gz +/xpra-4.4.5.tar.gz +/xpra-4.4.6.tar.gz +/xpra-5.0.tar.gz +/xpra-5.0.1.tar.gz +/xpra-5.0.2.tar.gz +/xpra-5.0.3.tar.gz +/xpra-5.0.6.tar.gz +/xpra-5.0.10.tar.gz +/xpra-5.1.tar.gz +/xpra-5.1.1.tar.gz +/xpra-6.3.4.tar.gz +/xpra-6.3.5.tar.gz +/xpra-6.3.6.tar.gz +/xpra-6.4.tar.gz +/xpra-6.4.1.tar.gz +/xpra-6.4.2.tar.gz +/xpra-6.4.3.tar.gz +/xpra-6.4.4.tar.gz +/xpra-6.5.tar.gz +/xpra-6.5.1.tar.gz +/xpra-6.5.2.tar.gz +/xpra-6.5.3.tar.gz diff --git a/sources b/sources index e69de29..c8ed7c8 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +SHA512 (xpra-6.5.3.tar.gz) = 98eee6577d26cf15cdf8115352e73601438804a69d5081d7af908d9c4fc03e44e723eb74cc6f468c92c8e935cc5e897bcdeda316d3f756905b368e83ac051d91 diff --git a/xpra-fix_audio.patch b/xpra-fix_audio.patch new file mode 100644 index 0000000..5dab7ab --- /dev/null +++ b/xpra-fix_audio.patch @@ -0,0 +1,11 @@ +--- a/fs/etc/xpra/xpra.orig.conf 2025-11-02 12:49:06.000000000 +0100 ++++ b/fs/etc/xpra/xpra.conf 2025-11-09 15:18:11.280317871 +0100 +@@ -20,3 +20,8 @@ + # may just be specified multiple times. + # - You may break a long line into multiple lines + # by ending each line with a backslash '\'. ++ ++xvfb = Xvfb -screen 0 1920x1100x24 -nolisten tcp -noreset ++ ++# Use PipeWire's PulseAudio socket, do NOT spawn pulseaudio ++pulseaudio = no diff --git a/xpra.appdata.xml b/xpra.appdata.xml new file mode 100644 index 0000000..badc8d5 --- /dev/null +++ b/xpra.appdata.xml @@ -0,0 +1,40 @@ + + + xpra.desktop + CC0-1.0 + GPL-2.0+ and BSD and LGPL-3.0+ and MIT + Xpra + A multi-platform screen and application forwarding system + +

+ Xpra is a multi-platform persistent remote display server and client for + forwarding applications and desktop screens. +

+

+ It gives you remote access to individual applications or full desktops. + On X11, it is also known as 'screen for X11': it allows you to run programs, + usually on a remote host, direct their display to your local machine, and + then to disconnect from these programs and reconnect from the same + or another machine, without losing any state. + It can also be used to forward full desktops, from X11 servers, + MS Windows, or Mac OS X. + Xpra also allows forwarding of sound, clipboard and printing services. +

+

+ With X11 programs, Xpra can be used "rootless" or "seamless": + programs you run under it show up on your desktop as regular programs, + managed by your regular window manager. + Sessions can be accessed over SSH, or password protected over plain + TCP sockets. Xpra is usable over reasonably slow links and does its + best to adapt to changing network bandwidth constraints. +

+
+ ​ + + https://sagitter.fedorapeople.org/xpra-screenshots/xpra_launcher.png + The session launcher dialog running on Fedora + +​ + http://xpra.org/ + sagitter_at_fedoraproject.org +
diff --git a/xpra.rpmlintrc b/xpra.rpmlintrc new file mode 100644 index 0000000..838e43d --- /dev/null +++ b/xpra.rpmlintrc @@ -0,0 +1,16 @@ +# Edited by sagitter (sagitter AT fedoraproject dot org) + +# KNOWN BUGS: +# + +# TESTS: +##### SRPMs ##### + +# ERRORS: +##### RPMs ##### + +# Required by upstream +addFilter(r'(non-readable) /usr/lib/cups/backend/xpraforwarder') +addFilter(r'(non-standard-executable-perm) /usr/lib/cups/backend/xpraforwarder') + + diff --git a/xpra.spec b/xpra.spec new file mode 100644 index 0000000..933f86c --- /dev/null +++ b/xpra.spec @@ -0,0 +1,351 @@ +# For debugging only +%bcond_with debug +# + +%if 0%{?fedora} +%bcond_with openh264 +%else +%bcond_with openh264 +%endif + +# Remove private provides from .so files in the python3_sitearch directory +%global __provides_exclude_from ^%{python3_sitearch}/.*\\.so$ + +# Note: cups-config not in buildroot during srpm build, so we use the +# conditional execution to silence erros during srpm build. +%if 0%{?_cups_serverbin:1} +%global cupslibdir %_cups_serverbin +%else +%global cupslibdir %(cups-config --serverbin 2> /dev/null || echo "/usr/lib/cups") +%endif + +%global gnome_shell_extension input-source-manager@xpra_org + +%global build_opts -C--global-option=--without-nvidia -C--global-option=--without-pandoc_lua -C--global-option=--with-verbose -C--global-option=--with-Xdummy -C--global-option=--with-Xdummy_wrapper -C--global-option=--without-strict -C--global-option=--with-vpx %{?with_debug:-C--global-option=--with-debug} %{?with_openh264:-C--global-option=--with-openh264} -C--global-option=--without-cuda_rebuild -C--global-option=--with-client -C--global-option=--without-qt6_client -C--global-option=--without-pyglet_client -C--global-option=--without-enc_x264 + +Name: xpra +Version: 6.5.3 +Release: %autorelease +Epoch: 1 +Summary: Remote display server for applications and desktops +License: GPL-2.0-or-later AND BSD-2-Clause AND LGPL-3.0-or-later AND BSD-3-Clause +URL: https://www.xpra.org/ +Source0: https://github.com/Xpra-org/xpra/archive/refs/tags/v%{version}/%{name}-%{version}.tar.gz + +# Appdata file for Fedora +Source1: %{name}.appdata.xml + +# Suggested from update testing +# https://bodhi.fedoraproject.org/updates/FEDORA-2025-0882918c25#comment-4407961 +Patch0: %{name}-fix_audio.patch + +BuildRequires: python3-devel +BuildRequires: gtk3-devel +BuildRequires: libXtst-devel +BuildRequires: libxkbfile-devel +BuildRequires: lz4-devel +BuildRequires: python3-Cython +BuildRequires: ack +BuildRequires: desktop-file-utils +BuildRequires: libvpx-devel +BuildRequires: libXdamage-devel +BuildRequires: libXres-devel +BuildRequires: lua-devel +BuildRequires: cups-devel +BuildRequires: python3-cups +BuildRequires: redhat-rpm-config +BuildRequires: python3-rpm-macros +BuildRequires: gcc-c++ +BuildRequires: pam-devel +BuildRequires: pandoc + +# needs by setup.py to detect systemd `sd_listen_ENABLED = POSIX and pkg_config_ok("--exists", "libsystemd")` +BuildRequires: systemd-devel + +BuildRequires: systemd-rpm-macros +%if 0%{?fedora} +BuildRequires: procps-ng-devel +%endif +BuildRequires: pkgconfig(libavif) +BuildRequires: pkgconfig(libqrencode) +BuildRequires: libdrm-devel +BuildRequires: pkgconfig(libwebp) +BuildRequires: python3-gobject-devel +BuildRequires: libappstream-glib +BuildRequires: libasan +BuildRequires: python3-cairo-devel +BuildRequires: xorg-x11-server-Xorg +BuildRequires: xorg-x11-drv-dummy +BuildRequires: xorg-x11-server-Xvfb +BuildRequires: xorg-x11-xauth +BuildRequires: xxhash-devel +BuildRequires: xkbcomp +BuildRequires: setxkbmap +%if %{with debug} +BuildRequires: libasan +%endif +BuildRequires: pkgconfig(libavcodec) +BuildRequires: pkgconfig(libavformat) +BuildRequires: pkgconfig(libavutil) +BuildRequires: pkgconfig(libswscale) +%if %{with openh264} +BuildRequires: noopenh264-devel +%endif + +Requires: python3-pillow +Requires: python3-lz4 +Requires: dbus-x11 +Requires: xmodmap +Requires: xrandr +Requires: xorg-x11-drv-dummy%{?_isa} +Requires: xorg-x11-xauth%{?_isa} +Requires: xorg-x11-server-Xorg%{?_isa} +Requires: gstreamer1%{?_isa} +Requires: gstreamer1-plugins-base%{?_isa} +Requires: gstreamer1-plugins-good%{?_isa} +%if 0%{?fedora} || 0%{?rhel} >= 9 +Requires: pipewire%{?_isa} +Requires: pipewire-utils%{?_isa} +Requires: pipewire-pulseaudio%{?_isa} +%else +Requires: pulseaudio%{?_isa} +Requires: pulseaudio-utils%{?_isa} +%endif +Requires: cups-filesystem +Requires: shared-mime-info%{?_isa} +Requires: systemd-udev%{?_isa} +%description +Xpra is "screen for X": it allows you to run X programs, usually on a remote +host, direct their display to your local machine, and then to disconnect from +these programs and reconnect from the same or another machine, without losing +any state. It gives you remote access to individual applications. + +Xpra is "rootless" or "seamless": programs you run under it show up on your +desktop as regular programs, managed by your regular window manager. +Sessions can be accessed over SSH, or password protected over plain TCP sockets. +Xpra is usable over reasonably slow links and does its best to adapt to changing +network bandwidth constraints. + +%package -n %{name}-client-gnome +Summary: Gnome integration for the xpra client +Requires: %{name}-client-gtk3%{?_isa} = 1:%{version}-%{release} +Requires: gnome-shell-extension-appindicator +%description -n %{name}-client-gnome +This package installs the GNOME Shell extensions +that can help in restoring the system tray functionality. +It also includes the gnome_shell_extension extension which +is required for querying and activating keyboard input sources. + +%package -n %{name}-client-gtk3 +Summary: GTK3 xpra client +BuildRequires: xclip +Requires: %{name}%{?_isa} = 1:%{version}-%{release} +%description -n %{name}-client-gtk3 +This package contains the GTK3 xpra client. + +%package -n %{name}-plugin-lua +Summary: Wireshark/tshark Lua dissector for the Xpra remote display protocol +BuildRequires: wireshark-devel +%{?lua_version:Requires: lua(abi) = %{lua_version}} +Requires: %{name}%{?_isa} = 1:%{version}-%{release} +Requires: wireshark-cli%{?_isa} +%description -n %{name}-plugin-lua +The dissector registers on TCP port 14500 (xpra default) and also +installs a heuristic detector so it picks up traffic on any port. +Use Decode As → Xpra to force it on a different port. + +%prep +%autosetup -n %{name}-%{version} -N + +%if 0%{?fedora} || 0%{?rhel} >= 9 +%patch -P 0 -p1 -b .backup +%endif + +rm -rf *.egg-info + +# cc1: error: unrecognized compiler option ‘-mfpmath=387’ +%ifarch %{arm} +sed -i 's|-mfpmath=387|-mfloat-abi=hard|' setup.py +%endif + +# Create a sysusers.d config file +cat >xpra.sysusers.conf <