Hello community, here is the log from the commit of package xpra for openSUSE:Factory checked in at 2020-05-17 23:43:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xpra (Old) and /work/SRC/openSUSE:Factory/.xpra.new.2738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xpra" Sun May 17 23:43:32 2020 rev:20 rq:806264 version:4.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/xpra/xpra.changes 2020-05-11 13:43:47.141429111 +0200 +++ /work/SRC/openSUSE:Factory/.xpra.new.2738/xpra.changes 2020-05-17 23:43:36.217110119 +0200 @@ -1,0 +2,11 @@ +Sun May 17 16:39:00 UTC 2020 - Luigi Baldoni <[email protected]> + +- Update to version 4.0.1 + * fix missing content-type for some windows + * fix GTK server crash on exit + * fix compatibility with newer versions of uglifyjs + * fix ssh session start and attach on Posix systems + * fix 'xpra send-file' to use absolute file paths + * fix MacOS shadow servers failing to accept connections + +------------------------------------------------------------------- Old: ---- xpra-4.0.tar.xz New: ---- xpra-4.0.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xpra.spec ++++++ --- /var/tmp/diff_new_pack.hEpxiz/_old 2020-05-17 23:43:39.289116287 +0200 +++ /var/tmp/diff_new_pack.hEpxiz/_new 2020-05-17 23:43:39.293116295 +0200 @@ -19,7 +19,7 @@ %global __requires_exclude ^typelib\\(GtkosxApplication\\)|typelib\\(GdkGLExt\\)|typelib\\(GtkGLExt\\).*$ Name: xpra -Version: 4.0 +Version: 4.0.1 Release: 0 Summary: Remote display server for applications and desktops License: GPL-2.0-or-later AND BSD-3-Clause AND LGPL-3.0-or-later AND MIT ++++++ xpra-4.0.tar.xz -> xpra-4.0.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/NEWS new/xpra-4.0.1/NEWS --- old/xpra-4.0/NEWS 2020-05-10 19:00:48.000000000 +0200 +++ new/xpra-4.0.1/NEWS 2020-05-17 18:12:15.000000000 +0200 @@ -1,3 +1,15 @@ +v4.0 (2020-05-17) +====================== + -- fix missing content-type for some windows + -- fix GTK server crash on exit + -- fix compatibility with newer versions of uglifyjs + -- fix ssh session start and attach on Posix systems + -- fix missing avcodec encodings with Ubuntu 18.04 + -- fix 'xpra send-file' to use absolute file paths + -- fix MacOS shadow servers failing to accept connections + -- don't depend on gnome bits if plasma-desktop is installed + + v4.0 (2020-05-10) ====================== -- Drop support for: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/cups/xpraforwarder new/xpra-4.0.1/cups/xpraforwarder --- old/xpra-4.0/cups/xpraforwarder 2020-05-10 19:00:48.000000000 +0200 +++ new/xpra-4.0.1/cups/xpraforwarder 2020-05-17 18:12:15.000000000 +0200 @@ -38,7 +38,7 @@ from urllib.parse import urlparse, parse_qs -__version__ = "4.0" +__version__ = "4.0.1" #Writes a syslog entry (msg) at the default facility: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/html5/js/Client.js new/xpra-4.0.1/html5/js/Client.js --- old/xpra-4.0/html5/js/Client.js 2020-05-10 19:00:48.000000000 +0200 +++ new/xpra-4.0.1/html5/js/Client.js 2020-05-17 18:12:15.000000000 +0200 @@ -2475,32 +2475,33 @@ window.closeNotification(nid); } - if ("Notification" in window && actions.length==0) { - function notify() { - let icon_url = ""; - if (icon) { - icon_url = "data:image/png;base64," + Utilities.ArrayBufferToBase64(icon); - } - /* - const nactions = []; - if (actions) { - ctx.log("actions=", actions); - for (let i=0; i<actions.length/2;++i) { - nactions.push({ - "action" : actions[i*2], - "title" : actions[i*2+1], - }); - } - }*/ - const notification = new Notification(summary, { body: body, icon: icon_url }); - notification.onclose = function() { - const reason = 2; //closed by the user - best guess... - ctx.send(["notification-close", nid, reason, ""]); - }; - notification.onclick = function() { - ctx.log("user clicked on notification", nid); - }; + function notify() { + let icon_url = ""; + if (icon) { + icon_url = "data:image/png;base64," + Utilities.ArrayBufferToBase64(icon); } + /* + const nactions = []; + if (actions) { + ctx.log("actions=", actions); + for (let i=0; i<actions.length/2;++i) { + nactions.push({ + "action" : actions[i*2], + "title" : actions[i*2+1], + }); + } + }*/ + const notification = new Notification(summary, { body: body, icon: icon_url }); + notification.onclose = function() { + const reason = 2; //closed by the user - best guess... + ctx.send(["notification-close", nid, reason, ""]); + }; + notification.onclick = function() { + ctx.log("user clicked on notification", nid); + }; + } + + if ("Notification" in window && actions.length==0) { //we have notification support in the browser if (Notification.permission === "granted") { notify(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/html5/js/Utilities.js new/xpra-4.0.1/html5/js/Utilities.js --- old/xpra-4.0/html5/js/Utilities.js 2020-05-10 19:00:49.000000000 +0200 +++ new/xpra-4.0.1/html5/js/Utilities.js 2020-05-17 18:12:15.000000000 +0200 @@ -10,7 +10,7 @@ 'use strict'; const Utilities = { - VERSION : "4.0", + VERSION : "4.0.1", REVISION : "0", LOCAL_MODIFICATIONS : "0", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/setup.py new/xpra-4.0.1/setup.py --- old/xpra-4.0/setup.py 2020-05-10 19:00:50.000000000 +0200 +++ new/xpra-4.0.1/setup.py 2020-05-17 18:12:15.000000000 +0200 @@ -2175,7 +2175,7 @@ if get_gcc_version()>=[9, 0]: add_to_keywords(avcodec2_pkgconfig, 'extra_compile_args', "-Wno-error=attributes") cython_add(Extension("xpra.codecs.dec_avcodec2.decoder", - ["xpra/codecs/dec_avcodec2/decoder.pyx"], + ["xpra/codecs/dec_avcodec2/decoder.pyx", "xpra/codecs/dec_avcodec2/register_compat.c"], **avcodec2_pkgconfig)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/setup_html5.py new/xpra-4.0.1/setup_html5.py --- old/xpra-4.0/setup_html5.py 2020-05-10 19:00:50.000000000 +0200 +++ new/xpra-4.0.1/setup_html5.py 2020-05-17 18:12:15.000000000 +0200 @@ -139,7 +139,6 @@ if minifier=="uglifyjs": minify_cmd = ["uglifyjs", - "--screw-ie8", fsrc, "-o", dst, "--compress", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/svn-info new/xpra-4.0.1/svn-info --- old/xpra-4.0/svn-info 2020-05-10 19:01:52.000000000 +0200 +++ new/xpra-4.0.1/svn-info 2020-05-17 18:12:20.000000000 +0200 @@ -4,10 +4,10 @@ Relative URL: ^/tags/v4.0.x/src Repository Root: file:///var/svn/repos/Xpra Repository UUID: 3bb7dfac-3a0b-4e04-842a-767bc560f471 -Revision: 26307 +Revision: 26380 Node Kind: directory Schedule: normal Last Changed Author: antoine -Last Changed Rev: 26305 -Last Changed Date: 2020-05-10 15:59:06 +0100 (Sun, 10 May 2020) +Last Changed Rev: 26379 +Last Changed Date: 2020-05-17 16:07:55 +0100 (Sun, 17 May 2020) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/svn-version new/xpra-4.0.1/svn-version --- old/xpra-4.0/svn-version 2020-05-10 19:01:52.000000000 +0200 +++ new/xpra-4.0.1/svn-version 2020-05-17 18:12:20.000000000 +0200 @@ -1 +1 @@ -26307 +26380 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/win32/MINGW_SETUP.sh new/xpra-4.0.1/win32/MINGW_SETUP.sh --- old/xpra-4.0/win32/MINGW_SETUP.sh 2020-05-10 19:00:52.000000000 +0200 +++ new/xpra-4.0.1/win32/MINGW_SETUP.sh 2020-05-17 18:12:15.000000000 +0200 @@ -37,7 +37,7 @@ $PACMAN --noconfirm -S ${XPKG}gst-python #development tools and libs for building extra packages: $PACMAN --noconfirm -S base-devel ${XPKG}yasm ${XPKG}nasm subversion rsync zip gtk-doc ${XPKG}cmake ${XPKG}gcc ${XPKG}pkg-config ${XPKG}libffi -for x in cryptography cffi pycparser numpy pillow cx_Freeze appdirs paramiko comtypes netifaces rencode setproctitle pyu2f ldap ldap3 bcrypt pynacl lz4 brotli PyOpenGL nvidia-ml zeroconf certifi yaml py-cpuinfo winkerberos gssapi coverage; do +for x in cryptography cffi pycparser numpy pillow cx_Freeze appdirs paramiko comtypes netifaces rencode setproctitle pyu2f ldap ldap3 bcrypt pynacl lz4 lzo brotli PyOpenGL nvidia-ml zeroconf certifi yaml py-cpuinfo winkerberos gssapi coverage; do $PACMAN --noconfirm -S ${XPKG}python-${x} done $PACMAN --noconfirm -S ${XPKG}cython diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/win32/xpra.iss new/xpra-4.0.1/win32/xpra.iss --- old/xpra-4.0/win32/xpra.iss 2020-05-10 19:00:53.000000000 +0200 +++ new/xpra-4.0.1/win32/xpra.iss 2020-05-17 18:12:15.000000000 +0200 @@ -1,9 +1,9 @@ [Setup] AppName=Xpra AppId=Xpra_is1 -AppVersion=4.0 -AppVerName=Xpra 4.0 -UninstallDisplayName=Xpra 4.0 +AppVersion=4.0.1 +AppVerName=Xpra 4.0.1 +UninstallDisplayName=Xpra 4.0.1 AppPublisher=xpra.org AppPublisherURL=http:;xpra.org/ DefaultDirName={pf}\Xpra @@ -16,7 +16,7 @@ Compression=lzma2/max SolidCompression=yes AllowUNCPath=false -VersionInfoVersion=4.0 +VersionInfoVersion=4.0.1 VersionInfoCompany=xpra.org VersionInfoDescription=multi-platform screen and application forwarding system WizardImageFile=win32\xpra-logo.bmp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/xpra/__init__.py new/xpra-4.0.1/xpra/__init__.py --- old/xpra-4.0/xpra/__init__.py 2020-05-10 19:01:53.000000000 +0200 +++ new/xpra-4.0.1/xpra/__init__.py 2020-05-17 18:12:22.000000000 +0200 @@ -4,4 +4,4 @@ # Xpra is released under the terms of the GNU GPL v2, or, at your option, any # later version. See the file COPYING for details. -__version__ = "4.0" +__version__ = "4.0.1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/xpra/codecs/dec_avcodec2/decoder.pyx new/xpra-4.0.1/xpra/codecs/dec_avcodec2/decoder.pyx --- old/xpra-4.0/xpra/codecs/dec_avcodec2/decoder.pyx 2020-05-10 19:00:54.000000000 +0200 +++ new/xpra-4.0.1/xpra/codecs/dec_avcodec2/decoder.pyx 2020-05-17 18:12:15.000000000 +0200 @@ -23,6 +23,9 @@ from libc.string cimport memset, memcpy +cdef extern from "register_compat.h": + void register_all() + cdef extern from "libavutil/mem.h": void av_free(void *ptr) @@ -131,6 +134,7 @@ def get_version(): return (LIBAVCODEC_VERSION_MAJOR, LIBAVCODEC_VERSION_MINOR, LIBAVCODEC_VERSION_MICRO) +register_all() CODECS = [] if avcodec_find_decoder(AV_CODEC_ID_H264)!=NULL: CODECS.append("h264") @@ -325,6 +329,8 @@ return False self.actual_pix_fmt = self.pix_fmt + register_all() + cdef AVCodecID CodecID if self.encoding=="h264": CodecID = AV_CODEC_ID_H264 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/xpra/codecs/dec_avcodec2/register_compat.c new/xpra-4.0.1/xpra/codecs/dec_avcodec2/register_compat.c --- old/xpra-4.0/xpra/codecs/dec_avcodec2/register_compat.c 1970-01-01 01:00:00.000000000 +0100 +++ new/xpra-4.0.1/xpra/codecs/dec_avcodec2/register_compat.c 2020-05-17 18:12:15.000000000 +0200 @@ -0,0 +1,13 @@ +// This file is part of Xpra. +// Copyright (C) 2018 Antoine Martin <[email protected]> +// Xpra is released under the terms of the GNU GPL v2, or, at your option, any +// later version. See the file COPYING for details. + +#include "libavcodec/version.h" +#include "libavformat/avformat.h" + +void register_all(void) { +#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58, 9, 100) + av_register_all(); +#endif +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/xpra/codecs/dec_avcodec2/register_compat.h new/xpra-4.0.1/xpra/codecs/dec_avcodec2/register_compat.h --- old/xpra-4.0/xpra/codecs/dec_avcodec2/register_compat.h 1970-01-01 01:00:00.000000000 +0100 +++ new/xpra-4.0.1/xpra/codecs/dec_avcodec2/register_compat.h 2020-05-17 18:12:15.000000000 +0200 @@ -0,0 +1,6 @@ +// This file is part of Xpra. +// Copyright (C) 2018 Antoine Martin <[email protected]> +// Xpra is released under the terms of the GNU GPL v2, or, at your option, any +// later version. See the file COPYING for details. + +void register_all(void); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/xpra/scripts/main.py new/xpra-4.0.1/xpra/scripts/main.py --- old/xpra-4.0/xpra/scripts/main.py 2020-05-10 19:00:55.000000000 +0200 +++ new/xpra-4.0.1/xpra/scripts/main.py 2020-05-17 18:12:15.000000000 +0200 @@ -1412,6 +1412,8 @@ errors = 0 for f in files: filelog("run_send_file(%s) sending '%s'", extra_args, f) + if not os.path.isabs(f): + f = os.path.abspath(f) #xpra control :10 send-file /path/to/the-file-to-send open CLIENT_UUID cmd = xpra_cmd + ["control", uri, "send-file", f] filelog("cmd=%s", cmd) @@ -2429,7 +2431,7 @@ if WIN32: uri = "named-pipe://%s" % display_name else: - uri = "socket://%s" % display_name + uri = "socket://%s" % socket_path display = parse_display_name(error_cb, opts, uri) if proc and proc.poll() is None: #start a thread just to reap server startup process (yuk) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/xpra/server/gtk_server_base.py new/xpra-4.0.1/xpra/server/gtk_server_base.py --- old/xpra-4.0/xpra/server/gtk_server_base.py 2020-05-10 19:00:55.000000000 +0200 +++ new/xpra-4.0.1/xpra/server/gtk_server_base.py 2020-05-17 18:12:15.000000000 +0200 @@ -92,12 +92,10 @@ # (if gtk has been loaded) gdk_mod = sys.modules.get("gtk.gdk") or sys.modules.get("gi.repository.Gdk") #bug 2328: python3 shadow server segfault on Ubuntu 16.04 - safe_close = self.session_type!="shadow" - if WIN32: - safe_close = False - close = envbool("XPRA_CLOSE_GTK_DISPLAY", safe_close) - log("close_gtk_display() safe_close=%s, close=%s, gdk_mod=%s", - safe_close, close, gdk_mod) + #also crashes on Ubuntu 20.04 + close = envbool("XPRA_CLOSE_GTK_DISPLAY", False) + log("close_gtk_display() close=%s, gdk_mod=%s", + close, gdk_mod) if close and gdk_mod: displays = Gdk.DisplayManager.get().list_displays() log("close_gtk_display() displays=%s", displays) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/xpra/server/mixins/child_command_server.py new/xpra-4.0.1/xpra/server/mixins/child_command_server.py --- old/xpra-4.0/xpra/server/mixins/child_command_server.py 2020-05-10 19:00:55.000000000 +0200 +++ new/xpra-4.0.1/xpra/server/mixins/child_command_server.py 2020-05-17 18:12:15.000000000 +0200 @@ -183,12 +183,16 @@ return None if not self.start_new_commands: return None - if POSIX or OSX: + if OSX: + return None + if POSIX: from xpra.platform.xposix.xdg_helper import load_xdg_menu_data return load_xdg_menu_data(force_reload) - elif WIN32: + if WIN32: from xpra.platform.win32.menu_helper import load_menu return load_menu() + log.error("Error: unsupported platform!") + return None def get_caps(self, source) -> dict: caps = {} @@ -200,7 +204,7 @@ if not source.xdg_menu_update: #we have to send it now: xdg_menu = self._get_xdg_menu_data() - log.warn("%i entries sent in hello", len(xdg_menu)) + log("%i entries sent in hello", len(xdg_menu or ())) if xdg_menu: l = len(str(xdg_menu)) #arbitrary: don't use more than half diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/xpra/src_info.py new/xpra-4.0.1/xpra/src_info.py --- old/xpra-4.0/xpra/src_info.py 2020-05-10 19:01:52.000000000 +0200 +++ new/xpra-4.0.1/xpra/src_info.py 2020-05-17 18:12:20.000000000 +0200 @@ -1,2 +1,2 @@ LOCAL_MODIFICATIONS=0 -REVISION=26307 +REVISION=26380 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/xpra/x11/gtk_x11/wm.py new/xpra-4.0.1/xpra/x11/gtk_x11/wm.py --- old/xpra-4.0/xpra/x11/gtk_x11/wm.py 2020-05-10 19:00:56.000000000 +0200 +++ new/xpra-4.0.1/xpra/x11/gtk_x11/wm.py 2020-05-17 18:12:15.000000000 +0200 @@ -17,7 +17,7 @@ from xpra.x11.common import Unmanageable from xpra.x11.gtk_x11.selection import ManagerSelection from xpra.x11.models.window import WindowModel, configure_bits -from xpra.x11.gtk_x11.world_window import WorldWindow +from xpra.x11.gtk_x11.world_window import WorldWindow, destroy_world_window from xpra.x11.gtk_x11.gdk_bindings import ( add_event_receiver, #@UnresolvedImport add_fallback_receiver, remove_fallback_receiver, #@UnresolvedImport @@ -406,6 +406,8 @@ with xswallow: prop_del(self._ewmh_window, "_NET_SUPPORTING_WM_CHECK") prop_del(self._ewmh_window, "_NET_WM_NAME") + destroy_world_window() + def do_child_map_request_event(self, event): log("Found a potential client") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/xpra/x11/gtk_x11/world_window.py new/xpra-4.0.1/xpra/x11/gtk_x11/world_window.py --- old/xpra-4.0/xpra/x11/gtk_x11/world_window.py 2020-05-10 19:00:56.000000000 +0200 +++ new/xpra-4.0.1/xpra/x11/gtk_x11/world_window.py 2020-05-17 18:12:15.000000000 +0200 @@ -90,6 +90,14 @@ global world_window return world_window +def destroy_world_window(): + global world_window + ww = world_window + if ww: + world_window = None + ww.destroy() + + class WorldWindow(Gtk.Window): def __init__(self, screen=Gdk.Screen.get_default()): global world_window diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xpra-4.0/xpra/x11/models/base.py new/xpra-4.0.1/xpra/x11/models/base.py --- old/xpra-4.0/xpra/x11/models/base.py 2020-05-10 19:00:56.000000000 +0200 +++ new/xpra-4.0.1/xpra/x11/models/base.py 2020-05-17 18:12:15.000000000 +0200 @@ -392,12 +392,15 @@ #the _XPRA_CONTENT_TYPE property takes precedence return content_type = guess_content_type(self) - metalog("content_type=%s", content_type) + metalog("guess_content_type(%s)=%s", self, content_type) self._updateprop("content-type", content_type) def _handle_xpra_content_type_change(self): content_type = self.prop_get("_XPRA_CONTENT_TYPE", "latin1", True) or "" metalog("content_type=%s", content_type) + if not content_type: + content_type = guess_content_type(self) + metalog("guess_content_type(%s)=%s", self, content_type) self._updateprop("content-type", content_type) def _handle_xpra_quality_change(self):
