Compare commits

...
Sign in to create a new pull request.

41 commits

Author SHA1 Message Date
c20b1b3deb Release 6.5.3 2026-08-19 18:16:14 +02:00
32dcee0869 Release 6.5.2 2026-07-27 11:08:48 +02:00
Python Maint
bbefa6f1aa Rebuilt for Python 3.15.0b4 ABI change 2026-07-22 10:15:58 +02:00
Fedora Release Engineering
e26002cf3c Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild 2026-07-17 09:24:59 +00:00
9b2db3c019 Release 6.5.1 2026-07-05 21:38:10 +02:00
11cfad7141 Fix rhbz#2496082 2026-07-01 22:37:58 +02:00
ede8108a14 Fix wireshark dependency 2026-06-21 19:11:55 +02:00
a738b6055a Add wireshark as required package 2026-06-18 16:52:52 +02:00
0abb78cc26 Release 6.5 2026-06-18 16:34:46 +02:00
9c237c7b71 Release 6.5 2026-06-17 14:06:06 +02:00
Python Maint
35f60a9315 Rebuilt for Python 3.15 2026-06-03 23:53:45 +02:00
44ba426fe7 Release 6.4.4 2026-05-04 14:25:08 +02:00
Nicolas Chauvet
2230f6450e Rebuilt for libvpx-1.6.0 2026-03-19 22:29:16 +01:00
Tomáš Hrnčiar
62f74a79ba Fix invalid extras in %pyproject_buildrequires -x
The extras requested via -x do not match the project's
upstream metadata, causing a build failure with the new
extras validation in pyproject-rpm-macros.

