diff options
author | Paul Zander <negril.nx+gentoo@gmail.com> | 2024-06-04 19:58:47 +0200 |
---|---|---|
committer | Alexey Shvetsov <alexxy@gentoo.org> | 2024-06-10 22:18:21 +0300 |
commit | dcc3756596141e0080544618e18f1152bf0be774 (patch) | |
tree | a1975076e12468fbda640d208468ca0e239e402e /x11-wm/xpra/xpra-9999.ebuild | |
parent | dev-python/pbr: Enable testing on py3.13 (diff) | |
download | gentoo-dcc3756596141e0080544618e18f1152bf0be774.tar.gz gentoo-dcc3756596141e0080544618e18f1152bf0be774.tar.bz2 gentoo-dcc3756596141e0080544618e18f1152bf0be774.zip |
x11-wm/xpra: add 6.0.1, 6.9999, update 9999
- Python 3.12 support
- PEP517 support
- re-enabled tests
- general rework of the ebuild
Closes: https://bugs.gentoo.org/912679
Closes: https://bugs.gentoo.org/929898
Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/37042
Signed-off-by: Alexey Shvetsov <alexxy@gentoo.org>
Diffstat (limited to 'x11-wm/xpra/xpra-9999.ebuild')
-rw-r--r-- | x11-wm/xpra/xpra-9999.ebuild | 296 |
1 files changed, 222 insertions, 74 deletions
diff --git a/x11-wm/xpra/xpra-9999.ebuild b/x11-wm/xpra/xpra-9999.ebuild index b2531fd6fa85..bfe892db2a2a 100644 --- a/x11-wm/xpra/xpra-9999.ebuild +++ b/x11-wm/xpra/xpra-9999.ebuild @@ -1,35 +1,42 @@ -# Copyright 1999-2023 Gentoo Authors +# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 -if [[ ${PV} = 9999* ]]; then +if [[ ${PV} = *9999* ]]; then EGIT_REPO_URI="https://github.com/Xpra-org/xpra.git" + if [[ ${PV} = 6.9999* ]]; then + EGIT_BRANCH="v6.x" + fi inherit git-r3 else inherit pypi KEYWORDS="~amd64 ~x86" fi -PYTHON_COMPAT=( python3_{9..11} ) +PYTHON_COMPAT=( python3_{10..12} ) DISTUTILS_USE_PEP517=setuptools DISTUTILS_SINGLE_IMPL=yes DISTUTILS_EXT=1 -inherit xdg xdg-utils distutils-r1 multibuild prefix tmpfiles udev +inherit cuda xdg distutils-r1 prefix tmpfiles udev DESCRIPTION="X Persistent Remote Apps (xpra) and Partitioning WM (parti) based on wimpiggy" HOMEPAGE="https://xpra.org/" LICENSE="GPL-2 BSD" SLOT="0" -IUSE="brotli +client +clipboard crypt csc cups dbus doc ffmpeg jpeg html ibus +lz4 lzo minimal oauth opengl pinentry pulseaudio +server sound systemd test +trayicon udev vpx webcam webp xdg xinerama" +IUSE="+X avif brotli +client +clipboard crypt csc cuda cups dbus debug doc examples gstreamer +gtk3 html ibus jpeg +lz4 lzo mdns minimal oauth opengl openh264 pinentry pulseaudio qrcode +server sound systemd test +trayicon udev vpx webcam webp x264 xdg xinerama " +IUSE+=" video_cards_nvidia" +RESTRICT="!test? ( test )" REQUIRED_USE="${PYTHON_REQUIRED_USE} - || ( client server ) + || ( client gtk3 server ) cups? ( dbus ) oauth? ( server ) opengl? ( client ) - test? ( client clipboard crypt dbus html server sound xdg xinerama ) + clipboard? ( gtk3 ) + gtk3? ( client ) + test? ( client clipboard crypt dbus gstreamer html server sound xdg xinerama ) " TEST_DEPEND=" @@ -45,39 +52,52 @@ TEST_DEPEND=" x11-base/xorg-server[-minimal,xvfb] x11-drivers/xf86-input-void ) + webcam? ( media-video/v4l2loopback ) xinerama? ( x11-libs/libfakeXinerama ) " DEPEND=" ${PYTHON_DEPS} $(python_gen_cond_dep ' - dev-python/pygobject:3[${PYTHON_USEDEP},cairo] + dev-python/pygobject:3[${PYTHON_USEDEP}] opengl? ( dev-python/pyopengl[${PYTHON_USEDEP}] ) sound? ( dev-python/gst-python:1.0[${PYTHON_USEDEP}] ) + gtk3? ( + dev-python/pygobject:3[cairo] + ) ') - x11-libs/gtk+:3[introspection] - x11-libs/libX11 - x11-libs/libXcomposite - x11-libs/libXdamage - x11-libs/libXfixes - x11-libs/libXrandr - x11-libs/libXres - x11-libs/libXtst - x11-libs/libxkbfile + dev-libs/xxhash + avif? ( media-libs/libavif ) brotli? ( app-arch/brotli ) - csc? ( >=media-video/ffmpeg-1.2.2:0= ) - ffmpeg? ( >=media-video/ffmpeg-3.2.2:0=[x264] ) + client? ( + x11-libs/gtk+:3[X?,introspection] + ) jpeg? ( media-libs/libjpeg-turbo ) + mdns? ( dev-libs/mdns ) + openh264? ( media-libs/openh264:= ) pulseaudio? ( - media-libs/libpulse media-plugins/gst-plugins-pulse:1.0 + media-plugins/gst-plugins-opus ) + qrcode? ( media-gfx/qrencode ) sound? ( media-libs/gstreamer:1.0 media-libs/gst-plugins-base:1.0 ) - vpx? ( media-libs/libvpx media-video/ffmpeg ) + vpx? ( media-libs/libvpx ) webp? ( media-libs/libwebp ) + X? ( + x11-apps/xrandr + x11-libs/libXcomposite + x11-libs/libXdamage + x11-libs/libXfixes + x11-libs/libXrandr + x11-libs/libXres + x11-libs/libXtst + x11-libs/libxkbfile + ) + x264? ( media-libs/x264 ) " +# nvenc? ( amd64? ( media-libs/nv-codec-headers ) ) RDEPEND=" ${DEPEND} ${TEST_DEPEND} @@ -104,24 +124,36 @@ RDEPEND=" udev? ( virtual/udev ) " DEPEND+=" - test? ( ${TEST_DEPEND} ) + test? ( + ${TEST_DEPEND} + $(python_gen_cond_dep ' + dev-python/paramiko[${PYTHON_USEDEP}] + ') + ) " BDEPEND=" $(python_gen_cond_dep ' - >=dev-python/cython-0.16[${PYTHON_USEDEP}] + dev-python/cython[${PYTHON_USEDEP}] + dev-python/pip[${PYTHON_USEDEP}] ') virtual/pkgconfig doc? ( virtual/pandoc ) " -# Broken by PEP517 migration and some tests failed for a while before that for -# unknown reasons. -RESTRICT="test" - PATCHES=( - "${FILESDIR}"/${PN}-9999-xdummy.patch + "${FILESDIR}/${PN}-9999-pep517.patch" ) +src_prepare() { + default + + sed \ + -e 's#UNITTESTS_DIR=`dirname $(readlink -f $0)`#: "${UNITTESTS_DIR:=`dirname $(readlink -f $0)`}"#' \ + -e 's#INSTALL_ROOT="$SRC_DIR/dist/python${PYTHON_VERSION}"#: "${INSTALL_ROOT:=$SRC_DIR/dist/python${PYTHON_VERSION}}"#' \ + -e '/setup.py install/d' \ + -i "${S}/tests/unittests/run" || die +} + python_prepare_all() { distutils-r1_python_prepare_all @@ -142,70 +174,186 @@ python_configure_all() { -i setup.py || die DISTUTILS_ARGS=( - --without-PIC - --without-Xdummy - $(use_with sound audio) - $(use_with client) - $(use_with clipboard) - $(use_with csc csc_swscale) + --with-PIC + "$(use_with avif)" + "$(use_with brotli)" + "$(use_with sound audio)" + "$(use_with client)" + "$(use_with clipboard)" + "$(use_with csc csc_cython)" --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) - --without-enc_x265 - --with-gtk3 - $(use_with jpeg jpeg_encoder) - $(use_with jpeg jpeg_decoder) - --without-mdns - --without-sd_listen - --without-service - $(use_with opengl) - $(use_with server shadow) - $(use_with server) - --without-strict - $(use_with vpx) - --with-warn - $(use_with webcam) - $(use_with webp) - --with-x11 + # "$(use_with csc csc_libyuv)" # https://chromium.googlesource.com/libyuv/libyuv + "$(use_with cuda cuda_rebuild)" + "$(use_with cuda cuda_kernels)" + "$(use_with dbus)" + "$(use_with debug)" + "$(use_with doc docs)" + --without-evdi + # "$(use_with evdi)" x11-drivers/evdi::guru + "$(use_with examples example)" + "$(use_with gstreamer)" + "$(use_with gstreamer gstreamer_audio)" + "$(use_with gstreamer gstreamer_video)" + "$(use_with gtk3)" + "$(use_with html http)" + "$(use_with mdns)" + "$(use_with video_cards_nvidia nvidia)" + --without-nvdec + --without-nvenc + --without-nvfbc + # "$(use_with nvenc nvdec)" # NVIDIA Video Codec SDK + # "$(use_with nvenc nvenc)" # NVIDIA Video Codec SDK + # "$(use_with nvenc nvfbc)" # NVIDIA Capture SDK + "$(use_with opengl)" + "$(use_with openh264)" + "$(use_with cups printing)" + --without-pandoc_lua + "$(use_with qrcode qrencode)" + --without-quic + # "$(use_with quic)" # https://github.com/aiortc/aioquic + "$(use_with systemd sd_listen)" + "$(use_with server)" + "$(use_with systemd service)" + "$(use_with server shadow)" + "$(use_with vpx)" + "$(use_with webcam)" + "$(use_with webp)" + "$(use_with X x11)" + "$(use_with X Xdummy)" + + "$(use_with test tests)" + --with-strict + # --with-verbose + # --with-warn + # --with-cythonize_more + + --pkg-config-path="${S}/fs/lib/pkgconfig" ) - export XPRA_SOCKET_DIRS="${EPREFIX}/run/xpra" + if use server; then + DISTUTILS_ARGS+=( + "$(use_with jpeg jpeg_encoder)" + "$(use_with vpx vpx_encoder)" + "$(use_with openh264 openh264_encoder)" + "$(use_with cuda nvjpeg_encoder)" + "$(use_with avif avif_encoder)" + "$(use_with webp webp_encoder)" + --without-spng_encoder + # "$(use_with spng spng_encoder)" # https://github.com/randy408/libspng + ) + else + DISTUTILS_ARGS+=( + --without-jpeg_encoder + --without-vpx_encoder + --without-openh264_encoder + --without-nvjpeg_encoder + --without-avif_encoder + --without-webp_encoder + --without-spng_encoder + ) + fi + + if use client || use gtk3; then + DISTUTILS_ARGS+=( + "$(use_with vpx vpx_decoder)" + "$(use_with openh264 openh264_decoder)" + "$(use_with cuda nvjpeg_decoder)" + "$(use_with jpeg jpeg_decoder)" + "$(use_with avif avif_decoder)" + "$(use_with webp webp_decoder)" + --without-spng_decoder + # "$(use_with spng spng_decoder)" # https://github.com/randy408/libspng + ) + else + DISTUTILS_ARGS+=( + --without-jpeg_decoder + --without-vpx_decoder + --without-openh264_decoder + --without-nvjpeg_decoder + --without-avif_decoder + --without-webp_decoder + --without-spng_decoder + ) + fi + + DISTUTILS_ARGS+=( + # Arguments from user + "${MYDISTUTILS_ARGS[@]}" + ) + + export XPRA_SOCKET_DIRS="${EPREFIX}/var/run/xpra" +} + +python_compile() { + if use cuda; then + export NVCC_PREPEND_FLAGS="-ccbin $(cuda_gccdir)/g++" + fi + + PYTHONPATH="${S}" distutils-r1_python_compile } python_test() { - export XAUTHORITY=${HOME}/.Xauthority - touch "${XAUTHORITY}" || die + einfo "${BUILD_DIR}/install/$(python_get_sitedir)" + + use cuda && cuda_add_sandbox -w + addwrite /dev/dri/renderD128 + + addpredict /dev/dri/card0 + addpredict /dev/fuse + addpredict /dev/tty0 + addpredict /dev/vga_arbiter + addpredict /proc/mtrr + addpredict /var/run/utmp + + addpredict "$(python_get_sitedir)" + + if [[ -d "/sys/devices/virtual/video4linux" ]]; then + local devices + readarray -t devices <<<"$(find /sys/devices/virtual/video4linux -mindepth 1 -maxdepth 1 -type d -name 'video*' )" + for device in "${devices[@]}"; do + addwrite "/dev/$(basename "${device}" || die )" + done + fi - distutils_install_for_testing xdg_environment_reset - env -u WAYLAND_DISPLAY -u XDG_SESSION_TYPE \ - PYTHONPATH="${S}/tests/unittests:${BUILD_DIR}/test/lib" \ - XPRA_SYSTEMD_RUN=$(usex systemd) XPRA_TEST_COVERAGE=0 \ - "${PYTHON}" "${S}"/tests/unittests/unit/run.py || die + export XAUTHORITY=${T}/.Xauthority + touch "${XAUTHORITY}" || die + + local -x XPRA_TEST_COVERAGE=0 INSTALL_ROOT="${BUILD_DIR}/install" UNITTESTS_DIR="${S}/tests/unittests" + + tests/unittests/run \ + --skip-fail unit.client.mixins.audioclient_test \ + --skip-fail unit.client.x11_client_test \ + --skip-fail unit.net.net_util_test \ + --skip-fail unit.notifications.common_test \ + --skip-fail unit.server.mixins.shadow_option_test \ + --skip-fail unit.server.mixins.start_option_test \ + --skip-fail unit.server.mixins.startdesktop_option_test \ + --skip-fail unit.server.server_auth_test \ + --skip-fail unit.server.shadow_server_test \ + --skip-fail unit.x11.x11_server_test \ + --skip-slow unit.client.mixins.webcam_test \ + --skip-slow unit.server.server_sockets_test \ + --skip-slow unit.server.source.source_mixins_test \ + || die -n + + # remove test file + rm "${INSTALL_ROOT}/usr/share/xpra/www" -r || die } python_install_all() { distutils-r1_python_prepare_all - # Switching to PEP517 gives /usr/etc. Previously, setup.py hardcodes - # if root_prefix.endswith("/usr"): - # root_prefix = root_prefix[:-4] - # But now setuptools uses data/* to represent out-of-sitedir files. - # The upstream hack no longer works. We are on our own. - mv -v "${ED}"/usr/etc "${ED}"/ || die + sed -e "s#/.*data/etc#/etc#g" \ + -i "${ED}/etc/xpra/conf.d/"* || die + # Move udev dir to the right place if necessary. if use udev; then - local dir=$(get_udevdir) + local dir + dir=$(get_udevdir) if [[ ! ${ED}/usr/lib/udev -ef ${ED}${dir} ]]; then dodir "${dir%/*}" mv -vnT "${ED}"/usr/lib/udev "${ED}${dir}" || die |