diff options
author | James Le Cuirot <chewi@gentoo.org> | 2021-09-04 11:17:10 +0100 |
---|---|---|
committer | James Le Cuirot <chewi@gentoo.org> | 2021-09-04 11:17:49 +0100 |
commit | 81c161656c900dfc8fe0aa3f343c781ade6153b8 (patch) | |
tree | 8a7d56d888c352a9d4dcfdd8f87b35d77db1e2de | |
parent | media-sound/cmus: keyword ~riscv (diff) | |
download | gentoo-81c161656c900dfc8fe0aa3f343c781ade6153b8.tar.gz gentoo-81c161656c900dfc8fe0aa3f343c781ade6153b8.tar.bz2 gentoo-81c161656c900dfc8fe0aa3f343c781ade6153b8.zip |
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@gentoo.org>
-rw-r--r-- | x11-wm/xpra/Manifest | 1 | ||||
-rw-r--r-- | x11-wm/xpra/files/xpra-4.2.2-bad-tests.patch | 36 | ||||
-rw-r--r-- | x11-wm/xpra/files/xpra-4.2.2-dup-ip.patch | 40 | ||||
-rw-r--r-- | x11-wm/xpra/files/xpra-4.2.2-ldconfig.patch | 22 | ||||
-rw-r--r-- | x11-wm/xpra/files/xpra-4.2.2-true-false-bin-path.patch | 38 | ||||
-rw-r--r-- | x11-wm/xpra/metadata.xml | 2 | ||||
-rw-r--r-- | x11-wm/xpra/xpra-4.2.2.ebuild | 200 |
7 files changed, 339 insertions, 0 deletions
diff --git a/x11-wm/xpra/Manifest b/x11-wm/xpra/Manifest index 384b7becefbe..9eb5666590ea 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 000000000000..0d34ab0ef2fa --- /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 000000000000..f689166dec9d --- /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 000000000000..2cd009994c4b --- /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 000000000000..255e80738616 --- /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 a90f8afcffa0..3440980db471 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 000000000000..48f142fd675d --- /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 +} |