diff --git a/.gitignore b/.gitignore index 885ad48..283cf77 100644 --- a/.gitignore +++ b/.gitignore @@ -83,3 +83,23 @@ /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/ignore_assert_pandoc.patch b/ignore_assert_pandoc.patch deleted file mode 100644 index ceacee9..0000000 --- a/ignore_assert_pandoc.patch +++ /dev/null @@ -1,41 +0,0 @@ -only on ppc64le pandoc returns -11 - - Debian.md -> Debian.html -Traceback (most recent call last): - File "/builddir/build/BUILD/xpra-4.4.4/setup.py", line 2384, in - main() - File "/builddir/build/BUILD/xpra-4.4.4/setup.py", line 2380, in main - setup(**setup_options) - File "/usr/lib64/python3.11/distutils/core.py", line 148, in setup - dist.run_commands() - File "/usr/lib64/python3.11/distutils/dist.py", line 966, in run_commands - self.run_command(cmd) - File "/usr/lib64/python3.11/distutils/dist.py", line 985, in run_command - cmd_obj.run() - File "/usr/lib64/python3.11/distutils/command/install.py", line 584, in run - self.run_command(cmd_name) - File "/usr/lib64/python3.11/distutils/cmd.py", line 313, in run_command - self.distribution.run_command(command) - File "/usr/lib64/python3.11/distutils/dist.py", line 985, in run_command - cmd_obj.run() - File "/builddir/build/BUILD/xpra-4.4.4/setup.py", line 1810, in run - convert_doc_dir("./docs", doc_dir) - File "/builddir/build/BUILD/xpra-4.4.4/setup.py", line 423, in convert_doc_dir - convert_doc_dir(fsrc, fdst, fmt, force) - File "/builddir/build/BUILD/xpra-4.4.4/setup.py", line 426, in convert_doc_dir - convert_doc(fsrc, fdst, fmt, force) - File "/builddir/build/BUILD/xpra-4.4.4/setup.py", line 413, in convert_doc - assert r==0, "'%s' returned %s" % (" ".join(cmd), r) - ^^^^ -AssertionError: 'pandoc --from markdown --to html -o /builddir/build/BUILDROOT/xpra-4.4.4-1.fc38.ppc64le/usr/share/doc/xpra/Build/Debian.html ./docs/Build/Debian.md --lua-filter ./fs/bin/links-to-html.lua' returned -11 ---- ./setup.py.orig 2023-03-13 17:59:39.193977373 +0000 -+++ ./setup.py 2023-03-13 17:59:48.477944801 +0000 -@@ -410,7 +410,7 @@ def convert_doc(fsrc, fdst, fmt="html", - else: - cmd += ["--lua-filter", "./fs/bin/links-to-html.lua"] - r = subprocess.Popen(cmd).wait(30) -- assert r==0, "'%s' returned %s" % (" ".join(cmd), r) -+ #assert r==0, "'%s' returned %s" % (" ".join(cmd), r) - - def convert_doc_dir(src, dst, fmt="html", force=False): - print("%-20s -> %s" % (src, dst)) diff --git a/sources b/sources index 3f1674e..c8ed7c8 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xpra-4.4.6.tar.gz) = b6236ded715d661c0de79b5e2e0315ed3077b410792986d85e88a89ead119cfcf31d49a6aad719e488300e800e585fc060d51cbf1b6aeccb0b0d8c8168712c81 +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.spec b/xpra.spec index 2109c62..933f86c 100644 --- a/xpra.spec +++ b/xpra.spec @@ -1,34 +1,11 @@ -%bcond_with enc_x264 -%bcond_with enc_x265 -%bcond_with dec_avcodec2 -%bcond_with csc_swscale - # For debugging only %bcond_with debug -%if %{with debug} -%global _with_debug --with-debug -%endif # -%global __js_jquery_latest %{_datadir}/javascript/jquery/latest/ - -# These are necessary as the _with_foo is *not* defined if the -# --with flag isn't specifed, and we need to have the --without -# specified option in that case. -%if %{without enc_x264} -%global _with_enc_x264 --without-enc_x264 -%endif - -%if %{with enc_x265} -%global _with_enc_x265 --with-enc_x265 -%endif - -%if %{without dec_avcodec2} -%global _with_dec_avcodec2 --without-dec_avcodec2 -%endif - -%if %{without csc_swscale} -%global _with_csc_swscale --without-csc_swscale +%if 0%{?fedora} +%bcond_with openh264 +%else +%bcond_with openh264 %endif # Remove private provides from .so files in the python3_sitearch directory @@ -42,16 +19,25 @@ %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: 4.4.6 +Version: 6.5.3 Release: %autorelease +Epoch: 1 Summary: Remote display server for applications and desktops -License: GPLv2+ and BSD and LGPLv3+ and MIT +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 -Patch1: ignore_assert_pandoc.patch + +# 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 @@ -64,14 +50,19 @@ BuildRequires: desktop-file-utils BuildRequires: libvpx-devel BuildRequires: libXdamage-devel BuildRequires: libXres-devel -BuildRequires: cups-devel, cups +BuildRequires: lua-devel +BuildRequires: cups-devel +BuildRequires: python3-cups BuildRequires: redhat-rpm-config BuildRequires: python3-rpm-macros -BuildRequires: gcc +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 @@ -79,45 +70,30 @@ BuildRequires: pkgconfig(libavif) BuildRequires: pkgconfig(libqrencode) BuildRequires: libdrm-devel BuildRequires: pkgconfig(libwebp) -%if 0%{?el8} -#BuildRequires: xorg-x11-server-Xvfb -#BuildRequires: cairo-devel -BuildRequires: pygobject3-devel -%else BuildRequires: python3-gobject-devel -%endif 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 - -%if %{with enc_x264} -BuildRequires: x264-devel -%endif -%if %{with dec_avcodec2} || %{with csc_swscale} -BuildRequires: ffmpeg-devel +BuildRequires: pkgconfig(libavcodec) +BuildRequires: pkgconfig(libavformat) +BuildRequires: pkgconfig(libavutil) +BuildRequires: pkgconfig(libswscale) +%if %{with openh264} +BuildRequires: noopenh264-devel %endif Requires: python3-pillow -Requires: python3-cups -Requires: python3-pyopengl -Requires: python3-gobject -Requires: python3-inotify Requires: python3-lz4 -Requires: python3-ldap3 -Requires: python3-rencode -Requires: python3-netifaces -Requires: python3-dbus -Requires: python3-numpy -%if 0%{?fedora} -Requires: python3-zeroconf -%endif Requires: dbus-x11 Requires: xmodmap Requires: xrandr @@ -137,22 +113,7 @@ Requires: pulseaudio-utils%{?_isa} %endif Requires: cups-filesystem Requires: shared-mime-info%{?_isa} -Requires: js-jquery - -# python3-opencv is required for webcam forwarding support, client-side only. -# Available on Fedora only. -%{?fedora:Requires: python3-opencv} - -# Needed to create the xpra group -Requires(pre): shadow-utils - -# xpra-html5 is now separately provided -Obsoletes: xpra-html5 < 0:4.1-1 - Requires: systemd-udev%{?_isa} -Obsoletes: xpra-udev < %{version}-%{release} -Provides: xpra-udev = %{version}-%{release} - %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 @@ -165,36 +126,68 @@ 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 -p1 -n %{name}-%{version} +%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 </dev/null || groupadd -r xpra -%files +%files -f %{pyproject_files} %license COPYING %dir %{_sysconfdir}/xpra %dir %{_sysconfdir}/xpra/conf.d +%dir %{_sysconfdir}/xpra/content-type +%dir %{_sysconfdir}/xpra/pulse +%dir %{_rundir}/xpra +%config(noreplace) %{_sysconfdir}/xpra/pulse/xpra.pa %config(noreplace) %{_sysconfdir}/xpra/*.conf %config(noreplace) %{_sysconfdir}/xpra/nvenc.keys %config(noreplace) %{_sysconfdir}/xpra/conf.d/*.conf @@ -274,19 +298,20 @@ getent group xpra >/dev/null || groupadd -r xpra %config(noreplace) %{_sysconfdir}/xpra/content-type/30_title.conf %config(noreplace) %{_sysconfdir}/xpra/content-type/50_class.conf %config(noreplace) %{_sysconfdir}/xpra/content-type/70_commands.conf +%config(noreplace) %{_sysconfdir}/xpra/content-type/90_fallback.conf %config(noreplace) %{_sysconfdir}/xpra/http-headers/00_nocache.txt %config(noreplace) %{_sysconfdir}/xpra/http-headers/10_content_security_policy.txt +%ghost %attr(1700,-,xpra) %{_rundir}/xpra/proxy %{_libexecdir}/xpra/ %{_bindir}/xpra %{_bindir}/xpra_launcher %{_bindir}/run_scaled -%{_sysusersdir}/*.conf -%{python3_sitearch}/xpra/ -%{python3_sitearch}/*.egg-info +%{_bindir}/xpra_Xdummy %{_datadir}/applications/xpra*.desktop %{_datadir}/icons/hicolor/48x48/apps/xpra-mdns.png %{_datadir}/icons/hicolor/48x48/apps/xpra-shadow.png %{_datadir}/icons/hicolor/64x64/apps/xpra.png +%{_datadir}/icons/xpra-large.png %{_mandir}/man1/xpra.1.* %{_mandir}/man1/xpra_*.1.* %{_mandir}/man1/run_scaled.1.* @@ -295,11 +320,32 @@ getent group xpra >/dev/null || groupadd -r xpra %{_datadir}/xpra/ %{cupslibdir}/backend/xpraforwarder %{_tmpfilesdir}/xpra.conf -%dir %{_rundir}/xpra %{_docdir}/xpra %{_unitdir}/xpra.service +%{_unitdir}/xpra-encoder.service %{_unitdir}/xpra.socket +%{_unitdir}/xpra-encoder.socket %{_udevrulesdir}/71-xpra-virtual-pointer.rules +%{_sysusersdir}/xpra.conf + +%files -n %{name}-client-gtk3 +%{python3_sitearch}/xpra/client/gui/ +%{python3_sitearch}/xpra/client/gtk3/ +%{_libexecdir}/xpra/xpra_signal_listener +%{_datadir}/applications/xpra-launcher.desktop +%{_datadir}/applications/xpra-gui.desktop +%{_datadir}/applications/xpra.desktop +%{_datadir}/mime/packages/application-x-xpraconfig.xml +%{_datadir}/xpra/autostart.desktop + +%files -n %{name}-client-gnome +%{_datadir}/gnome-shell/extensions/%{gnome_shell_extension}/COPYING +%{_datadir}/gnome-shell/extensions/%{gnome_shell_extension}/README.md +%{_datadir}/gnome-shell/extensions/%{gnome_shell_extension}/extension.js +%{_datadir}/gnome-shell/extensions/%{gnome_shell_extension}/metadata.json + +%files -n %{name}-plugin-lua +%{wireshark_plugindir}/xpra_dissector.lua %changelog %autochangelog