diff --git a/.gitignore b/.gitignore index 283cf77..885ad48 100644 --- a/.gitignore +++ b/.gitignore @@ -83,23 +83,3 @@ /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 new file mode 100644 index 0000000..ceacee9 --- /dev/null +++ b/ignore_assert_pandoc.patch @@ -0,0 +1,41 @@ +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 c8ed7c8..3f1674e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xpra-6.5.3.tar.gz) = 98eee6577d26cf15cdf8115352e73601438804a69d5081d7af908d9c4fc03e44e723eb74cc6f468c92c8e935cc5e897bcdeda316d3f756905b368e83ac051d91 +SHA512 (xpra-4.4.6.tar.gz) = b6236ded715d661c0de79b5e2e0315ed3077b410792986d85e88a89ead119cfcf31d49a6aad719e488300e800e585fc060d51cbf1b6aeccb0b0d8c8168712c81 diff --git a/xpra-fix_audio.patch b/xpra-fix_audio.patch deleted file mode 100644 index 5dab7ab..0000000 --- a/xpra-fix_audio.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- 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 933f86c..2109c62 100644 --- a/xpra.spec +++ b/xpra.spec @@ -1,11 +1,34 @@ +%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 # -%if 0%{?fedora} -%bcond_with openh264 -%else -%bcond_with openh264 +%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 %endif # Remove private provides from .so files in the python3_sitearch directory @@ -19,25 +42,16 @@ %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 +Version: 4.4.6 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 +License: GPLv2+ and BSD and LGPLv3+ and MIT 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 +Patch1: ignore_assert_pandoc.patch BuildRequires: python3-devel BuildRequires: gtk3-devel @@ -50,19 +64,14 @@ BuildRequires: desktop-file-utils BuildRequires: libvpx-devel BuildRequires: libXdamage-devel BuildRequires: libXres-devel -BuildRequires: lua-devel -BuildRequires: cups-devel -BuildRequires: python3-cups +BuildRequires: cups-devel, cups BuildRequires: redhat-rpm-config BuildRequires: python3-rpm-macros -BuildRequires: gcc-c++ +BuildRequires: gcc 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 @@ -70,30 +79,45 @@ 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 -BuildRequires: pkgconfig(libavcodec) -BuildRequires: pkgconfig(libavformat) -BuildRequires: pkgconfig(libavutil) -BuildRequires: pkgconfig(libswscale) -%if %{with openh264} -BuildRequires: noopenh264-devel + +%if %{with enc_x264} +BuildRequires: x264-devel +%endif +%if %{with dec_avcodec2} || %{with csc_swscale} +BuildRequires: ffmpeg-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 @@ -113,7 +137,22 @@ 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 @@ -126,68 +165,36 @@ 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 +%autosetup -p1 -n %{name}-%{version} # 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 -f %{pyproject_files} +%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 @@ -298,20 +274,19 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop %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 -%{_bindir}/xpra_Xdummy +%{_sysusersdir}/*.conf +%{python3_sitearch}/xpra/ +%{python3_sitearch}/*.egg-info %{_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.* @@ -320,32 +295,11 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop %{_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