See: https://src.fedoraproject.org/rpms/pyproject-rpm-macros/pull-request/534
2026-02-23 15:30:29 +01:00
ea8cea7b0e Set pygobject cflags 2026-02-06 14:24:12 +01:00
4dc62fbe24 Rebuild for procps-ng-4.0.6 2026-02-06 12:49:34 +01:00
31ae8a7c1b Release 6.4.3 2026-02-01 15:34:33 +01:00
93c0763d14 Fix runtime dependencies 2026-01-31 16:10:51 +01:00
a4ab6bd044 Release 6.4.2 2026-01-31 15:32:32 +01:00
1d31ac32be Release 6.4.1 2026-01-17 19:31:18 +01:00
441a7ed6a7 Fix rhbz#2425762 2026-01-02 13:56:03 +01:00
6b45e0bfeb Restore Requires packages 2025-12-19 22:02:28 +01:00
760755266a Set permmissions of /run/xpra/proxy directory 2025-12-19 21:41:47 +01:00
2c5f1a286f Remove Xwrapper.config| Remove invalid paths (rhbz#2413528#c10) 2025-12-19 17:01:21 +01:00
5edd0f38c9 Release 6.4 2025-12-08 16:04:36 +01:00
17859a7cbc Avoid backup of patched file 2025-12-03 12:06:27 +01:00
cc19caf6fb Fix rhbz#2417964 2025-12-03 11:54:14 +01:00
86f820622b Release 6.3.6 2025-11-09 15:56:32 +01:00
0d4804da39 Release 6.3.5 2025-11-05 21:22:30 +01:00
6d45e7c80c Release 6.3.4 (rhbz#2266632) 2025-10-27 22:40:40 +01:00
Dominik 'Rathann' Mierzejewski
661277ad12 Fixed build with FFmpeg 8 2025-10-20 11:45:35 +02:00
Python Maint
b98426abb3 Rebuilt for Python 3.14.0rc3 bytecode 2025-09-19 15:04:01 +02:00
Python Maint
912f50d33e Rebuilt for Python 3.14.0rc2 bytecode 2025-08-15 15:23:26 +02:00
Dominik 'Rathann' Mierzejewski
2a65a0b840 enable OpenH264 codec 2025-08-02 07:51:32 +02:00
Fedora Release Engineering
84731ea2d2 Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 21:03:00 +00:00
f0726afea1 Release 5.1.1 (rhbz#2378508) (rhbz#2377058) 2025-07-13 21:25:15 +02:00
f28bdb37bc Release 5.1 (rhbz#2350289) 2025-06-11 21:39:48 +02:00
Python Maint
afb4968a11 Rebuilt for Python 3.14 2025-06-03 14:09:14 +02:00
d67327a2cf Add sysusers.d config file to allow rpm to create users/groups automatically
See https://fedoraproject.org/wiki/Changes/RPMSuportForSystemdSysusers.
2025-02-11 17:03:13 +01:00
3505b50839 Fix GCC15 builds 2025-01-22 19:47:41 +01:00
Fedora Release Engineering
7c57f6a496 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-19 16:14:48 +00:00
6 changed files with 165 additions and 313 deletions

14
.gitignore vendored
View file

@ -89,3 +89,17 @@
/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

View file

@ -1,156 +0,0 @@
From 6722df9aeb90857bc1c979c92d47e57903e0ebd6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Robert-Andr=C3=A9=20Mauchin?= <zebob.m@gmail.com>
Date: Tue, 7 May 2024 07:23:07 +0200
Subject: [PATCH] Add compatibility with FFMPEG 7.0
channel_layout has been replaced with ch_layout
avcodec_close has been deprecated in favor of avcodec_free_context
avio: Constify data pointees of write callbacks
FF_API_FRAME_PICTURE_NUMBER has been deprecated
AV_PIX_FMT_XVMC has been deprecated
---
xpra/codecs/ffmpeg/decoder.pyx | 9 ++-------
xpra/codecs/ffmpeg/encoder.pyx | 37 ++++++++++++++++++++++------------
2 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/xpra/codecs/ffmpeg/decoder.pyx b/xpra/codecs/ffmpeg/decoder.pyx
index 4f71b5bf1f..f1df36a85a 100644
--- a/xpra/codecs/ffmpeg/decoder.pyx
+++ b/xpra/codecs/ffmpeg/decoder.pyx
@@ -295,6 +295,7 @@ cdef extern from "libavcodec/avcodec.h":
int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
AVFrame* av_frame_alloc()
void av_frame_free(AVFrame **frame)
+ int avcodec_close(AVCodecContext *avctx)
#actual decoding:
AVPacket *av_packet_alloc() nogil
@@ -818,7 +819,10 @@ cdef class Decoder:
img.clone_pixel_data()
log("clean_decoder() freeing AVCodecContext: %#x", <uintptr_t> self.codec_ctx)
if self.codec_ctx!=NULL:
- avcodec_free_context(&self.codec_ctx)
+ r = avcodec_close(self.codec_ctx)
+ if r!=0:
+ log.error("Error: failed to close decoder context %#x:", <uintptr_t> self.codec_ctx)
+ log.error(" %s", av_error_str(r))
f = self.file
if f:
self.file = None
diff --git a/xpra/codecs/ffmpeg/encoder.pyx b/xpra/codecs/ffmpeg/encoder.pyx
index 6af88a5629..5df0c590c0 100644
--- a/xpra/codecs/ffmpeg/encoder.pyx
+++ b/xpra/codecs/ffmpeg/encoder.pyx
@@ -120,10 +120,26 @@ cdef extern from "libavformat/avio.h":
AVIOContext *avio_alloc_context(unsigned char *buffer, int buffer_size, int write_flag,
void *opaque,
int (*read_packet)(void *opaque, uint8_t *buf, int buf_size),
- int (*write_packet)(void *opaque, uint8_t *buf, int buf_size) except 0,
+ int (*write_packet)(void *opaque, const uint8_t *buf, int buf_size) except 0,
int64_t (*seek)(void *opaque, int64_t offset, int whence))
+cdef extern from "libavutil/channel_layout.h":
+ ctypedef int AVChannelOrder
+ ctypedef int AVChannel
+ ctypedef struct AVChannelCustom:
+ AVChannel id
+ char name[16]
+ void *opaque
+ ctypedef union ChannelUnion:
+ uint64_t mask
+ AVChannelCustom* map
+ ctypedef struct AVChannelLayout:
+ AVChannelOrder order
+ int nb_channels
+ ChannelUnion u
+ void *opaque
+
cdef extern from "libavcodec/avcodec.h":
int FF_THREAD_SLICE #allow more than one thread per frame
int FF_THREAD_FRAME #Decode more than one frame at once
@@ -190,8 +206,6 @@ cdef extern from "libavcodec/avcodec.h":
int format
int key_frame
int64_t pts
- int coded_picture_number
- int display_picture_number
int quality
void *opaque
AVPictureType pict_type
@@ -288,14 +302,12 @@ cdef extern from "libavcodec/avcodec.h":
#skipped: AVColor*
int slices
int sample_rate
- int channels
AVSampleFormat sample_fmt
+ AVChannelLayout ch_layout
int frame_size
int frame_number
int block_align
int cutoff
- uint64_t channel_layout
- uint64_t request_channel_layout
#skipped: AVAudioServiceType
# AVSampleFormat
int refcounted_frames
@@ -483,7 +495,7 @@ cdef extern from "libavutil/opt.h":
AVOptionType AV_OPT_TYPE_VIDEO_RATE
AVOptionType AV_OPT_TYPE_DURATION
AVOptionType AV_OPT_TYPE_COLOR
- AVOptionType AV_OPT_TYPE_CHANNEL_LAYOUT
+ AVOptionType AV_OPT_TYPE_CHLAYOUT
AVOptionType AV_OPT_TYPE_BOOL
int AV_OPT_SEARCH_CHILDREN
@@ -686,7 +698,7 @@ AV_OPT_TYPES = {
AV_OPT_TYPE_VIDEO_RATE : "VIDEO_RATE",
AV_OPT_TYPE_DURATION : "DURATION",
AV_OPT_TYPE_COLOR : "COLOR",
- AV_OPT_TYPE_CHANNEL_LAYOUT : "CHANNEL_LAYOUT",
+ AV_OPT_TYPE_CHLAYOUT : "CHANNEL_LAYOUT",
AV_OPT_TYPE_BOOL : "BOOL",
}
@@ -1137,7 +1149,7 @@ cdef list_options(void *obj, const AVClass *av_class, int skip=1):
list_options(child, child_class, skip-1)
-cdef int write_packet(void *opaque, uint8_t *buf, int buf_size) except 0:
+cdef int write_packet(void *opaque, const uint8_t *buf, int buf_size) except 0:
global GEN_TO_ENCODER
encoder = GEN_TO_ENCODER.get(<uintptr_t> opaque)
#log.warn("write_packet(%#x, %#x, %#x) encoder=%s", <uintptr_t> opaque, <uintptr_t> buf, buf_size, type(encoder))
@@ -1504,7 +1517,7 @@ cdef class Encoder:
self.audio_ctx.time_base.num = 1
self.audio_ctx.bit_rate = 64000
self.audio_ctx.sample_rate = 44100
- self.audio_ctx.channels = 2
+ self.audio_ctx.ch_layout.nb_channels = 2
#if audio_codec.capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE:
# pass
#cdef AVDictionary *opts = NULL
@@ -1689,8 +1702,6 @@ cdef class Encoder:
self.av_frame.height = self.height
self.av_frame.format = self.pix_fmt
self.av_frame.pts = self.frames+1
- self.av_frame.coded_picture_number = self.frames+1
- self.av_frame.display_picture_number = self.frames+1
#if self.frames==0:
self.av_frame.pict_type = AV_PICTURE_TYPE_I
#self.av_frame.key_frame = 1
@@ -1823,7 +1834,7 @@ cdef class Encoder:
def write_packet(self, uintptr_t buf, int buf_size):
log("write_packet(%#x, %#x)", <uintptr_t> buf, buf_size)
- cdef uint8_t *cbuf = <uint8_t*> buf
+ cdef const uint8_t *cbuf = <const uint8_t*> buf
buffer = cbuf[:buf_size]
self.buffers.append(buffer)
return buf_size
--
2.44.0

View file

@ -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 <module>
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 2024-10-11 13:20:23.798168651 +0100
+++ ./setup.py 2024-10-11 13:23:23.220858810 +0100
@@ -514,7 +514,7 @@ def convert_doc(fsrc, fdst, fmt="html",
else:
cmd += ["--lua-filter", "./fs/bin/links-to-html.lua"]
r = subprocess.Popen(cmd).wait(TIMEOUT)
- 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))

View file

@ -1 +1 @@
SHA512 (xpra-5.0.10.tar.gz) = e1b01eb1d36351db460d7631dd33efd24e68d374784d803fcd8ad6774b25509dcd42c2d62fd00999ec513265745a3be17dde611a61c07fa70136f319a9a4eaca
SHA512 (xpra-6.5.3.tar.gz) = 98eee6577d26cf15cdf8115352e73601438804a69d5081d7af908d9c4fc03e44e723eb74cc6f468c92c8e935cc5e897bcdeda316d3f756905b368e83ac051d91

11
xpra-fix_audio.patch Normal file
View file

@ -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

256
xpra.spec
View file

@ -1,40 +1,11 @@
%bcond_with enc_x264
%bcond_with enc_x265
# Theses settings requires 64bit
%if 0%{?__isa_bits} == 64
%bcond_without dec_avcodec2
%bcond_without csc_swscale
%else
%bcond_with dec_avcodec2
%bcond_with csc_swscale
%endif
# 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
@ -48,20 +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: 5.0.10
Version: 6.5.3
Release: %autorelease
Epoch: 1
Summary: Remote display server for applications and desktops
# Automatically converted from old format: GPLv2+ and BSD and LGPLv3+ and MIT - review is highly recommended.
License: GPL-2.0-or-later AND LicenseRef-Callaway-BSD AND LGPL-3.0-or-later AND LicenseRef-Callaway-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
# Add compatibility with FFMPEG 7.0
# https://github.com/Xpra-org/xpra/pull/4216
Patch2: 0001-Add-compatibility-with-FFMPEG-7.0.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
@ -74,6 +50,7 @@ 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
@ -81,8 +58,11 @@ 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
@ -90,49 +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
# While ffmpeg-devel should only be needed in theses conditions, setup.py requires it anyway
#if %%{with dec_avcodec2} || %%{with csc_swscale}
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libavutil)
BuildRequires: pkgconfig(libswscale)
#endif
%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
@ -152,23 +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.
# https://github.com/Xpra-org/xpra/issues/4035#issuecomment-2405430577
#%%{?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
@ -181,42 +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.
%prep
%setup -q -n %{name}-%{version}
%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.
%patch -P1 -p1
%if 0%{?fedora} >= 41
%patch -P2 -p1
%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 <<EOF
g xpra -
EOF
%generate_buildrequires
%pyproject_buildrequires
%build
%set_build_flags
%py3_build -- \
--without-nvidia --without-pandoc_lua \
--with-verbose \
--with-vpx \
%{?_with_enc_x264} \
%{?_with_enc_x265} \
%{?_with_dec_avcodec2} \
%{?_with_csc_swscale} \
%{?_with_debug} \
--with-Xdummy \
--with-Xdummy_wrapper \
--without-strict \
--with-enc_ffmpeg
export CFLAGS="%{optflags} -I%{_includedir}/security %(pkgconf --cflags pygobject-3.0)"
%pyproject_wheel %{build_opts}
%install
%py3_install
%pyproject_install
%pyproject_save_files xpra
mkdir -p %{buildroot}%{_unitdir}
mv %{buildroot}/lib/systemd/system/xpra.* %{buildroot}%{_unitdir}/
# Install config files in the right directory
mv %{buildroot}%{_prefix}/etc %{buildroot}/
#move icon to proper directory
# move icon to proper directory
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/apps
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/64x64/apps
@ -229,25 +200,25 @@ install -pm 644 fs/share/icons/xpra-mdns.png %{buildroot}%{_datadir}/icons/hicol
rm -f %{buildroot}%{_datadir}/icons/xpra-shadow.png
install -pm 644 fs/share/icons/xpra-shadow.png %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/
#replace old file with horrible WindowsXP old image
# replace old file with horrible WindowsXP old image
rm -rf %{buildroot}%{_datadir}/appdata
mkdir -p %{buildroot}%{_metainfodir}
install -pm 644 %{SOURCE1} %{buildroot}%{_metainfodir}/
#Install nvenc.keys file
# Install nvenc.keys file
mkdir -p %{buildroot}%{_sysconfdir}/xpra
install -pm 644 fs/etc/xpra/nvenc.keys %{buildroot}%{_sysconfdir}/xpra
#remove doc stuff from /usr/share
# remove doc stuff from /usr/share
rm %{buildroot}%{_datadir}/xpra/COPYING
#fix shebangs from python3_sitearch
# fix shebangs from python3_sitearch
for i in `ack -rl '^#!/.*python' %{buildroot}%{python3_sitearch}/xpra`; do
%py3_shebang_fix $i
chmod 0755 $i
done
#fix permissions on shared objects
# fix permissions on shared objects
find %{buildroot}%{python3_sitearch}/xpra -name '*.so' \
-exec chmod 0755 {} \;
@ -272,17 +243,48 @@ rm -rf %{buildroot}%{_docdir}/xpra/Build
install -pm 644 README.md %{buildroot}%{_docdir}/xpra/
install -m0644 -D xpra.sysusers.conf %{buildroot}%{_sysusersdir}/xpra.conf
# Remove invalid paths
sed -e 's|build/bdist.linux-%{?_arch}/wheel/xpra-%{version}.data/data||g' -i %{buildroot}%{_sysconfdir}/xpra/conf.d/55_server_x11.conf
# Move Lua script into wireshark plugin directory and remove invalid /usr sub-directory
%define wireshark_plugindir %(pkg-config --variable plugindir wireshark)/epan
mkdir -p %{buildroot}%{wireshark_plugindir}
%ifarch %{ix86}
cp -p %{buildroot}/usr/%{_libdir}/wireshark/plugins/xpra_dissector.lua %{buildroot}%{wireshark_plugindir}/
%else
cp -p %{buildroot}/usr/%{wireshark_plugindir}/xpra_dissector.lua %{buildroot}%{wireshark_plugindir}/
%endif
rm -rf %{buildroot}/usr/%{_libdir}
%post
%systemd_post xpra-encoder.service
%systemd_post xpra.service
# Suggested by 'rpmlint -e post-without-tmpfile-creation'
%tmpfiles_create %{_tmpfilesdir}/xpra.conf
%preun
%systemd_preun xpra-encoder.service
%systemd_preun xpra.service
%postun
%systemd_postun_with_restart xpra-encoder.service
%systemd_postun_with_restart xpra.service
%check
%{?fedora:appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/xpra.appdata.xml}
desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
%pre
getent group xpra >/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
@ -296,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.*
@ -317,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