public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "James Le Cuirot" <chewi@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: x11-wm/xpra/files/, x11-wm/xpra/
Date: Tue, 19 Jan 2021 22:38:51 +0000 (UTC)	[thread overview]
Message-ID: <1611095904.b0de3418e9b17db2f09fc2acdb60668f65c013fd.chewi@gentoo> (raw)

commit:     b0de3418e9b17db2f09fc2acdb60668f65c013fd
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 19 22:25:23 2021 +0000
Commit:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Tue Jan 19 22:38:24 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b0de3418

x11-wm/xpra: Version bump to 4.0.6_p28363

4.0.6 has some nice fixes but also a bad bug. This revision has a few
subsequent fixes.

Package-Manager: Portage-3.0.14, Repoman-3.0.1
Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org>

 x11-wm/xpra/Manifest                      |   1 +
 x11-wm/xpra/files/xpra-4.0.6-r28363.patch | 238 ++++++++++++++++++++++++++++++
 x11-wm/xpra/xpra-4.0.6_p28363.ebuild      | 148 +++++++++++++++++++
 3 files changed, 387 insertions(+)

diff --git a/x11-wm/xpra/Manifest b/x11-wm/xpra/Manifest
index 8a4b5fa5d88..836f937897f 100644
--- a/x11-wm/xpra/Manifest
+++ b/x11-wm/xpra/Manifest
@@ -2,3 +2,4 @@ DIST xpra-3.0.2.tar.xz 2749196 BLAKE2B 3c8745657a12637704fb88ac7b867ab387ef7ed22
 DIST xpra-3.0.5.tar.xz 2752016 BLAKE2B a36d6a4ebb0b14665014da92d510c0d5f978c96db653709ddc09a1015426d6ac6f71f9a221db68ee1114c95eeaca6600f9e49102ce9f936d9b0ee298ac432647 SHA512 3dbc122ebc8c4aa67154acfe92668ac364d8469022b03e28946d763e4d396f8c707690b2a4dbf07b55545259a53b46c9dd94e6e40131289ccc3dce6a88107681
 DIST xpra-4.0.4.tar.xz 2792512 BLAKE2B e16c47e82cf9f8712521c8f9c436b7bb819d9469fc0135ade1f2c9fc6f2a8a0fecf417caae87a1eca9c4b6daec1a82add5d6547208caee1a1d681ebc7b3d3d3b SHA512 91a90cdab775ec2501ef1601188b97ca4aa741e541f8d941add8d509767790a144b67f094177dda7539eff305710f2c834b90a93e9441437dac615677963094c
 DIST xpra-4.0.5.tar.xz 2795828 BLAKE2B fed6514d75dbb08f386325e30e375fd2077db1dad91602e575e3955a622a52ade2fc8e0c6c823d8a495684afb3a2f55f27e28abdf8734d0eca25275a3d358193 SHA512 d2aa2b70b6ec702bca5b0c2b06378107d45c4cad79f83ee2a1ed27fd5f66474e2d8e1d28d5111e60417ed089f91bab0b1566b0c9b3dcf6f0cb5e204ff5c42c92
+DIST xpra-4.0.6.tar.xz 2797752 BLAKE2B 3f2d4108fec1f1b5c0cd38a26f1a2c41af253fd234427e8e54104ff3742b9f7ae3e1863db837addd76acc6856b6f3cfcbde97edc2bc75314b215d4ca46a816f8 SHA512 e3dc66040898ed40ef12b8cdb89e5f42c2f36edc071afb435334389e727f376ddc116dbee47018468bff24f2cdd7be35750b58bc108ba73c5558bd9eccbd04ea

diff --git a/x11-wm/xpra/files/xpra-4.0.6-r28363.patch b/x11-wm/xpra/files/xpra-4.0.6-r28363.patch
new file mode 100644
index 00000000000..5187b700c0d
--- /dev/null
+++ b/x11-wm/xpra/files/xpra-4.0.6-r28363.patch
@@ -0,0 +1,238 @@
+Index: selinux/xpra_socketactivation/xpra_socketactivation.te
+===================================================================
+--- a/selinux/xpra_socketactivation/xpra_socketactivation.te	(revision 28285)
++++ b/selinux/xpra_socketactivation/xpra_socketactivation.te	(revision 28363)
+@@ -27,6 +27,7 @@
+ 	type unconfined_t;
+ 	type bin_t;
+ 	type avahi_t;
++	type config_home_t;
+ 
+ 	attribute can_read_shadow_passwords;
+ }
+@@ -55,6 +56,9 @@
+ allow xpra_t xpra_conf_t:dir { getattr open read search };
+ files_search_etc(xpra_t)
+ 
++allow xpra_t config_home_t:dir { getattr search };
++allow xpra_t config_home_t:file { getattr ioctl open read };
++
+ type xpra_socket_t;
+ files_type(xpra_socket_t)
+ 
+Index: setup.py
+===================================================================
+--- a/setup.py	(revision 28285)
++++ b/setup.py	(revision 28363)
+@@ -1533,8 +1533,9 @@
+                     for k,v in subs.items():
+                         data = data.replace(k, v)
+                 with open(dst_file, "wb") as f:
+-                    return f.write(data)
++                    f.write(data)
+                 if chmod:
++                    print("chmod(%s, %s)" % (dst_file, oct(chmod)))
+                     os.chmod(dst_file, chmod)
+ 
+             if printing_ENABLED and POSIX:
+Index: unittests/unit/net/crypto_test.py
+===================================================================
+--- a/unittests/unit/net/crypto_test.py	(revision 28285)
++++ b/unittests/unit/net/crypto_test.py	(revision 28363)
+@@ -88,7 +88,7 @@
+         start = monotonic_time()
+         self.do_test_backend(data, enc_iterations, dec_iterations)
+         end = monotonic_time()
+-        elapsed = end-start
++        elapsed = max(0.0001, end-start)
+         speed = (asize*16) * (enc_iterations + dec_iterations) / elapsed
+         iter_time = elapsed*1000/(enc_iterations + dec_iterations)
+         print("%10iKB: %5.1fms: %16iMB/s" % (asize*16//1024, iter_time, speed//1024//1024))
+Index: win32/MINGW_BUILD.sh
+===================================================================
+--- a/win32/MINGW_BUILD.sh	(revision 28285)
++++ b/win32/MINGW_BUILD.sh	(revision 28363)
+@@ -286,6 +286,8 @@
+ #why is it shipping those files??
+ find lib/ -name "*dll.a" -exec rm {} \;
+ #only keep the actual loaders, not all the other crap cx_Freeze put there:
++#but keep librsvg
++mv lib/gdk-pixbuf-2.0/2.10.0/loaders/librsvg* ./
+ mkdir lib/gdk-pixbuf-2.0/2.10.0/loaders.tmp
+ mv lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-*.dll lib/gdk-pixbuf-2.0/2.10.0/loaders.tmp/
+ rm -fr lib/gdk-pixbuf-2.0/2.10.0/loaders
+@@ -326,6 +328,9 @@
+ #and keep pdfium:
+ mv lib/*pdfium*.dll ./
+ pushd lib > /dev/null
++#cx_Freeze forgets these two!?
++cp $MINGW_PREFIX/bin/libatk-*dll ./
++cp $MINGW_PREFIX/bin/libgtk-*dll ./
+ #remove all the pointless duplication:
+ for x in `ls *dll`; do
+ 	find ./ -mindepth 2 -name "${x}" -exec rm {} \;
+Index: xpra/client/gtk_base/gtk_client_window_base.py
+===================================================================
+--- a/xpra/client/gtk_base/gtk_client_window_base.py	(revision 28285)
++++ b/xpra/client/gtk_base/gtk_client_window_base.py	(revision 28363)
+@@ -1806,10 +1806,16 @@
+ 
+     def _set_backing_size(self, ww, wh):
+         b = self._backing
++        bw = self._client.cx(ww)
++        bh = self._client.cy(wh)
++        if max(ww, wh)>=32000 or min(ww, wh)<0:
++            raise Exception("invalid window size %ix%i" % (ww, wh))
++        if max(bw, bh)>=32000:
++            raise Exception("invalid window backing size %ix%i" % (bw, bh))
+         if b:
+-            b.init(ww, wh, self._client.cx(ww), self._client.cy(wh))
++            b.init(ww, wh, bw, bh)
+         else:
+-            self.new_backing(self._client.cx(ww), self._client.cy(wh))
++            self.new_backing(bw, bh)
+ 
+     def resize(self, w, h, resize_counter=0):
+         ww, wh = self.get_size()
+Index: xpra/net/file_transfer.py
+===================================================================
+--- a/xpra/net/file_transfer.py	(revision 28285)
++++ b/xpra/net/file_transfer.py	(revision 28363)
+@@ -580,6 +580,10 @@
+ 
+     def _process_open_url(self, packet):
+         url, send_id = packet[1:3]
++        try:
++            url = strtobytes(url).decode("utf8")
++        except UnicodeDecodeError:
++            url = bytestostr(url)
+         if not self.open_url:
+             filelog.warn("Warning: received a request to open URL '%s'", url)
+             filelog.warn(" but opening of URLs is disabled")
+@@ -670,12 +674,12 @@
+         filelog("process send-data-request: send_id=%s, url=%s, printit=%s, openit=%s", s(send_id), url, printit, openit)
+         def cb_answer(accept):
+             filelog("accept%s=%s", (url, printit, openit), accept)
++            self.send("send-data-response", send_id, accept)
+         #filenames and url are always sent encoded as utf8:
+         try:
+             url = strtobytes(url).decode("utf8")
+         except:
+             url = bytestostr(url)
+-            self.send("send-data-response", send_id, accept)
+         if dtype==b"file":
+             if not self.file_transfer:
+                 cb_answer(False)
+Index: xpra/net/socket_util.py
+===================================================================
+--- a/xpra/net/socket_util.py	(revision 28285)
++++ b/xpra/net/socket_util.py	(revision 28363)
+@@ -622,7 +622,7 @@
+             log.info(" %s does not exist", dirname)
+         #only show extra information if the socket permissions
+         #would have been accessible by the group:
+-        if POSIX and (sperms & 0o40):
++        elif POSIX and (sperms & 0o40):
+             uid = getuid()
+             username = get_username_for_uid(uid)
+             groups = get_groups(username)
+Index: xpra/platform/xposix/paths.py
+===================================================================
+--- a/xpra/platform/xposix/paths.py	(revision 28285)
++++ b/xpra/platform/xposix/paths.py	(revision 28363)
+@@ -102,12 +102,12 @@
+ 
+ def do_get_user_conf_dirs(uid):
+     #per-user configuration location:
+-    #(but never use /root/.xpra)
++    #(but never use /root/.xpra or /root/.config/xpra)
+     if uid is None:
+         uid = os.getuid()
+     dirs = []
+-    dirs += [os.path.join(os.environ.get("XDG_CONFIG_HOME", "~/.config"), "xpra")]
+     if uid>0:
++        dirs += [os.path.join(os.environ.get("XDG_CONFIG_HOME", "~/.config"), "xpra")]
+         dirs.append("~/.xpra")
+     return dirs
+ 
+Index: xpra/platform/xposix/sd_listen.pyx
+===================================================================
+--- a/xpra/platform/xposix/sd_listen.pyx	(revision 28285)
++++ b/xpra/platform/xposix/sd_listen.pyx	(revision 28363)
+@@ -52,7 +52,7 @@
+     return sockets
+ 
+ def get_sd_socket_type(fd):
+-    from xpra.net.common import TCP_SOCKTYPES
++    from xpra.net.bytestreams import TCP_SOCKTYPES
+     socktype = os.environ.get("XPRA_SD%i_SOCKET_TYPE" % fd)
+     if not socktype:
+         socktype = os.environ.get("XPRA_SD_SOCKET_TYPE", "tcp")
+Index: xpra/server/mixins/audio_server.py
+===================================================================
+--- a/xpra/server/mixins/audio_server.py	(revision 28285)
++++ b/xpra/server/mixins/audio_server.py	(revision 28363)
+@@ -121,7 +121,7 @@
+             from xpra.platform.xposix.paths import _get_xpra_runtime_dir, get_runtime_dir
+             rd = osexpand(get_runtime_dir())
+             if not os.path.exists(rd) or not os.path.isdir(rd):
+-                log.warn("Warning: the runtime directory '%s' does not exist,")
++                log.warn("Warning: the runtime directory '%s' does not exist,", rd)
+                 log.warn(" cannot start a private pulseaudio server")
+             else:
+                 xpra_rd = _get_xpra_runtime_dir()
+Index: xpra/server/window/motion.pyx
+===================================================================
+--- a/xpra/server/window/motion.pyx	(revision 28285)
++++ b/xpra/server/window/motion.pyx	(revision 28363)
+@@ -79,7 +79,7 @@
+         for i,v in enumerate(arr):
+             self.a2[i] = <uint64_t> abs(v)
+ 
+-    def update(self, pixels, int16_t x, int16_t y, uint16_t width, uint16_t height, uint16_t rowstride, uint8_t bpp=4):
++    def update(self, pixels, int16_t x, int16_t y, uint16_t width, uint16_t height, uint32_t rowstride, uint8_t bpp=4):
+         """
+             Add a new image to compare with,
+             checksum its rows into a2,
+Index: xpra/server/window/window_video_source.py
+===================================================================
+--- a/xpra/server/window/window_video_source.py	(revision 28285)
++++ b/xpra/server/window/window_video_source.py	(revision 28363)
+@@ -1785,6 +1785,13 @@
+             scrolllog("no scrolling: detection has already been used on this image")
+             #we've already checked
+             return False
++        x = image.get_target_x()
++        y = image.get_target_y()
++        w = image.get_width()
++        h = image.get_height()
++        if w>=32000 or h>=32000:
++            scrolllog("no scrolling: the image is too large, %ix%i", w, h)
++            return False
+         #don't download the pixels if we have a GPU buffer,
+         #since that means we're likely to be able to compress on the GPU too with NVENC:
+         if not image.has_pixels():
+@@ -1792,10 +1799,6 @@
+         if self.content_type=="video" or not self.non_video_encodings:
+             scrolllog("no scrolling: content is video")
+             return False
+-        x = image.get_target_x()
+-        y = image.get_target_y()
+-        w = image.get_width()
+-        h = image.get_height()
+         if w<MIN_SCROLL_IMAGE_SIZE or h<MIN_SCROLL_IMAGE_SIZE:
+             scrolllog("no scrolling: image size %ix%i is too small, minimum is %ix%i",
+                       w, h, MIN_SCROLL_IMAGE_SIZE, MIN_SCROLL_IMAGE_SIZE)
+Index: xpra/x11/x11_server_core.py
+===================================================================
+--- a/xpra/x11/x11_server_core.py	(revision 28285)
++++ b/xpra/x11/x11_server_core.py	(revision 28363)
+@@ -687,7 +687,7 @@
+                 #we can use XRRSetScreenSize:
+                 try:
+                     with xsync:
+-                        RandR.xrr_set_screen_size(w, h, self.xdpi or self.dpi, self.ydpi or self.dpi)
++                        RandR.xrr_set_screen_size(w, h, self.xdpi or self.dpi or 96, self.ydpi or self.dpi or 96)
+                 except XError:
+                     screenlog("XRRSetScreenSize failed", exc_info=True)
+             screenlog("calling RandR.get_screen_size()")

diff --git a/x11-wm/xpra/xpra-4.0.6_p28363.ebuild b/x11-wm/xpra/xpra-4.0.6_p28363.ebuild
new file mode 100644
index 00000000000..55099a674a1
--- /dev/null
+++ b/x11-wm/xpra/xpra-4.0.6_p28363.ebuild
@@ -0,0 +1,148 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python3_{6,7,8,9} )
+DISTUTILS_USE_SETUPTOOLS=no
+inherit xdg distutils-r1 eutils flag-o-matic tmpfiles prefix
+
+MY_P="${PN}-${PV%_p*}"
+DESCRIPTION="X Persistent Remote Apps (xpra) and Partitioning WM (parti) based on wimpiggy"
+HOMEPAGE="http://xpra.org/ http://xpra.org/src/"
+SRC_URI="http://xpra.org/src/${MY_P}.tar.xz"
+
+LICENSE="GPL-2 BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="brotli +client +clipboard csc cups dbus ffmpeg jpeg +lz4 lzo minimal opengl pillow pulseaudio server sound test vpx webcam webp"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}
+	|| ( client server )
+	cups? ( dbus )
+	opengl? ( client )
+"
+
+COMMON_DEPEND="${PYTHON_DEPS}
+	dev-python/pygobject:3[cairo,${PYTHON_USEDEP}]
+	x11-libs/gtk+:3[introspection]
+	x11-libs/libX11
+	x11-libs/libXcomposite
+	x11-libs/libXdamage
+	x11-libs/libXfixes
+	x11-libs/libXrandr
+	x11-libs/libXtst
+	x11-libs/libxkbfile
+	brotli? ( app-arch/brotli )
+	csc? ( >=media-video/ffmpeg-1.2.2:0= )
+	ffmpeg? ( >=media-video/ffmpeg-3.2.2:0=[x264,x265] )
+	jpeg? ( media-libs/libjpeg-turbo )
+	opengl? ( dev-python/pyopengl )
+	pulseaudio? (
+		media-sound/pulseaudio
+		media-plugins/gst-plugins-pulse:1.0
+	)
+	sound? ( media-libs/gstreamer:1.0
+		media-libs/gst-plugins-base:1.0
+		dev-python/gst-python:1.0 )
+	vpx? ( media-libs/libvpx media-video/ffmpeg )
+	webp? ( media-libs/libwebp )
+"
+RDEPEND="${COMMON_DEPEND}
+	acct-group/xpra
+	dev-python/netifaces[${PYTHON_USEDEP}]
+	dev-python/rencode[${PYTHON_USEDEP}]
+	dev-python/pillow[jpeg?,${PYTHON_USEDEP}]
+	virtual/ssh
+	x11-apps/xmodmap
+	cups? ( dev-python/pycups[${PYTHON_USEDEP}] )
+	dbus? ( dev-python/dbus-python[${PYTHON_USEDEP}] )
+	lz4? ( dev-python/lz4[${PYTHON_USEDEP}] )
+	lzo? ( >=dev-python/python-lzo-0.7.0[${PYTHON_USEDEP}] )
+	opengl? (
+		client? ( dev-python/pyopengl_accelerate[${PYTHON_USEDEP}] )
+	)
+	server? ( x11-base/xorg-server[-minimal,xvfb]
+		x11-drivers/xf86-input-void
+	)
+	webcam? ( dev-python/numpy[${PYTHON_USEDEP}]
+		media-libs/opencv[python]
+		dev-python/pyinotify[${PYTHON_USEDEP}] )"
+DEPEND="${COMMON_DEPEND}
+	virtual/pkgconfig
+	>=dev-python/cython-0.16[${PYTHON_USEDEP}]"
+
+RESTRICT="!test? ( test )"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-3.0.2_ignore-gentoo-no-compile.patch
+	"${FILESDIR}"/${PN}-3.0.2-ldconfig.patch
+	"${FILESDIR}"/${PN}-4.0.3-suid-warning.patch
+	"${FILESDIR}"/${PN}-4.0.6-r28363.patch
+)
+
+S="${WORKDIR}/${MY_P}"
+
+pkg_postinst() {
+	tmpfiles_process /usr/lib/tmpfiles.d/xpra.conf
+
+	xdg_pkg_postinst
+}
+
+python_prepare_all() {
+	hprefixify -w '/os.path/' setup.py
+	hprefixify tmpfiles.d/xpra.conf xpra/server/server_util.py \
+		xpra/platform{/xposix,}/paths.py xpra/scripts/server.py
+
+	if use minimal; then
+		sed -r -e 's/^(pam|scripts|xdg_open)_ENABLED.*/\1_ENABLED=False/' \
+			-i setup.py || die
+	fi
+
+	distutils-r1_python_prepare_all
+}
+
+python_configure_all() {
+	sed -e "/'pulseaudio'/s:DEFAULT_PULSEAUDIO:$(usex pulseaudio True False):" \
+		-i setup.py || die
+
+	mydistutilsargs=(
+		--without-PIC
+		--without-Xdummy
+		$(use_with client)
+		$(use_with clipboard)
+		$(use_with csc csc_swscale)
+		--without-csc_libyuv
+		--without-cuda_rebuild
+		--without-cuda_kernels
+		$(use_with cups printing)
+		--without-debug
+		$(use_with dbus)
+		$(use_with ffmpeg dec_avcodec2)
+		$(use_with ffmpeg enc_ffmpeg)
+		$(use_with ffmpeg enc_x264)
+		$(use_with ffmpeg enc_x265)
+		--with-gtk3
+		--without-html5
+		$(use_with jpeg jpeg_encoder)
+		$(use_with jpeg jpeg_decoder)
+		--without-mdns
+		--without-minify
+		$(use_with opengl)
+		$(use_with server shadow)
+		$(use_with server)
+		$(use_with sound)
+		--with-strict
+		$(use_with vpx)
+		--with-warn
+		$(use_with webcam)
+		$(use_with webp)
+		--with-x11
+	)
+
+	# see https://www.xpra.org/trac/ticket/1080
+	# and http://trac.cython.org/ticket/395
+	append-cflags -fno-strict-aliasing
+
+	export XPRA_SOCKET_DIRS="${EPREFIX}/run/xpra"
+}


             reply	other threads:[~2021-01-19 22:38 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-19 22:38 James Le Cuirot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-06-27 13:38 [gentoo-commits] repo/gentoo:master commit in: x11-wm/xpra/files/, x11-wm/xpra/ Benda XU
2023-06-12 17:45 Andreas Sturmlechner
2023-05-16 22:16 James Le Cuirot
2023-05-14 14:54 James Le Cuirot
2023-05-14 14:54 James Le Cuirot
2022-05-22 12:41 James Le Cuirot
2022-04-17 12:52 James Le Cuirot
2022-01-28 13:44 James Le Cuirot
2021-04-07 23:05 James Le Cuirot
2021-01-19 22:38 James Le Cuirot
2020-01-27 12:18 Andreas K. Hüttel
2017-03-19 14:41 Michael Weber
2017-02-01 17:33 Michael Weber
2017-01-22 23:23 Michael Weber
2016-07-05  9:41 Michael Weber
2015-09-20 21:28 Michael Weber

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1611095904.b0de3418e9b17db2f09fc2acdb60668f65c013fd.chewi@gentoo \
    --to=chewi@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox