diff options
author | James Le Cuirot <chewi@gentoo.org> | 2021-01-19 22:25:23 +0000 |
---|---|---|
committer | James Le Cuirot <chewi@gentoo.org> | 2021-01-19 22:38:24 +0000 |
commit | b0de3418e9b17db2f09fc2acdb60668f65c013fd (patch) | |
tree | 7256bcb5193669f332b11cd5d19c16002ceb24c7 /x11-wm | |
parent | x11-wm/xpra: Add myself as maintainer for a little while (diff) | |
download | gentoo-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/Manifest | 1 | ||||
-rw-r--r-- | x11-wm/xpra/files/xpra-4.0.6-r28363.patch | 238 | ||||
-rw-r--r-- | x11-wm/xpra/xpra-4.0.6_p28363.ebuild | 148 |
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" +} |