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/, x11-wm/xpra/files/
Date: Sat,  4 Sep 2021 10:18:03 +0000 (UTC)	[thread overview]
Message-ID: <1630750669.81c161656c900dfc8fe0aa3f343c781ade6153b8.chewi@gentoo> (raw)

commit:     81c161656c900dfc8fe0aa3f343c781ade6153b8
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sat Sep  4 10:17:10 2021 +0000
Commit:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Sat Sep  4 10:17:49 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=81c16165

x11-wm/xpra: Bump to 4.2.2, add tests

The tests required tweaks but they should work in the next release.

I had to drop prefix support because it's broken and hard to fix.

Closes: https://bugs.gentoo.org/802105
Package-Manager: Portage-3.0.22, Repoman-3.0.3
Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org>

 x11-wm/xpra/Manifest                               |   1 +
 x11-wm/xpra/files/xpra-4.2.2-bad-tests.patch       |  36 ++++
 x11-wm/xpra/files/xpra-4.2.2-dup-ip.patch          |  40 +++++
 x11-wm/xpra/files/xpra-4.2.2-ldconfig.patch        |  22 +++
 .../files/xpra-4.2.2-true-false-bin-path.patch     |  38 ++++
 x11-wm/xpra/metadata.xml                           |   2 +
 x11-wm/xpra/xpra-4.2.2.ebuild                      | 200 +++++++++++++++++++++
 7 files changed, 339 insertions(+)

diff --git a/x11-wm/xpra/Manifest b/x11-wm/xpra/Manifest
index 384b7becefb..9eb5666590e 100644
--- a/x11-wm/xpra/Manifest
+++ b/x11-wm/xpra/Manifest
@@ -1,2 +1,3 @@
 DIST xpra-4.2.1.tar.gz 3878766 BLAKE2B c537b54b8ea5cc1ad2909eeccf61eba59a518165eb72c7d4984d26f378e4babca997c2f6cf78f5ba947edbc4ad6c4085c86793aad9b01f1fca2b22b1daaabda9 SHA512 553d8c11f1a77a2a58cbad7df0d899c611e21eb01dad3516f99f1fb9cc7a4507ba7557807b62ddea7101ca01bab123962a34b9c3369db06d1bb318debd91dc55
+DIST xpra-4.2.2.tar.gz 3894227 BLAKE2B a25dde9c3732e31cd8127393f89f2495e01896d18d5212b141b4046c265a9ead029bed68c9610c2330ec0a885af1eeb3f92aef2c16dd102293e34ac208be605a SHA512 3f81b5a2f7abdfc14f7e48ec708524e38142b984e6539e94a27b6aef7b5a5e063ef14e6b7383a7719ecc7687c62f49eeeb5668282c337d90a79194c354dedd24
 DIST xpra-4.2.tar.gz 4057304 BLAKE2B 17b6a95f7ce24a311c39d09291d9570285c30f25c2d935389cb380c2fce698acd984821e69acaabd66368e76b5beddd01803a68d6a16dd930dd2fa3289532f10 SHA512 261d46c04ce70686f41873c5c0c115e462e3b2501c58ab05fb2904f4700454c5fb8124d0faf86fe5e982872f19a4b90b941f8aff4790f7206602d6030c005353

diff --git a/x11-wm/xpra/files/xpra-4.2.2-bad-tests.patch b/x11-wm/xpra/files/xpra-4.2.2-bad-tests.patch
new file mode 100644
index 00000000000..0d34ab0ef2f
--- /dev/null
+++ b/x11-wm/xpra/files/xpra-4.2.2-bad-tests.patch
@@ -0,0 +1,36 @@
+diff --git a/tests/unittests/unit/net/compression_test.py b/tests/unittests/unit/net/compression_test.py
+index 29ac7f2d2..89b68fdbf 100755
+--- a/tests/unittests/unit/net/compression_test.py
++++ b/tests/unittests/unit/net/compression_test.py
+@@ -11,7 +11,6 @@ from xpra.net import compression
+ class TestCompression(unittest.TestCase):
+ 
+     def test_main(self):
+-        compression.sanity_checks()
+         compression.init_all()
+         assert compression.use("zlib")
+         assert compression.get_compression_caps()
+diff --git a/tests/unittests/unit/net/packet_encoding_test.py b/tests/unittests/unit/net/packet_encoding_test.py
+index 69ef95c65..eead158b0 100755
+--- a/tests/unittests/unit/net/packet_encoding_test.py
++++ b/tests/unittests/unit/net/packet_encoding_test.py
+@@ -12,7 +12,6 @@ class TestPacketEncoding(unittest.TestCase):
+ 
+     def test_env_log(self):
+         packet_encoding.init_all()
+-        packet_encoding.sanity_checks()
+         assert packet_encoding.get_packet_encoding_caps()
+         assert packet_encoding.get_enabled_encoders()
+         for x in packet_encoding.get_enabled_encoders():
+diff --git a/tests/unittests/unit/scripts/main_test.py b/tests/unittests/unit/scripts/main_test.py
+index 6dd54069c..f9478c2ab 100755
+--- a/tests/unittests/unit/scripts/main_test.py
++++ b/tests/unittests/unit/scripts/main_test.py
+@@ -121,7 +121,6 @@ class TestMain(unittest.TestCase):
+         t("tcp://fe80::c1:ac45:7351:ea69%eth1:14500", {"host" : "fe80::c1:ac45:7351:ea69%eth1", "port" : 14500})
+         t("tcp://[fe80::c1:ac45:7351:ea69]:14500", {"host" : "fe80::c1:ac45:7351:ea69", "port" : 14500})
+         t("tcp://host/100,key1=value1", {"key1" : "value1"})
+-        t("tcp://host/key1=value1", {"key1" : "value1"})
+         try:
+             from xpra.net.vsock import CID_ANY, PORT_ANY    #@UnresolvedImport
+             t("vsock://any:any/", {"vsock" : (CID_ANY, PORT_ANY)})

diff --git a/x11-wm/xpra/files/xpra-4.2.2-dup-ip.patch b/x11-wm/xpra/files/xpra-4.2.2-dup-ip.patch
new file mode 100644
index 00000000000..f689166dec9
--- /dev/null
+++ b/x11-wm/xpra/files/xpra-4.2.2-dup-ip.patch
@@ -0,0 +1,40 @@
+diff --git a/tests/unittests/unit/net/net_util_test.py b/tests/unittests/unit/net/net_util_test.py
+index 1ceaf4573..870801666 100755
+--- a/tests/unittests/unit/net/net_util_test.py
++++ b/tests/unittests/unit/net/net_util_test.py
+@@ -6,6 +6,7 @@
+
+ import unittest
+
++from collections import defaultdict
+ from xpra.net.net_util import (
+     get_info, get_interfaces, get_interfaces_addresses, #get_interface,
+     get_gateways, get_bind_IPs, do_get_bind_ifacemask,
+@@ -26,10 +27,8 @@ class TestVersionUtilModule(unittest.TestCase):
+         ifaces = get_interfaces()
+         if not ifaces:
+             return
++        ip_ifaces = defaultdict(list)
+         for iface in ifaces:
+-            ipmasks = do_get_bind_ifacemask(iface)
+-            for ip, _ in ipmasks:
+-                assert get_iface(ip)==iface
+             if if_nametoindex:
+                 try:
+                     i = if_nametoindex(iface)
+@@ -37,7 +36,14 @@ class TestVersionUtilModule(unittest.TestCase):
+                     pass
+                 else:
+                     if if_indextoname:
+-                        assert if_indextoname(i)==iface
++                        assert if_indextoname(i)==iface, "expected interface %s for index %i but got %s" % (
++                            iface, i, if_indextoname(i))
++            ipmasks = do_get_bind_ifacemask(iface)
++            for ip, _ in ipmasks:
++                ip_ifaces[ip].append(iface)
++        for ip, ifaces in ip_ifaces.items():
++            assert get_iface(ip) in ifaces, "expected interface for ip %s to be one of %s but got %s" % (
++                    ip, ifaces, get_iface(ip))
+         ia = get_interfaces_addresses()
+         assert ia
+         #for iface, address in ia.items():

diff --git a/x11-wm/xpra/files/xpra-4.2.2-ldconfig.patch b/x11-wm/xpra/files/xpra-4.2.2-ldconfig.patch
new file mode 100644
index 00000000000..2cd009994c4
--- /dev/null
+++ b/x11-wm/xpra/files/xpra-4.2.2-ldconfig.patch
@@ -0,0 +1,22 @@
+From f97daef82521c9297f6cc2d7925fe5c6ed526ad1 Mon Sep 17 00:00:00 2001
+From: totaam <antoine@xpra.org>
+Date: Sun, 22 Aug 2021 21:31:52 +0700
+Subject: [PATCH] #3239 with shell=True, best not to use a list
+
+---
+ xpra/os_util.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/xpra/os_util.py b/xpra/os_util.py
+index 2f8c0d64a..2f309f888 100644
+--- a/xpra/os_util.py
++++ b/xpra/os_util.py
+@@ -786,7 +786,7 @@ def find_lib_ldconfig(libname):
+             ldconfig = t
+             break
+     import subprocess
+-    p = subprocess.Popen([ldconfig, "-p"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
++    p = subprocess.Popen("%s -p" % ldconfig, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
+     data = bytestostr(p.communicate()[0])
+ 
+     libpath = re.search(pattern, data, re.MULTILINE)        #@UndefinedVariable

diff --git a/x11-wm/xpra/files/xpra-4.2.2-true-false-bin-path.patch b/x11-wm/xpra/files/xpra-4.2.2-true-false-bin-path.patch
new file mode 100644
index 00000000000..255e8073861
--- /dev/null
+++ b/x11-wm/xpra/files/xpra-4.2.2-true-false-bin-path.patch
@@ -0,0 +1,38 @@
+From 6e9ef70facfcc280e4c98892d2af6636d122c762 Mon Sep 17 00:00:00 2001
+From: James Le Cuirot <chewi@gentoo.org>
+Date: Tue, 24 Aug 2021 09:56:26 +0100
+Subject: [PATCH] Execute true and false from /bin, not /usr/bin
+
+Some distributions now have /bin symlinked to /usr/bin, but not all of
+them. /bin should work everywhere.
+---
+ tests/unittests/unit/server/auth_test.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/tests/unittests/unit/server/auth_test.py b/tests/unittests/unit/server/auth_test.py
+index 373db96e5..8e6be8e20 100755
+--- a/tests/unittests/unit/server/auth_test.py
++++ b/tests/unittests/unit/server/auth_test.py
+@@ -73,7 +73,7 @@ class TestAuth(unittest.TestCase):
+             kwargs["connection"] = "fake-connection-data"
+         #exec auth would fail during rpmbuild without a default command:
+         if "command" not in kwargs:
+-            kwargs["command"] = "/usr/bin/true"
++            kwargs["command"] = "/bin/true"
+         return c(username, **kwargs)
+ 
+     def _test_module(self, module):
+@@ -380,8 +380,8 @@ class TestAuth(unittest.TestCase):
+             a = self._init_auth("exec", **kwargs)
+             assert not a.requires_challenge(), "%s should not require a challenge" % a
+             assert self.capsauth(a)==success, "%s should have %s using cmd=%s" % (a, ["failed", "succeeded"][success], cmd)
+-        exec_cmd("/usr/bin/true", True)
+-        exec_cmd("/usr/bin/false", False)
++        exec_cmd("/bin/true", True)
++        exec_cmd("/bin/false", False)
+ 
+ 
+ def main():
+-- 
+2.32.0
+

diff --git a/x11-wm/xpra/metadata.xml b/x11-wm/xpra/metadata.xml
index a90f8afcffa..3440980db47 100644
--- a/x11-wm/xpra/metadata.xml
+++ b/x11-wm/xpra/metadata.xml
@@ -25,11 +25,13 @@
 	<flag name="client">Build client-side code</flag>
 	<flag name="clipboard">Enable clipboard support</flag>
 	<flag name="csc">Enable csc softscaler support</flag>
+	<flag name="html">Install the HTML5 client</flag>
 	<flag name="ibus">Use ibus input method via <pkg>app-i18n/ibus</pkg></flag>
 	<flag name="pillow">Enable pillow support</flag>
 	<flag name="pinentry">Use <pkg>app-crypt/pinentry</pkg> for password entry</flag>
 	<flag name="server">Build server-side code</flag>
 	<flag name="vpx">Enable vpx image format support</flag>
 	<flag name="webcam">Enable webcam support via opencv</flag>
+	<flag name="xdg">Enable support for XDG-based menus</flag>
 </use>
 </pkgmetadata>

diff --git a/x11-wm/xpra/xpra-4.2.2.ebuild b/x11-wm/xpra/xpra-4.2.2.ebuild
new file mode 100644
index 00000000000..48f142fd675
--- /dev/null
+++ b/x11-wm/xpra/xpra-4.2.2.ebuild
@@ -0,0 +1,200 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7,8,9} )
+DISTUTILS_SINGLE_IMPL=yes
+DISTUTILS_USE_SETUPTOOLS=no
+inherit xdg xdg-utils distutils-r1 tmpfiles udev
+
+DESCRIPTION="X Persistent Remote Apps (xpra) and Partitioning WM (parti) based on wimpiggy"
+HOMEPAGE="https://xpra.org/"
+SRC_URI="https://xpra.org/src/${P}.tar.gz"
+
+LICENSE="GPL-2 BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="brotli +client +clipboard csc cups dbus doc ffmpeg jpeg html ibus +lz4 lzo minimal opengl pillow pinentry pulseaudio +server sound systemd test vpx webcam webp xdg xinerama"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}
+	|| ( client server )
+	cups? ( dbus )
+	opengl? ( client )
+	test? ( client clipboard dbus html server sound xdg xinerama )
+"
+
+TDEPEND="
+	$(python_gen_cond_dep '
+		dev-python/netifaces[${PYTHON_USEDEP}]
+		dev-python/pillow[jpeg?,${PYTHON_USEDEP}]
+		dev-python/rencode[${PYTHON_USEDEP}]
+		dbus? ( dev-python/dbus-python[${PYTHON_USEDEP}] )
+		xdg? ( dev-python/pyxdg[${PYTHON_USEDEP}] )
+	')
+	html? ( www-apps/xpra-html5 )
+	server? (
+		x11-base/xorg-server[-minimal,xvfb]
+		x11-drivers/xf86-input-void
+	)
+	xinerama? ( x11-libs/libfakeXinerama )
+"
+DEPEND="
+	${PYTHON_DEPS}
+	$(python_gen_cond_dep '
+		dev-python/pygobject:3[${PYTHON_USEDEP},cairo]
+		opengl? ( dev-python/pyopengl[${PYTHON_USEDEP}] )
+		sound? ( dev-python/gst-python:1.0[${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 )
+	pulseaudio? (
+		media-sound/pulseaudio
+		media-plugins/gst-plugins-pulse:1.0
+	)
+	sound? (
+		media-libs/gstreamer:1.0
+		media-libs/gst-plugins-base:1.0
+	)
+	vpx? ( media-libs/libvpx media-video/ffmpeg )
+	webp? ( media-libs/libwebp )
+"
+RDEPEND="
+	${DEPEND}
+	${TDEPEND}
+	$(python_gen_cond_dep '
+		cups? ( dev-python/pycups[${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}] )
+		)
+		webcam? (
+			dev-python/numpy[${PYTHON_USEDEP}]
+			dev-python/pyinotify[${PYTHON_USEDEP}]
+			media-libs/opencv[${PYTHON_USEDEP},python]
+		)
+	')
+	acct-group/xpra
+	virtual/ssh
+	x11-apps/xauth
+	x11-apps/xmodmap
+	ibus? ( app-i18n/ibus )
+	pinentry? ( app-crypt/pinentry )
+"
+DEPEND+="
+	test? ( ${TDEPEND} )
+"
+BDEPEND="
+	$(python_gen_cond_dep '
+		>=dev-python/cython-0.16[${PYTHON_USEDEP}]
+	')
+	virtual/pkgconfig
+	doc? ( app-text/pandoc )
+"
+
+RESTRICT="!test? ( test )"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-3.0.2_ignore-gentoo-no-compile.patch
+	"${FILESDIR}"/${PN}-4.2.2-ldconfig.patch
+	"${FILESDIR}"/${PN}-4.2-suid-warning.patch
+	"${FILESDIR}"/${PN}-4.2.2-true-false-bin-path.patch
+	"${FILESDIR}"/${PN}-4.2.2-dup-ip.patch
+	"${FILESDIR}"/${PN}-4.2.2-bad-tests.patch
+)
+
+python_prepare_all() {
+	distutils-r1_python_prepare_all
+
+	# FIXME: There are hardcoded paths all over the place but the following
+	# double-prefixes some files under /etc. Looks tricky to fix. :(
+	#hprefixify $(find -type f \( -name "*.py" -o -name "*.conf" \))
+
+	sed -r -e "/\bdoc_dir =/s:/${PN}\":/${PF}/html\":" \
+		-i setup.py || die
+
+	if use minimal; then
+		sed -r -e 's/^(pam|scripts|xdg_open)_ENABLED.*/\1_ENABLED=False/' \
+			-i setup.py || die
+	fi
+
+	# Upstream says these tests are currently broken.
+	rm tests/unittests/unit/net/subprocess_wrapper_test.py tests/unittests/unit/net/protocol_test.py || die
+}
+
+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 doc docs)
+		$(use_with ffmpeg dec_avcodec2)
+		$(use_with ffmpeg enc_ffmpeg)
+		$(use_with ffmpeg enc_x264)
+		$(use_with ffmpeg enc_x265)
+		--with-gtk3
+		$(use_with jpeg jpeg_encoder)
+		$(use_with jpeg jpeg_decoder)
+		--without-mdns
+		$(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
+	)
+
+	export XPRA_SOCKET_DIRS="${EPREFIX}/run/xpra"
+}
+
+python_test() {
+	export XAUTHORITY=${HOME}/.Xauthority
+	touch "${XAUTHORITY}" || die
+
+	distutils_install_for_testing
+	xdg_environment_reset
+
+	PYTHONPATH=${S}/tests/unittests:${BUILD_DIR}/test/lib \
+	XPRA_SYSTEMD_RUN=$(usex systemd) XPRA_TEST_COVERAGE=0 \
+		"${PYTHON}" tests/unittests/unit/run.py || die
+}
+
+python_install_all() {
+	distutils-r1_python_prepare_all
+
+	# Move udev dir to the right place.
+	local dir=$(get_udevdir)
+	dodir "${dir%/*}"
+	mv -vnT "${ED}"/usr/lib/udev "${ED}${dir}" || die
+}
+
+pkg_postinst() {
+	tmpfiles_process xpra.conf
+	xdg_pkg_postinst
+}


             reply	other threads:[~2021-09-04 10:18 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-04 10:18 James Le Cuirot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-06-10 19:18 [gentoo-commits] repo/gentoo:master commit in: x11-wm/xpra/, x11-wm/xpra/files/ Alexey Shvetsov
2023-09-02  9:19 Benda XU
2023-05-01  7:51 James Le Cuirot
2022-08-29 14:06 James Le Cuirot
2022-02-28 23:05 James Le Cuirot
2022-01-15 23:31 James Le Cuirot
2021-10-06 12:08 James Le Cuirot
2021-07-18 10:43 Conrad Kostecki
2021-05-30  7:56 James Le Cuirot
2020-10-29 22:24 Andreas K. Hüttel
2020-01-16 11:31 Andreas K. Hüttel
2019-12-16 14:11 Benda XU
2019-11-29  4:41 Benda XU
2018-12-02 22:39 Andreas K. Hüttel
2017-03-10 12:17 Michael Weber
2016-02-22 13:37 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=1630750669.81c161656c900dfc8fe0aa3f343c781ade6153b8.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