Compare commits
1 commit
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aa267f2158 |
6 changed files with 313 additions and 167 deletions
14
.gitignore
vendored
14
.gitignore
vendored
|
|
@ -89,17 +89,3 @@
|
|||
/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
|
||||
|
|
|
|||
156
0001-Add-compatibility-with-FFMPEG-7.0.patch
Normal file
156
0001-Add-compatibility-with-FFMPEG-7.0.patch
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
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
|
||||
41
ignore_assert_pandoc.patch
Normal file
41
ignore_assert_pandoc.patch
Normal file
|
|
@ -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 <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))
|
||||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (xpra-6.5.3.tar.gz) = 98eee6577d26cf15cdf8115352e73601438804a69d5081d7af908d9c4fc03e44e723eb74cc6f468c92c8e935cc5e897bcdeda316d3f756905b368e83ac051d91
|
||||
SHA512 (xpra-5.0.10.tar.gz) = e1b01eb1d36351db460d7631dd33efd24e68d374784d803fcd8ad6774b25509dcd42c2d62fd00999ec513265745a3be17dde611a61c07fa70136f319a9a4eaca
|
||||
|
|
|
|||
|
|
@ -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
|
||||
256
xpra.spec
256
xpra.spec
|
|
@ -1,11 +1,40 @@
|
|||
%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
|
||||
#
|
||||
|
||||
%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 +48,20 @@
|
|||
%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
|
||||
Version: 5.0.10
|
||||
Release: %autorelease -b 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
|
||||
# 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
|
||||
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
|
||||
# Add compatibility with FFMPEG 7.0
|
||||
# https://github.com/Xpra-org/xpra/pull/4216
|
||||
Patch2: 0001-Add-compatibility-with-FFMPEG-7.0.patch
|
||||
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: gtk3-devel
|
||||
|
|
@ -50,7 +74,6 @@ 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
|
||||
|
|
@ -58,11 +81,8 @@ 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
|
||||
|
|
@ -70,30 +90,49 @@ 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)
|
||||
%if %{with openh264}
|
||||
BuildRequires: noopenh264-devel
|
||||
%endif
|
||||
#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 +152,23 @@ 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
|
||||
|
|
@ -126,68 +181,40 @@ 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
|
||||
%setup -q -n %{name}-%{version}
|
||||
|
||||
%if 0%{?fedora} || 0%{?rhel} >= 9
|
||||
%patch -P 0 -p1 -b .backup
|
||||
%endif
|
||||
|
||||
rm -rf *.egg-info
|
||||
%patch -P1 -p1
|
||||
%patch -P2 -p1
|
||||
|
||||
# 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
|
||||
export CFLAGS="%{optflags} -I%{_includedir}/security %(pkgconf --cflags pygobject-3.0)"
|
||||
%pyproject_wheel %{build_opts}
|
||||
%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
|
||||
|
||||
%install
|
||||
%pyproject_install
|
||||
%pyproject_save_files xpra
|
||||
%py3_install
|
||||
|
||||
# Install config files in the right directory
|
||||
mv %{buildroot}%{_prefix}/etc %{buildroot}/
|
||||
mkdir -p %{buildroot}%{_unitdir}
|
||||
mv %{buildroot}/lib/systemd/system/xpra.* %{buildroot}%{_unitdir}/
|
||||
|
||||
# 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
|
||||
|
||||
|
|
@ -200,25 +227,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 {} \;
|
||||
|
||||
|
|
@ -243,48 +270,17 @@ 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 -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 +294,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 +315,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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue