# Copyright 1999-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 DISTUTILS_EXT=1 DISTUTILS_USE_PEP517=setuptools PYTHON_COMPAT=( python3_{10..11} ) inherit distutils-r1 pypi DESCRIPTION="A full-featured, hackable tiling window manager written in Python" HOMEPAGE=" https://qtile.org/ https://github.com/qtile/qtile/ https://pypi.org/project/qtile/ " LICENSE="MIT" SLOT="0" KEYWORDS="amd64 ~riscv ~x86" IUSE="pulseaudio wayland" RDEPEND=" >=dev-python/cairocffi-1.6.0[${PYTHON_USEDEP}] >=dev-python/cffi-1.1.0:=[${PYTHON_USEDEP}] dev-python/dbus-next[${PYTHON_USEDEP}] dev-python/pygobject[${PYTHON_USEDEP}] >=dev-python/xcffib-1.4.0[${PYTHON_USEDEP}] x11-libs/cairo[X,xcb(+)] x11-libs/libnotify[introspection] x11-libs/pango pulseaudio? ( dev-python/pulsectl-asyncio[${PYTHON_USEDEP}] media-sound/pulseaudio ) wayland? ( >=dev-python/pywlroots-0.16[${PYTHON_USEDEP}] ) " BDEPEND=" dev-python/cffi[${PYTHON_USEDEP}] dev-python/setuptools-scm[${PYTHON_USEDEP}] test? ( media-gfx/imagemagick[X] x11-base/xorg-server[xephyr,xvfb] ) wayland? ( >=dev-python/pywlroots-0.16[${PYTHON_USEDEP}] ) " distutils_enable_tests pytest python_prepare_all() { local PATCHES=( # https://github.com/qtile/qtile/pull/4610 "${FILESDIR}/${P}-keyring.patch" ) sed -e "s/can_import(\"wlroots.ffi_build\")/$(usex wayland True False)/" \ -i setup.py || die # some tests expect bin/qtile mkdir bin || die cat >> bin/qtile <<-EOF || die #!/bin/sh exec qtile "\${@}" EOF chmod +x bin/qtile || die distutils-r1_python_prepare_all } src_compile() { local -x CFFI_TMPDIR=${T} distutils-r1_src_compile } python_test() { local EPYTEST_DESELECT=( # mocking doesn't seem to work test/widgets/test_mpd2widget.py # checks fail with mypy errors test/test_check.py # migration tests require intact source tree test/test_migrate.py # no clue ("ExistingWMException") test/test_restart.py::test_restart_hook_and_state ) # force usage of built module rm -rf libqtile || die local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 nonfatal epytest --backend=x11 $(usev wayland '--backend=wayland') || die -n "Tests failed with ${EPYTHON}" } python_install_all() { local DOCS=( CHANGELOG README.rst ) distutils-r1_python_install_all insinto /usr/share/xsessions doins resources/qtile.desktop insinto /usr/share/wayland-sessions doins resources/qtile-wayland.desktop exeinto /etc/X11/Sessions newexe "${FILESDIR}"/${PN}-session-r1 ${PN} }