summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Zander <negril.nx+gentoo@gmail.com>2024-06-04 19:58:47 +0200
committerAlexey Shvetsov <alexxy@gentoo.org>2024-06-10 22:18:21 +0300
commitdcc3756596141e0080544618e18f1152bf0be774 (patch)
treea1975076e12468fbda640d208468ca0e239e402e /x11-wm/xpra/xpra-9999.ebuild
parentdev-python/pbr: Enable testing on py3.13 (diff)
downloadgentoo-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.ebuild296
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