summaryrefslogtreecommitdiff
path: root/games-util/bottles/bottles-65.4.ebuild
blob: 393b12eb7aaf40e4541565687d4b5fb80622af6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

DISTUTILS_USE_PEP517=no
DISTUTILS_SINGLE_IMPL=1
PYTHON_COMPAT=( python3_{13..14} )

inherit distutils-r1 gnome2-utils meson optfeature xdg

DESCRIPTION="Run Windows software and games on Linux"
HOMEPAGE="
	https://usebottles.com
	https://github.com/bottlesdevs/Bottles
"
SRC_URI="https://github.com/bottlesdevs/Bottles/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"

S="${WORKDIR}/Bottles-${PV}"

LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64"

RDEPEND="
	dev-libs/glib:2
	dev-libs/libportal[gtk]
	gui-libs/gtk:4
	gui-libs/gtksourceview:5
	gui-libs/libadwaita:1

	dev-vcs/fvs2

	$(python_gen_cond_dep '
		app-arch/patool[${PYTHON_USEDEP}]
		dev-python/certifi[${PYTHON_USEDEP}]
		dev-python/chardet[${PYTHON_USEDEP}]
		dev-python/charset-normalizer[${PYTHON_USEDEP}]
		dev-python/icoextract[${PYTHON_USEDEP}]
		dev-python/idna[${PYTHON_USEDEP}]
		dev-python/markdown[${PYTHON_USEDEP}]
		dev-python/orjson[${PYTHON_USEDEP}]
		dev-python/pathvalidate[${PYTHON_USEDEP}]
		dev-python/pefile[${PYTHON_USEDEP}]
		dev-python/pycairo[${PYTHON_USEDEP}]
		dev-python/pycurl[${PYTHON_USEDEP}]
		dev-python/pygobject[${PYTHON_USEDEP}]
		dev-python/pyxdg[${PYTHON_USEDEP}]
		dev-python/pyyaml[${PYTHON_USEDEP}]
		dev-python/requests[${PYTHON_USEDEP}]
		dev-python/urllib3[${PYTHON_USEDEP}]
		dev-python/wheel[${PYTHON_USEDEP}]
		dev-python/yara-python[${PYTHON_USEDEP}]
		media-gfx/vkbasalt-cli[${PYTHON_USEDEP}]
	')
"
DEPEND="${RDEPEND}"
BDEPEND="
	dev-libs/appstream-glib
	dev-libs/glib:2
	dev-util/blueprint-compiler
	dev-util/desktop-file-utils
	dev-util/gtk-update-icon-cache
	sys-devel/gettext

	test? (
		$(python_gen_cond_dep '
			dev-python/freezegun[${PYTHON_USEDEP}]
		')
	)
"

PATCHES=(
	"${FILESDIR}/${PN}-64.1-dont-stub-gi.repository.patch"
	"${FILESDIR}/${PN}-64.1-relax-AppStream-file-validation.patch"
	"${FILESDIR}/${PN}-65.4-remove-Flatpak-related-checks.patch"
)

EPYTEST_DESELECT=(
	bottles/tests/backend/integration/playtime/test_disabled_tracking.py::test_disabled_tracking_smoke
	bottles/tests/backend/integration/playtime/test_wine_executor_playtime.py::test_wine_executor_emits_and_updates_totals
	bottles/tests/backend/manager/test_manager.py::test_manager_cli_skips_connection_check
	bottles/tests/backend/manager/test_playtime.py::test_disable_tracking_method
	bottles/tests/backend/manager/test_playtime.py::test_disabled_tracker_is_noop
	bottles/tests/backend/manager/test_sandbox_creation.py::test_create_bottle_rejects_profile_link_outside_prefix
	bottles/tests/backend/test_network_timeouts.py::test_default_repository_fallbacks_are_commit_pinned
	bottles/tests/backend/wine/test_executor.py::test_run_program_substitutes_placeholders
	bottles/tests/frontend/test_cli_setup.py::test_list_components_prepares_directories
	bottles/tests/frontend/test_cli_setup.py::test_new_bottle_reports_creation_failure
	bottles/tests/frontend/test_cli_setup.py::test_new_bottle_waits_for_catalogs_before_installing
	bottles/tests/frontend/test_common.py::test_runner_dropdown_uses_display_names_without_changing_ids
	bottles/tests/frontend/test_dependency_entry.py::test_cache_lookup_is_skipped_without_installed_dependencies
	bottles/tests/frontend/test_dependency_entry.py::test_cache_lookup_only_runs_offline
	bottles/tests/frontend/test_dependency_entry.py::test_installed_dependency_row_shows_its_name
	bottles/tests/frontend/test_details_view.py::test_unload_view_empties_the_page_stack
	bottles/tests/frontend/test_drive_dialog.py::test_device_drive_shows_eject_action
	bottles/tests/frontend/test_external_runner_component.py::test_external_runner_cannot_be_removed_from_bottles
	bottles/tests/frontend/test_gtk_utils.py::test_full_width_string_list_factory_uses_unellipsized_labels
	bottles/tests/frontend/test_steam_library.py::test_program_widget_switches_desktop_entry_action
	bottles/tests/frontend/test_steam_library.py::test_program_widget_uses_library_icon
	bottles/tests/frontend/test_steam_library.py::test_steam_library_widget_launches_through_steam
	bottles/tests/frontend/test_steam_library.py::test_steam_program_widget_exposes_library_action
	bottles/tests/frontend/test_steam_runtime.py::test_steam_runtime_row_explains_availability
	bottles/tests/frontend/test_ui_language.py::test_ui_languages_match_shipped_catalogs
)

EPYTEST_IGNORE=(
	bottles/tests/frontend/test_open_uri.py
	bottles/tests/fvs/test_repo.py
)

EPYTEST_PLUGINS=( pytest-mock )
distutils_enable_tests pytest

src_test() {
	find bottles/tests -type f -exec \
		sed -i "s|/app/share/bottles/bottles.gresource|${BUILD_DIR}/bottles/frontend/ui/bottles.gresource|" {} \;

	meson_src_test
	distutils-r1_src_test
}

src_install() {
	meson_src_install

	python_fix_shebang "${ED}/usr/bin"
}

pkg_postinst() {
	xdg_pkg_postinst
	gnome2_schemas_update

	optfeature "extracting files from .cab files" app-arch/cabextract
	optfeature "7-Zip archiver support" app-arch/p7zip
	optfeature "Vulkan support" dev-util/vulkan-tools
	optfeature "icon/image convertion" media-gfx/imagemagick
	optfeature "display information support" x11-apps/xdpyinfo

	optfeature "preloading game files into memory" dev-util/vmtouch
	optfeature "optimizing Linux system performance on demand" games-util/gamemode
	optfeature "an efficient micro-compositor for running games" gui-wm/gamescope
	optfeature "monitoring FPS, temperatures, CPU/GPU load and more" games-util/mangohud
}

pkg_postrm() {
	xdg_pkg_postrm
	gnome2_schemas_update
}