summaryrefslogtreecommitdiff
path: root/x11-wm
diff options
context:
space:
mode:
authorJames Le Cuirot <chewi@gentoo.org>2021-01-19 22:25:23 +0000
committerJames Le Cuirot <chewi@gentoo.org>2021-01-19 22:38:24 +0000
commitb0de3418e9b17db2f09fc2acdb60668f65c013fd (patch)
tree7256bcb5193669f332b11cd5d19c16002ceb24c7 /x11-wm
parentx11-wm/xpra: Add myself as maintainer for a little while (diff)
downloadgentoo-b0de3418e9b17db2f09fc2acdb60668f65c013fd.tar.gz
gentoo-b0de3418e9b17db2f09fc2acdb60668f65c013fd.tar.bz2
gentoo-b0de3418e9b17db2f09fc2acdb60668f65c013fd.zip
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@gentoo.org>
Diffstat (limited to 'x11-wm')
-rw-r--r--x11-wm/xpra/Manifest1
-rw-r--r--x11-wm/xpra/files/xpra-4.0.6-r28363.patch238
-rw-r--r--x11-wm/xpra/xpra-4.0.6_p28363.ebuild148
3 files changed, 387 insertions, 0 deletions
diff --git a/x11-wm/xpra/Manifest b/x11-wm/xpra/Manifest
index 8a4b5fa5d884..836f937897f2 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 000000000000..5187b700c0df
--- /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 000000000000..55099a674a16
--- /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"
+}