user [email protected]
usertags 1086122 python3.15
tags 1086122 patch
thanks

Hi!

While rebuilding the python related packages against the Python 3.15rc2
version I ran into this FTBFS [1].

The package has been failing to build and accumulating problems for a
few years now. I've managed to get it back to buildng, by applying the
following changes:
  - Use setuptools
  - Upstream commit d1523ba82517bbb0a4fc39064fd5f62a72f48ff5
    "compatibility with Cython 3.1"
  - Add patch to deal with python 3.14's removal of
    PyObject_AsReadBuffer()/PyObject_AsWriteBuffer()
  - Add patch to deal with pygobject-types.h split
  - Add patch to deal with the NAL_UNIT_CODED_SLICE_TLA_R rename
  - Add upstream patch ccfbf4ea1f "#4216 minimal patch for re-enabling
    decoder and swscale with ffmpeg v7"
  - Drop ffmpeg encoder

I've applied these fixes in the sandbox [2] to verify that it builds
successfully, these should be applied in Debian to get the package back
to a healthy state.

Happy hacking,

[1]: https://debusine.debian.net/debian/r-python-python3.15/artifact/4587894/
[2]: https://debusine.debian.net/debian/r-python-python3.15/

--
"Can you imagine what I would do if I could do all I can?" -- Sun Tzu
Saludos /\/\ /\ >< `/
diff -Nru xpra-3.1.5+dfsg1/debian/changelog xpra-3.1.5+dfsg1/debian/changelog
--- xpra-3.1.5+dfsg1/debian/changelog   2023-09-15 13:15:05.000000000 +0200
+++ xpra-3.1.5+dfsg1/debian/changelog   2026-09-10 17:28:44.000000000 +0200
@@ -1,3 +1,19 @@
+xpra (3.1.5+dfsg1-0.3) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Add patch to use setuptools shim as a replacement for distutils
+  * Add setuptools as a build dependency
+  * Backport upstream patch d1523ba compatibility with Cython 3.1
+  * Add patch to deal with python 3.14's removal of
+    PyObject_AsReadBuffer()/PyObject_AsWriteBuffer()
+  * Add patch to deal with pygobject-types.h split
+  * Add patch to deal with the NAL_UNIT_CODED_SLICE_TLA_R rename
+  * Add upstream patch ccfbf4ea1f "#4216 minimal patch for re-enabling
+    decoder and swscale with ffmpeg v7"
+  * Drop ffmpeg encoder
+
+ -- Maximiliano Curia <[email protected]>  Thu, 10 Sep 2026 17:28:44 +0200
+
 xpra (3.1.5+dfsg1-0.2) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -Nru xpra-3.1.5+dfsg1/debian/control xpra-3.1.5+dfsg1/debian/control
--- xpra-3.1.5+dfsg1/debian/control     2023-09-15 13:15:05.000000000 +0200
+++ xpra-3.1.5+dfsg1/debian/control     2026-09-10 17:28:44.000000000 +0200
@@ -26,6 +26,7 @@
     ,libxrandr-dev
     ,libxtst-dev
     ,python3-all-dev
+    ,python3-setuptools
     ,python3-cairo-dev
     ,python-gi-dev
 ## Build-time detection of path to Xorg or xvfb binary
diff -Nru xpra-3.1.5+dfsg1/debian/patches/cython-3.1-compat.patch 
xpra-3.1.5+dfsg1/debian/patches/cython-3.1-compat.patch
--- xpra-3.1.5+dfsg1/debian/patches/cython-3.1-compat.patch     1970-01-01 
01:00:00.000000000 +0100
+++ xpra-3.1.5+dfsg1/debian/patches/cython-3.1-compat.patch     2026-09-10 
17:28:44.000000000 +0200
@@ -0,0 +1,131 @@
+Description: compatibility with Cython 3.1
+Author: Antoine Martin <[email protected]>
+Origin: upstream, 
https://github.com/Xpra-org/xpra/commit/d1523ba82517bbb0a4fc39064fd5f62a72f48ff5
+Forwarded: not-needed
+Index: b/xpra/codecs/v4l2/pusher.pyx
+===================================================================
+--- a/xpra/codecs/v4l2/pusher.pyx
++++ b/xpra/codecs/v4l2/pusher.pyx
+@@ -364,7 +364,7 @@ cdef class Pusher:
+     cdef parse_pixel_format(self, v4l2_format *vid_format):
+         if vid_format.fmt.pix.pixelformat==0:
+             return ""
+-        return "".join([chr((vid_format.fmt.pix.pixelformat//(2**(8*x))) % 
256) for x in range(4)])
++        return "".join(chr((vid_format.fmt.pix.pixelformat >> (8*x)) % 256) 
for x in range(4))
+ 
+     cdef show_vid_format(self, v4l2_format *vid_format):
+         log("vid_format.type                 = %i", vid_format.type)
+Index: b/xpra/net/bencode/cython_bencode.pyx
+===================================================================
+--- a/xpra/net/bencode/cython_bencode.pyx
++++ b/xpra/net/bencode/cython_bencode.pyx
+@@ -24,7 +24,7 @@ def b(x):
+     return codecs.latin_1_encode(x)[0]
+ import sys
+ if sys.version_info[0]==2:
+-    LongType = long
++    LongType = int
+ else:
+     LongType = int
+     unicode = str
+@@ -50,7 +50,7 @@ cdef decode_int(const unsigned char *x,
+     try:
+         n = int(x[f:unewf])
+     except (OverflowError, ValueError):
+-        n = long(x[f:unewf])
++        n = int(x[f:unewf])
+     if x[f] == b'-':
+         if x[f + 1] == b'0':
+             raise ValueError("-0 is not a valid number")
+@@ -182,7 +182,7 @@ cdef int encode(object v, r) except -1:
+     elif t==dict:
+         return encode_dict(v, r)
+     elif t==bool:
+-        return encode_int(long(v), r)
++        return encode_int(int(v), r)
+     elif v==None:
+         raise ValueError("found None value!")
+     else:
+Index: b/xpra/net/rencodeplus/rencodeplus.pyx
+===================================================================
+--- a/xpra/net/rencodeplus/rencodeplus.pyx
++++ b/xpra/net/rencodeplus/rencodeplus.pyx
+@@ -37,7 +37,7 @@ __version__ = ("Cython", 1, 0, 8)
+ inttypes = (int, )
+ strtypes = (str, )
+ if sys.version_info[0]==2:
+-    inttypes = (int, long)
++    inttypes = (int, )
+     strtypes = (str, unicode)
+ 
+ cdef extern from "Python.h":
+Index: b/xpra/x11/bindings/core_bindings.pyx
+===================================================================
+--- a/xpra/x11/bindings/core_bindings.pyx
++++ b/xpra/x11/bindings/core_bindings.pyx
+@@ -107,7 +107,7 @@ cdef class X11CoreBindingsInstance:
+         integer (assumed to already be an X atom)."""
+         self.context_check()
+         cdef char* string
+-        if isinstance(str_or_int, (int, long)):
++        if isinstance(str_or_int, int):
+             return <Atom> str_or_int
+         bstr = strtobytes(str_or_int)
+         string = bstr
+Index: b/xpra/x11/bindings/keyboard_bindings.pyx
+===================================================================
+--- a/xpra/x11/bindings/keyboard_bindings.pyx
++++ b/xpra/x11/bindings/keyboard_bindings.pyx
+@@ -690,7 +690,7 @@ cdef class X11KeyboardBindingsInstance(X
+                     for ks in keysyms_strs:
+                         if ks in (None, ""):
+                             keysym = NoSymbol
+-                        elif type(ks) in [long, int]:
++                        elif type(ks) is int:
+                             keysym = ks
+                         else:
+                             keysym = self._parse_keysym(ks)
+@@ -1052,7 +1052,7 @@ cdef class X11KeyboardBindingsInstance(X
+         integer (assumed to already be an X atom)."""
+         self.context_check()
+         cdef char* string
+-        if isinstance(str_or_int, (int, long)):
++        if isinstance(str_or_int, int):
+             return <Atom> str_or_int
+         bstr = strtobytes(str_or_int)
+         string = bstr
+Index: b/xpra/x11/bindings/randr_bindings.pyx
+===================================================================
+--- a/xpra/x11/bindings/randr_bindings.pyx
++++ b/xpra/x11/bindings/randr_bindings.pyx
+@@ -427,7 +427,7 @@ cdef class RandRBindingsInstance(X11Core
+                             h, h+yFront, h+yFront+ySync, yTotal)
+             new_mode.width = w
+             new_mode.height = h
+-            new_mode.dotClock = long(clock)
++            new_mode.dotClock = int(clock)
+             new_mode.hSyncStart = int(w+xFront)
+             new_mode.hSyncEnd = int(w+xFront+xSync)
+             new_mode.hTotal = int(xTotal)
+Index: b/xpra/x11/gtk3/gdk_bindings.pyx
+===================================================================
+--- a/xpra/x11/gtk3/gdk_bindings.pyx
++++ b/xpra/x11/gtk3/gdk_bindings.pyx
+@@ -519,7 +519,7 @@ def get_xatom(str_or_xatom):
+     return gdk_x11_get_xatom_by_name(b)
+ 
+ cdef GdkAtom get_gdkatom(display_source, xatom):
+-    if long(xatom) > long(2) ** 32:
++    if int(xatom) > int(2) ** 32:
+         raise Exception("weirdly huge purported xatom: %s" % xatom)
+     if xatom==0:
+         return GDK_NONE
+@@ -1207,7 +1207,7 @@ cdef parse_xevent(GdkXEvent * e_gdk) wit
+             pyev.focus = e.xcrossing.focus
+         elif etype == ClientMessage:
+             pyev.window = _gw(d, e.xany.window)
+-            if long(e.xclient.message_type) > (long(2) ** 32):
++            if int(e.xclient.message_type) > (int(2) ** 32):
+                 log.warn("Xlib claims that this ClientEvent's 32-bit "
+                          + "message_type is %s.  "
+                          + "Note that this is >2^32.  "
diff -Nru xpra-3.1.5+dfsg1/debian/patches/py315-avcodec-free-context.patch 
xpra-3.1.5+dfsg1/debian/patches/py315-avcodec-free-context.patch
--- xpra-3.1.5+dfsg1/debian/patches/py315-avcodec-free-context.patch    
1970-01-01 01:00:00.000000000 +0100
+++ xpra-3.1.5+dfsg1/debian/patches/py315-avcodec-free-context.patch    
2026-09-10 17:28:44.000000000 +0200
@@ -0,0 +1,35 @@
+Description: #4216 minimal patch for re-enabling decoder and swscale with 
ffmpeg v7
+Author: Antoine Martin <[email protected]>
+Origin: upstream, 
https://github.com/Xpra-org/xpra/commit/ccfbf4ea1fe6363206ab937107b220681cf2ad79
+Bug: https://github.com/Xpra-org/xpra/issues/4216
+Applied-Upstream: v3.1.9
+Index: b/xpra/codecs/dec_avcodec2/decoder.pyx
+===================================================================
+--- a/xpra/codecs/dec_avcodec2/decoder.pyx
++++ b/xpra/codecs/dec_avcodec2/decoder.pyx
+@@ -90,10 +90,10 @@ cdef extern from "libavcodec/avcodec.h":
+     #init and free:
+     const AVCodec *avcodec_find_decoder(AVCodecID id)
+     AVCodecContext *avcodec_alloc_context3(const AVCodec *codec)
++    void avcodec_free_context(AVCodecContext **context)
+     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
+@@ -417,12 +417,7 @@ cdef class Decoder:
+                     img.clone_pixel_data()
+         log("clean_decoder() freeing AVCodecContext: %#x", <uintptr_t> 
self.codec_ctx)
+         if self.codec_ctx!=NULL:
+-            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))
+-            av_free(self.codec_ctx)
+-            self.codec_ctx = NULL
++            avcodec_free_context(&self.codec_ctx)
+         log("clean_decoder() done")
+ 
+     def __repr__(self):                      #@DuplicatedSignature
diff -Nru xpra-3.1.5+dfsg1/debian/patches/py315-buffer-protocol.patch 
xpra-3.1.5+dfsg1/debian/patches/py315-buffer-protocol.patch
--- xpra-3.1.5+dfsg1/debian/patches/py315-buffer-protocol.patch 1970-01-01 
01:00:00.000000000 +0100
+++ xpra-3.1.5+dfsg1/debian/patches/py315-buffer-protocol.patch 2026-09-10 
17:28:44.000000000 +0200
@@ -0,0 +1,88 @@
+Author: Maximiliano Curia <[email protected]>
+Description: fix build with Python 3.14+ (old buffer API removal)
+ PyObject_AsReadBuffer()/PyObject_AsWriteBuffer() were removed from the
+ Python C API in 3.14. Replace their use with the modern buffer protocol
+ (PyObject_GetBuffer()/PyBuffer_Release()).
+Forwarded: no
+Index: b/xpra/buffers/buffers.c
+===================================================================
+--- a/xpra/buffers/buffers.c
++++ b/xpra/buffers/buffers.c
+@@ -32,6 +32,7 @@ PyObject *_memory_as_pybuffer(void *ptr,
+ 
+ int _object_as_buffer(PyObject *obj, const void ** buffer, Py_ssize_t * 
buffer_len) {
+     Py_buffer *rpybuf;
++    Py_buffer view;
+     if (PyMemoryView_Check(obj)) {
+         rpybuf = PyMemoryView_GET_BUFFER(obj);
+         if (rpybuf->buf==NULL)
+@@ -40,11 +41,19 @@ int _object_as_buffer(PyObject *obj, con
+         *buffer_len = rpybuf->len;
+         return 0;
+     }
+-    return PyObject_AsReadBuffer(obj, buffer, buffer_len);
++    // the old buffer API (PyObject_AsReadBuffer) was removed in Python 3.14,
++    // use the new buffer protocol instead:
++    if (PyObject_GetBuffer(obj, &view, PyBUF_SIMPLE))
++        return -1;
++    buffer[0] = view.buf;
++    *buffer_len = view.len;
++    PyBuffer_Release(&view);
++    return 0;
+ }
+ 
+ int _object_as_write_buffer(PyObject *obj, void ** buffer, Py_ssize_t * 
buffer_len) {
+     Py_buffer *wpybuf;
++    Py_buffer view;
+     if (PyMemoryView_Check(obj)) {
+         wpybuf = PyMemoryView_GET_BUFFER(obj);
+         if (wpybuf->buf==NULL)
+@@ -53,5 +62,12 @@ int _object_as_write_buffer(PyObject *ob
+         *buffer_len = wpybuf->len;
+         return 0;
+     }
+-    return PyObject_AsWriteBuffer(obj, buffer, buffer_len);
++    // the old buffer API (PyObject_AsWriteBuffer) was removed in Python 3.14,
++    // use the new buffer protocol instead:
++    if (PyObject_GetBuffer(obj, &view, PyBUF_WRITABLE))
++        return -1;
++    buffer[0] = view.buf;
++    *buffer_len = view.len;
++    PyBuffer_Release(&view);
++    return 0;
+ }
+Index: b/xpra/gtk_common/gtk3/gdk_atoms.pyx
+===================================================================
+--- a/xpra/gtk_common/gtk3/gdk_atoms.pyx
++++ b/xpra/gtk_common/gtk3/gdk_atoms.pyx
+@@ -16,7 +16,9 @@ from libc.stdint cimport uintptr_t  #pyl
+ 
+ 
+ cdef extern from "Python.h":
+-    int PyObject_AsReadBuffer(object obj, void ** buffer, Py_ssize_t * 
buffer_len) except -1
++    int PyObject_GetBuffer(object obj, Py_buffer *view, int flags) except -1
++    void PyBuffer_Release(Py_buffer *view)
++    int PyBUF_SIMPLE
+ 
+ cdef extern from "gtk-3.0/gdk/gdk.h":
+     ctypedef void* GdkAtom
+@@ -36,7 +38,10 @@ def gdk_atom_objects_from_gdk_atom_array
+     cdef gchar*  name
+     cdef Py_ssize_t array_len_bytes = 0
+     cdef uintptr_t gdk_atom_value = 0
+-    assert PyObject_AsReadBuffer(atom_string, <const void**> &array, 
&array_len_bytes)==0
++    cdef Py_buffer py_buf
++    assert PyObject_GetBuffer(atom_string, &py_buf, PyBUF_SIMPLE)==0
++    array = <const GdkAtom*> py_buf.buf
++    array_len_bytes = py_buf.len
+     cdef unsigned int array_len = array_len_bytes // sizeof(GdkAtom)
+     objects = []
+     cdef unsigned int i
+@@ -51,6 +56,7 @@ def gdk_atom_objects_from_gdk_atom_array
+             str_name = bytestostr(name)
+             gdk_atom = Gdk.Atom.intern(str_name, False)
+             objects.append(gdk_atom)
++    PyBuffer_Release(&py_buf)
+     return objects
+ 
+ def gdk_atom_array_from_atoms(atoms):
diff -Nru 
xpra-3.1.5+dfsg1/debian/patches/py315-gdk-bindings-pygobject-include.patch 
xpra-3.1.5+dfsg1/debian/patches/py315-gdk-bindings-pygobject-include.patch
--- xpra-3.1.5+dfsg1/debian/patches/py315-gdk-bindings-pygobject-include.patch  
1970-01-01 01:00:00.000000000 +0100
+++ xpra-3.1.5+dfsg1/debian/patches/py315-gdk-bindings-pygobject-include.patch  
2026-09-10 17:28:44.000000000 +0200
@@ -0,0 +1,16 @@
+Author: Maximiliano Curia <[email protected]>
+Description: fix FTBFS against current pygobject (pygobject-types.h split)
+Forwarded: no
+Index: b/setup.py
+===================================================================
+--- a/setup.py
++++ b/setup.py
+@@ -1919,7 +1919,7 @@ if gtk_x11_ENABLED:
+                     ))
+         cython_add(Extension("xpra.x11.gtk3.gdk_bindings",
+                     ["xpra/x11/gtk3/gdk_bindings.pyx", 
"xpra/x11/gtk3/gdk_x11_macros.c"],
+-                    **pkgconfig("gdk-3.0", "xdamage")
++                    **pkgconfig("gdk-3.0", "xdamage", "pygobject-3.0")
+                     ))
+ 
+     else:
diff -Nru xpra-3.1.5+dfsg1/debian/patches/py315-setuptools-shim.patch 
xpra-3.1.5+dfsg1/debian/patches/py315-setuptools-shim.patch
--- xpra-3.1.5+dfsg1/debian/patches/py315-setuptools-shim.patch 1970-01-01 
01:00:00.000000000 +0100
+++ xpra-3.1.5+dfsg1/debian/patches/py315-setuptools-shim.patch 2026-09-10 
17:28:44.000000000 +0200
@@ -0,0 +1,17 @@
+Author: Maximiliano Curia <[email protected]>
+Description: fix build with Python 3.12+ (distutils removal)
+Forwarded: no
+Index: b/setup.py
+===================================================================
+--- a/setup.py
++++ b/setup.py
+@@ -15,6 +15,9 @@ import glob
+ import shutil
+ import os.path
+ 
++# distutils was removed from the stdlib in Python 3.12+;
++# importing setuptools first makes it provide a compatible shim:
++import setuptools
+ from distutils.core import setup
+ from distutils.extension import Extension
+ from distutils.command.build import build
diff -Nru xpra-3.1.5+dfsg1/debian/patches/py315-x265-tsa-r.patch 
xpra-3.1.5+dfsg1/debian/patches/py315-x265-tsa-r.patch
--- xpra-3.1.5+dfsg1/debian/patches/py315-x265-tsa-r.patch      1970-01-01 
01:00:00.000000000 +0100
+++ xpra-3.1.5+dfsg1/debian/patches/py315-x265-tsa-r.patch      2026-09-10 
17:28:44.000000000 +0200
@@ -0,0 +1,25 @@
+Author: Maximiliano Curia <[email protected]>
+Description: fix build against current libx265 (NAL_UNIT_CODED_SLICE_TLA_R 
renamed)
+Forwarded: no
+Index: b/xpra/codecs/enc_x265/encoder.pyx
+===================================================================
+--- a/xpra/codecs/enc_x265/encoder.pyx
++++ b/xpra/codecs/enc_x265/encoder.pyx
+@@ -36,7 +36,7 @@ cdef extern from "x265.h":
+     int NAL_UNIT_CODED_SLICE_TRAIL_N
+     int NAL_UNIT_CODED_SLICE_TRAIL_R
+     int NAL_UNIT_CODED_SLICE_TSA_N
+-    int NAL_UNIT_CODED_SLICE_TLA_R
++    int NAL_UNIT_CODED_SLICE_TSA_R
+     int NAL_UNIT_CODED_SLICE_STSA_N
+     int NAL_UNIT_CODED_SLICE_STSA_R
+     int NAL_UNIT_CODED_SLICE_RADL_N
+@@ -234,7 +234,7 @@ NAL_TYPES = {
+     NAL_UNIT_CODED_SLICE_TRAIL_N        : "CODED_SLICE_TRAIL_N",
+     NAL_UNIT_CODED_SLICE_TRAIL_R        : "CODED_SLICE_TRAIL_R",
+     NAL_UNIT_CODED_SLICE_TSA_N          : "CODED_SLICE_TSA_N",
+-    NAL_UNIT_CODED_SLICE_TLA_R          : "CODED_SLICE_TLA_R",
++    NAL_UNIT_CODED_SLICE_TSA_R          : "CODED_SLICE_TSA_R",
+     NAL_UNIT_CODED_SLICE_STSA_N         : "CODED_SLICE_STSA_N",
+     NAL_UNIT_CODED_SLICE_STSA_R         : "CODED_SLICE_STSA_R",
+     NAL_UNIT_CODED_SLICE_RADL_N         : "CODED_SLICE_RADL_N",
diff -Nru xpra-3.1.5+dfsg1/debian/patches/quality-levels.patch 
xpra-3.1.5+dfsg1/debian/patches/quality-levels.patch
--- xpra-3.1.5+dfsg1/debian/patches/quality-levels.patch        2023-09-15 
13:15:05.000000000 +0200
+++ xpra-3.1.5+dfsg1/debian/patches/quality-levels.patch        2026-09-10 
17:28:44.000000000 +0200
@@ -3,10 +3,11 @@
 Author: Dmitry Smirnov <[email protected]>
 Description: add more quality levels to menu; show quality percentage.
 
---- a/xpra/client/gtk_base/gtk_tray_menu_base.py
-+++ b/xpra/client/gtk_base/gtk_tray_menu_base.py
-@@ -63,18 +63,21 @@
- BANDWIDTH_MENU_OPTIONS = get_bandwidth_menu_options()
+Index: xpra/xpra/client/gtk_base/gtk_tray_menu_base.py
+===================================================================
+--- xpra.orig/xpra/client/gtk_base/gtk_tray_menu_base.py
++++ xpra/xpra/client/gtk_base/gtk_tray_menu_base.py
+@@ -71,16 +71,19 @@ BANDWIDTH_MENU_OPTIONS = get_bandwidth_m
  
  LOSSLESS = "Lossless"
  QUALITY_OPTIONS_COMMON = {
@@ -31,4 +32,3 @@
  QUALITY_OPTIONS[100]  = LOSSLESS
  
  
- SPEED_OPTIONS_COMMON = {
diff -Nru xpra-3.1.5+dfsg1/debian/patches/series 
xpra-3.1.5+dfsg1/debian/patches/series
--- xpra-3.1.5+dfsg1/debian/patches/series      2023-09-15 13:15:05.000000000 
+0200
+++ xpra-3.1.5+dfsg1/debian/patches/series      2026-09-10 17:28:44.000000000 
+0200
@@ -2,6 +2,7 @@
 ## Fixes
 Xorg-path.patch
 build-hurd.patch
+py315-setuptools-shim.patch
 
 ## Misc.
 buildinfo.patch
@@ -14,3 +15,8 @@
 
 reproducible-build.patch
 get-server_capabilities-with-str-key.patch
+cython-3.1-compat.patch
+py315-buffer-protocol.patch
+py315-gdk-bindings-pygobject-include.patch
+py315-x265-tsa-r.patch
+py315-avcodec-free-context.patch
diff -Nru xpra-3.1.5+dfsg1/debian/rules xpra-3.1.5+dfsg1/debian/rules
--- xpra-3.1.5+dfsg1/debian/rules       2023-09-15 13:15:05.000000000 +0200
+++ xpra-3.1.5+dfsg1/debian/rules       2026-09-10 17:28:44.000000000 +0200
@@ -10,7 +10,7 @@
 ifneq (,$(filter i386,$(DEB_HOST_ARCH)))
 EXTRA_BUILDOPTS := --without-csc_swscale --without-enc_ffmpeg 
--without-dec_avcodec2
 endif
-BUILDOPTS= --with-verbose --with-Xdummy --without-Xdummy_wrapper --with-html5 
--without-minify --without-html5_gzip $(EXTRA_BUILDOPTS)
+BUILDOPTS= --with-verbose --with-Xdummy --without-Xdummy_wrapper --with-html5 
--without-minify --without-html5_gzip --without-enc_ffmpeg $(EXTRA_BUILDOPTS)
 
 export PYBUILD_CONFIG_ARGS=$(BUILDOPTS)
 export PYBUILD_BUILD_ARGS=$(BUILDOPTS)

Reply via email to