Install this version:
emerge -a =games-util/bottles-66.6
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =games-util/bottles-66.6
Or alternatively:
emerge --autounmask-write -a =games-util/bottles-66.6
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 66.6 | 8 | ~amd64 | 0 |
# 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_{12..15} )
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
}
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}] ')
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}] ')
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}] ') )
| Type | File | Size | Source URLs |
|---|---|---|---|
| DIST | bottles-66.6.tar.gz | 5563577 bytes | https://github.com/bottlesdevs/Bottles/archive/refs/tags/66.6.tar.gz |