# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 PLOCALES="af ar ast be bg bn bs ca cs da de el en_AU en_CA en_GB eo es et eu fa fi fr ga gl he hi hr hu id it ja ka kk ko lt lv ms my nb nl pl pt pt_BR ro ru si sk sl sq sr sv ta te th tr uk uz vi yi zh_CN zh_TW" DISTUTILS_SINGLE_IMPL=1 DISTUTILS_USE_PEP517=setuptools PYTHON_COMPAT=( python3_{13..14} ) PYTHON_REQ_USE="sqlite(+)" inherit desktop distutils-r1 plocale toolchain-funcs virtualx DESCRIPTION="Clean junk to free disk space and to maintain privacy" HOMEPAGE="https://www.bleachbit.org" SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.bz2" LICENSE="GPL-3" SLOT="0" KEYWORDS="~amd64 ~arm ~arm64 ~x86" RDEPEND=" $(python_gen_cond_dep ' dev-python/chardet[${PYTHON_USEDEP}] dev-python/psutil[${PYTHON_USEDEP}] dev-python/pygobject:3[${PYTHON_USEDEP}] ') x11-libs/gtk+:3 " BDEPEND=" sys-devel/gettext " distutils_enable_tests unittest python_prepare_all() { distutils-r1_python_prepare_all if use test; then sed -e "s:'strings':'$(tc-getSTRINGS)':g" \ -i tests/TestWipePath.py || die # avoid tests requiring internet access rm tests/Test{Chaff,GuiChaff,Network,Update}.py || die sed -e "s/test_chaff(self)/_&/" \ -i tests/TestGUI.py || die # fails due to non-existent $HOME/.profile rm tests/TestInit.py || die # fails due to permission error on /proc sed -e "s/test_make_self_oom_target_linux(self)/_&/" \ -i tests/TestMemory.py || die # only applicable to Windows rm tests/{TestNsisUtilities,TestWindows}.py || die # slow test (50s) sed -e "s/test_notify(self)/_&/" \ -i tests/TestGUI.py || die # random failures, some also on upstream CI sed -e "s/test_get_proc_swaps(self)/_&/" \ -i tests/TestMemory.py || die sed -e "s/test_is_process_running(self)/_&/" \ -i tests/TestUnix.py || die # Fails if user has filesystems outside of the accepted subset # ['btrfs', 'ext4', 'ext3', 'squashfs', 'unknown'] # This is an issue for example if you use xfs. # Instead of adding every possible filesystem lets just skip it. sed -e "s/test_get_filesystem_type(self)/_&/" \ -i tests/TestFileUtilities.py || die # Assumes loginshell is the uid. sed -e "s/test_get_real_uid(self)/_&/" \ -i tests/TestGeneral.py || die fi rem_locale() { rm -fv "po/${1}.po" || die "removing of ${1}.po failed" } plocale_find_changes po "" ".po" plocale_for_each_disabled_locale rem_locale } python_compile_all() { emake -C po local } python_test() { # use a hardcoded valid code, some tests may fail with accent (pt, fr, ck ...) # tests.TestGuiStartup.GuiStartupTestCase.test_first_start_message_clears_flag # tests.TestGuiStartup.GuiStartupTestCase.test_upgrade_message_shown_for_pre_510 # tests.TestWinapp.WinappTestCase.test_section_not_found export LC_ALL="C.UTF-8" virtx eunittest -p Test*.py } python_install() { distutils-r1_python_install python_newscript ${PN}.py ${PN} } python_install_all() { # reproduce the install phase from Makefile, not adapted for python_sitedir distutils-r1_python_install_all emake -C po DESTDIR="${D}" install insinto /usr/share/${PN}/cleaners doins cleaners/*.xml insinto /usr/share/${PN} doins share/* insinto /usr/share/metainfo doins org.${PN}.BleachBit.metainfo.xml insinto /usr/share/polkit-1/actions doins org.${PN}.policy dodoc doc/* doicon ${PN}.png domenu org.${PN}.BleachBit.desktop }