summaryrefslogtreecommitdiff
path: root/games-util/bottles/bottles-66.6-r1.ebuild
blob: 0a0fc938d84c588806a9a12648b800ae9e267b45 (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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# 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}-66.6-remove-Flatpak-related-checks.patch"
	"${FILESDIR}/${PN}-66.6-r1-use-unresolved-path-to-umu-run.patch"
)

EPYTEST_DESELECT=(
	bottles/tests/backend/integration/playtime/test_aggregation.py::test_different_programs_separate_rows
	bottles/tests/backend/integration/playtime/test_aggregation.py::test_same_program_aggregates_into_one_row
	bottles/tests/backend/integration/playtime/test_disabled_tracking.py::test_disabled_tracking_smoke
	bottles/tests/backend/integration/playtime/test_failure_run.py::test_failure_run_marks_unknown_and_updates_totals
	bottles/tests/backend/integration/playtime/test_failure_run.py::test_multiple_failures_different_bottles
	bottles/tests/backend/integration/playtime/test_failure_run.py::test_multiple_failures_same_bottle_different_programs
	bottles/tests/backend/integration/playtime/test_playtime_signals.py::test_signals_flow_success
	bottles/tests/backend/integration/playtime/test_playtime_signals.py::test_signals_flow_unknown_failure
	bottles/tests/backend/integration/playtime/test_recovery.py::test_cli_manager_init_does_not_recover_live_sessions
	bottles/tests/backend/integration/playtime/test_recovery.py::test_recovery_different_bottles
	bottles/tests/backend/integration/playtime/test_recovery.py::test_recovery_same_bottle_different_programs
	bottles/tests/backend/integration/playtime/test_recovery.py::test_recovery_smoke
	bottles/tests/backend/integration/playtime/test_schema_meta.py::test_schema_meta_smoke
	bottles/tests/backend/integration/playtime/test_successful_run.py::test_success_multiple_apps_two_same_bottle_one_other
	bottles/tests/backend/integration/playtime/test_successful_run.py::test_successful_run_finalizes_and_updates_totals
	bottles/tests/backend/integration/playtime/test_uniqueness_retry.py::test_uniqueness_retry_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_bottle_details.py::test_flatpak_system_runner_uses_builtin_label
	bottles/tests/frontend/test_bottle_details.py::test_missing_runner_dialog_waits_for_versioning_upgrade
	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_dependency_row_activates_batch_selection
	bottles/tests/frontend/test_dependency_entry.py::test_installed_dependency_actions_use_recorded_uninstaller
	bottles/tests/frontend/test_dependency_entry.py::test_installed_dependency_row_shows_its_name
	bottles/tests/frontend/test_dependency_entry.py::test_installed_dependency_without_uninstaller_cannot_be_removed
	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_library_entry_resolves_steam_game_without_wine_program
	bottles/tests/frontend/test_steam_library.py::test_program_widget_extracts_its_own_icon
	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/frontend/test_umu_ui.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
	optfeature "UMU game prefixes" games-util/umu-launcher
}

pkg_postrm() {
	xdg_pkg_postrm
	gnome2_schemas_update
}