Install this version:
emerge -a =games-util/bottles-66.7
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =games-util/bottles-66.7
Or alternatively:
emerge --autounmask-write -a =games-util/bottles-66.7
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 66.7 | 8 | ~amd64 | 0 |
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the BSD 3-Claude License
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}]
')
)
"
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_prepare() {
default
sed -i "s|fs.is_file('/' + '.flatpak-info')|fs.is_file(meson.current_source_dir() / 'meson.build')|" \
bottles/frontend/meson.build || die
sed -i '/^import os$/a os.environ.setdefault("CPAK_CONTAINER_ID", "1")' \
bottles/frontend/bottles.py bottles/frontend/cli/cli.py || die
sed -i 's|return "FLATPAK_ID" in os.environ or is_cpak()|return False|' \
bottles/backend/globals.py || die
sed -i -E 's/\.resolve\(strict=(True|False)\)//g' \
bottles/backend/umu/provider.py || die
}
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
}
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.7.tar.gz | 5568100 bytes | https://github.com/bottlesdevs/Bottles/archive/refs/tags/66.7.tar.gz |