Hello community, here is the log from the commit of package lutris for openSUSE:Factory checked in at 2020-12-01 14:21:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/lutris (Old) and /work/SRC/openSUSE:Factory/.lutris.new.5913 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lutris" Tue Dec 1 14:21:57 2020 rev:8 rq:851778 version:0.5.8.1 Changes: -------- --- /work/SRC/openSUSE:Factory/lutris/lutris.changes 2020-11-17 21:25:00.373361190 +0100 +++ /work/SRC/openSUSE:Factory/.lutris.new.5913/lutris.changes 2020-12-01 14:22:02.413544870 +0100 @@ -1,0 +2,14 @@ +Mon Nov 30 08:37:07 UTC 2020 - Michael Vetter <mvet...@suse.com> + +- Update to 0.5.8.1: + * Remove Proton from available Wine versions + * Display a dialog until Lutris finishes initializing + * Allow to keep game files when uninstalling a game + * Remove custom sidebar CSS + * Fix popup menu not showing in list view + * Fix script loading for local files + * Fix installed at column setting name for list view + * Fix lutris not launching games with rungameid + * Fix installed Steam game for fresh lutris installs + +------------------------------------------------------------------- Old: ---- lutris_0.5.8.tar.xz New: ---- lutris_0.5.8.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lutris.spec ++++++ --- /var/tmp/diff_new_pack.HNYFJf/_old 2020-12-01 14:22:03.149545667 +0100 +++ /var/tmp/diff_new_pack.HNYFJf/_new 2020-12-01 14:22:03.149545667 +0100 @@ -18,7 +18,7 @@ %global appid net.lutris.Lutris Name: lutris -Version: 0.5.8 +Version: 0.5.8.1 Release: 0 Summary: Manager for game installation and execution License: GPL-3.0-or-later ++++++ lutris_0.5.8.tar.xz -> lutris_0.5.8.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/debian/changelog new/lutris/debian/changelog --- old/lutris/debian/changelog 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/debian/changelog 2020-11-27 23:23:48.000000000 +0100 @@ -1,4 +1,18 @@ -lutris (0.5.8) UNRELEASED; urgency=medium +lutris (0.5.8.1) groovy; urgency=medium + + * Remove Proton from available Wine versions + * Display a dialog until Lutris finishes initializing + * Allow to keep game files when uninstalling a game + * Remove custom sidebar CSS + * Fix popup menu not showing in list view + * Fix script loading for local files + * Fix installed at column setting name for list view + * Fix lutris not launching games with rungameid + * Fix installed Steam game for fresh lutris installs + + -- Mathieu Comandon <stri...@strycore.com> Fri, 27 Nov 2020 14:23:48 -0800 + +lutris (0.5.8) groovy; urgency=medium * 3rd party services are now available from the main window * The "Import games" window has been removed. The concept of @@ -64,7 +78,7 @@ * Refactor of several core components. New python packages `lutris.database` and `lutris.gui.installer` - -- Mathieu Comandon <stri...@strycore.com> Sat, 17 Oct 2020 16:36:28 -0700 + -- Mathieu Comandon <stri...@strycore.com> Sat, 14 Nov 2020 15:03:28 -0700 lutris (0.5.7.1) focal; urgency=medium diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/debian/control new/lutris/debian/control --- old/lutris/debian/control 2020-10-03 13:55:57.000000000 +0200 +++ new/lutris/debian/control 2020-11-15 00:03:02.000000000 +0100 @@ -3,6 +3,7 @@ Priority: optional Maintainer: Mathieu Comandon <stri...@strycore.com> Build-Depends: debhelper-compat (= 12), + appstream, dh-sequence-python3, meson, Rules-Requires-Root: no diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/debian/copyright new/lutris/debian/copyright --- old/lutris/debian/copyright 2020-07-26 00:42:57.000000000 +0200 +++ new/lutris/debian/copyright 2020-11-27 16:39:50.000000000 +0100 @@ -5,6 +5,12 @@ Files: * Copyright: 2009-2020 Mathieu Comandon <stri...@strycore.com> -License: GPL-3 +License: GPL-3.0-or-later On Debian systems, the complete text of the General Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". + +Files: share/metainfo/net.lutris.Lutris.metainfo.xml +Copyright: Lutris Team <stri...@lutris.net> +License: CC0-1.0 + On Debian systems, the complete text of the CC0-1.0 license + can be found in "/usr/share/common-licenses/CC0-1.0". diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/__init__.py new/lutris/lutris/__init__.py --- old/lutris/lutris/__init__.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/__init__.py 2020-11-27 23:23:48.000000000 +0100 @@ -1,3 +1,3 @@ """Main Lutris package""" -__version__ = "0.5.8" +__version__ = "0.5.8.1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/game.py new/lutris/lutris/game.py --- old/lutris/lutris/game.py 2020-10-17 21:54:38.000000000 +0200 +++ new/lutris/lutris/game.py 2020-11-06 18:49:44.000000000 +0100 @@ -634,7 +634,7 @@ logger.info("Moving %s to %s", self, new_location) new_config = "" old_location = self.directory - if old_location: + if os.path.exists(old_location): game_directory = os.path.basename(old_location) target_directory = os.path.join(new_location, game_directory) else: @@ -656,7 +656,7 @@ if not system.path_exists(old_location): logger.warning("Location %s doesn't exist, files already moved?", old_location) - return + return target_directory if new_location.startswith(old_location): logger.warning("Can't move %s to one of its children %s", old_location, new_location) return target_directory diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/gui/application.py new/lutris/lutris/gui/application.py --- old/lutris/lutris/gui/application.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/gui/application.py 2020-11-27 23:23:48.000000000 +0100 @@ -36,7 +36,7 @@ from lutris.database import games as games_db from lutris.game import Game from lutris.installer import get_installers -from lutris.gui.dialogs import ErrorDialog, InstallOrPlayDialog +from lutris.gui.dialogs import ErrorDialog, InstallOrPlayDialog, LutrisInitDialog from lutris.gui.dialogs.issue import IssueReportWindow from lutris.gui.installerwindow import InstallerWindow from lutris.gui.widgets.status_icon import LutrisStatusIcon @@ -44,11 +44,9 @@ from lutris.startup import init_lutris, run_all_checks from lutris.util import datapath, log from lutris.util.http import HTTPError, Request -from lutris.util.jobs import AsyncCall from lutris.util.log import logger from lutris.util.steam.appmanifest import AppManifest, get_appmanifests from lutris.util.steam.config import get_steamapps_paths -from lutris.util.wine.dxvk import init_dxvk_versions from lutris.services import get_services from lutris.database.services import ServiceGameCollection @@ -71,11 +69,8 @@ GLib.set_application_name(_("Lutris")) self.window = None - try: - init_lutris() - except RuntimeError as ex: - ErrorDialog(str(ex)) - return + init_dialog = LutrisInitDialog(init_lutris) + init_dialog.run() self.running_games = Gio.ListStore.new(Game) self.app_windows = {} @@ -319,7 +314,6 @@ logger.info("Lutris %s", settings.VERSION) migrate() run_all_checks() - AsyncCall(init_dxvk_versions, None) # List game if options.contains("list-games"): @@ -462,7 +456,7 @@ self.do_shutdown() return 0 game = Game(db_game["id"]) - self.on_game_start(game) + self.on_game_launch(game) return 0 def on_game_launch(self, game): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/gui/dialogs/__init__.py new/lutris/lutris/gui/dialogs/__init__.py --- old/lutris/lutris/gui/dialogs/__init__.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/gui/dialogs/__init__.py 2020-11-27 23:18:53.000000000 +0100 @@ -7,13 +7,14 @@ import gi gi.require_version("WebKit2", "4.0") -from gi.repository import GObject, Gtk, WebKit2 +from gi.repository import GObject, Gtk, WebKit2, GLib from lutris import api, settings from lutris.database import sources as sources_db from lutris.gui.widgets.log_text_view import LogTextView from lutris.util import datapath from lutris.util.log import logger +from lutris.util.jobs import AsyncCall class Dialog(Gtk.Dialog): @@ -168,6 +169,35 @@ self.destroy() +class LutrisInitDialog(Gtk.Dialog): + def __init__(self, init_lutris): + super().__init__() + self.set_size_request(320, 60) + self.set_border_width(24) + vbox = Gtk.Box.new(Gtk.Orientation.VERTICAL, 12) + label = Gtk.Label("Lutris is starting...") + vbox.add(label) + self.progress = Gtk.ProgressBar(visible=True) + self.progress.set_pulse_step(0.1) + vbox.add(self.progress) + self.get_content_area().add(vbox) + GLib.timeout_add(125, self.show_progress) + self.show_all() + AsyncCall(self.initialize, self.init_cb, init_lutris) + + def show_progress(self): + self.progress.pulse() + return True + + def initialize(self, init_lutris, *args): + init_lutris() + + def init_cb(self, _result, error): + if error: + ErrorDialog(str(error)) + self.destroy() + + class InstallOrPlayDialog(Gtk.Dialog): def __init__(self, game_name): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/gui/dialogs/uninstall_game.py new/lutris/lutris/gui/dialogs/uninstall_game.py --- old/lutris/lutris/gui/dialogs/uninstall_game.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/gui/dialogs/uninstall_game.py 2020-11-27 23:18:53.000000000 +0100 @@ -30,7 +30,6 @@ self.folder_label = Gtk.Label(visible=True) self.folder_label.set_alignment(0, 0.5) - self.folder_label.set_margin_bottom(30) self.delete_button = Gtk.Button(_("Uninstall"), visible=True) self.delete_button.connect("clicked", self.on_delete_clicked) @@ -49,7 +48,12 @@ ) container.pack_start(self.folder_label, False, False, 4) + self.confirm_delete_button = Gtk.CheckButton() + self.confirm_delete_button.set_active(True) + container.pack_start(self.confirm_delete_button, False, False, 4) + button_box = Gtk.HBox(visible=True) + button_box.set_margin_top(30) style_context = button_box.get_style_context() style_context.add_class("linked") cancel_button = Gtk.Button(_("Cancel"), visible=True) @@ -65,8 +69,10 @@ return self.delete_files = True self.delete_button.set_sensitive(True) - self.folder_label.set_markup( - "This will delete all contents from <b>%s</b> (%s)" % ( + self.folder_label.hide() + self.confirm_delete_button.show() + self.confirm_delete_button.set_label( + "Delete %s (%s)" % ( reverse_expanduser(self.game.directory), human_size(folder_size) ) @@ -77,6 +83,8 @@ def on_delete_clicked(self, button): button.set_sensitive(False) + if not self.confirm_delete_button.get_active(): + self.delete_files = False if self.delete_files and not hasattr(self.game.runner, "no_game_remove_warning"): dlg = QuestionDialog( { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/gui/lutriswindow.py new/lutris/lutris/gui/lutriswindow.py --- old/lutris/lutris/gui/lutriswindow.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/gui/lutriswindow.py 2020-11-27 23:18:53.000000000 +0100 @@ -25,7 +25,6 @@ from lutris.gui.widgets.gi_composites import GtkTemplate from lutris.gui.widgets.sidebar import LutrisSidebar from lutris.gui.widgets.utils import load_icon_theme, open_uri -from lutris.runtime import RuntimeUpdater from lutris.services.base import BaseService from lutris.services.lutris import LutrisBanner, LutrisIcon, LutrisService from lutris.util import datapath @@ -66,6 +65,7 @@ default_width=width, default_height=height, window_position=Gtk.WindowPosition.NONE, + name="lutris", icon_name="lutris", application=application, **kwargs @@ -73,7 +73,7 @@ update_desktop_icons() load_icon_theme() self.application = application - self.runtime_updater = RuntimeUpdater() + self.threads_stoppers = [] self.window_size = (width, height) self.maximized = settings.read_setting("maximized") == "True" @@ -106,7 +106,7 @@ self.sidebar.connect("selected-rows-changed", self.on_sidebar_changed) self.sidebar_scrolled.add(self.sidebar) - self.sidebar_revealer.set_reveal_child(self.left_side_panel_visible) + self.sidebar_revealer.set_reveal_child(self.side_panel_visible) self.sidebar_revealer.set_transition_duration(300) self.tabs_box.hide() @@ -146,10 +146,10 @@ default=self.view_sorting_ascending, ), "use-dark-theme": Action(self.on_dark_theme_state_change, type="b", default=self.use_dark_theme), - "show-left-side-panel": Action( - self.on_left_side_panel_state_change, + "show-side-panel": Action( + self.on_side_panel_state_change, type="b", - default=self.left_side_panel_visible, + default=self.side_panel_visible, accel="F9", ), "show-hidden-games": Action( @@ -194,7 +194,6 @@ self._bind_zoom_adjustment() self.view.grab_focus() self.view.contextual_menu = ContextualMenu(self.game_actions.get_game_actions()) - self.update_runtime() def load_filters(self): """Load the initial filters when creating the view""" @@ -223,9 +222,8 @@ return settings.read_setting("filter_installed").lower() == "true" @property - def left_side_panel_visible(self): - show_left_panel = (settings.read_setting("left_side_panel_visible").lower() != "false") - return show_left_panel + def side_panel_visible(self): + return settings.read_setting("side_panel_visible").lower() != "false" @property def use_dark_theme(self): @@ -347,13 +345,13 @@ service_name = self.filters.get("service") self.tabs_box.hide() if service_name in services.get_services(): - if self.service.online and not self.service.is_authenticated(): - self.show_label(_("Connect your %s account to access your games") % self.service.name) - return [] if service_name == "lutris": self.tabs_box.show() # Only the lutris service has the ability to search through all games. if self.website_button.props.active: return self.get_api_games() + if self.service.online and not self.service.is_authenticated(): + self.show_label(_("Connect your %s account to access your games") % self.service.name) + return [] return self.get_service_games(service_name) dynamic_categories = { "recent": self.get_recent_games, @@ -439,7 +437,7 @@ self.view.service = self.service.id if self.service else None GLib.idle_add(self.update_revealer) for game in games: - GLib.idle_add(self.game_store.add_game, game) + self.game_store.add_game(game) if not games: self.show_empty_label() self.search_timer_id = None @@ -579,11 +577,6 @@ def set_viewtype_icon(self, view_type): self.viewtype_icon.set_from_icon_name("view-%s-symbolic" % view_type, Gtk.IconSize.BUTTON) - def update_runtime(self): - """Check that the runtime is up to date""" - runtime_sync = AsyncCall(self.runtime_updater.update, None) - self.threads_stoppers.append(runtime_sync.stop_request.set) - def set_show_installed_state(self, filter_installed): """Shows or hide uninstalled games""" settings.write_setting("filter_installed", bool(filter_installed)) @@ -722,12 +715,12 @@ settings.write_setting("view_sorting_ascending", bool(value)) self.emit("view-updated") - def on_left_side_panel_state_change(self, action, value): - """Callback to handle left side panel toggle""" + def on_side_panel_state_change(self, action, value): + """Callback to handle side panel toggle""" action.set_state(value) - left_side_panel_visible = value.get_boolean() - settings.write_setting("left_side_panel_visible", bool(left_side_panel_visible)) - self.sidebar_revealer.set_reveal_child(left_side_panel_visible) + side_panel_visible = value.get_boolean() + settings.write_setting("side_panel_visible", bool(side_panel_visible)) + self.sidebar_revealer.set_reveal_child(side_panel_visible) def on_sidebar_changed(self, widget): row = widget.get_selected_row() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/gui/views/__init__.py new/lutris/lutris/gui/views/__init__.py --- old/lutris/lutris/gui/views/__init__.py 2020-05-30 04:31:36.000000000 +0200 +++ new/lutris/lutris/gui/views/__init__.py 2020-11-27 23:18:53.000000000 +0100 @@ -23,6 +23,6 @@ COL_RUNNER_HUMAN_NAME: "runner", COL_PLATFORM: "platform", COL_LASTPLAYED_TEXT: "lastplayed", - COL_INSTALLED_AT_TEXT: "installed_at", + COL_INSTALLED_AT_TEXT: "installedat", COL_PLAYTIME_TEXT: "playtime", } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/gui/views/base.py new/lutris/lutris/gui/views/base.py --- old/lutris/lutris/gui/views/base.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/gui/views/base.py 2020-11-27 23:18:53.000000000 +0100 @@ -31,7 +31,7 @@ view.current_path = view.get_path_at_pos(event.x, event.y) if view.current_path: view.select() - _iter = self.get_model().get_iter(view.current_path) + _iter = self.get_model().get_iter(view.current_path[0]) if not _iter: return selected_id = self.get_selected_id(_iter) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/gui/views/store.py new/lutris/lutris/gui/views/store.py --- old/lutris/lutris/gui/views/store.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/gui/views/store.py 2020-11-10 09:20:36.000000000 +0100 @@ -21,8 +21,6 @@ COL_NAME, COL_PLATFORM, COL_PLAYTIME, COL_PLAYTIME_TEXT, COL_RUNNER, COL_RUNNER_HUMAN_NAME, COL_SLUG, COL_YEAR ) -PGA_DB = settings.PGA_DB - def try_lower(value): try: @@ -178,14 +176,22 @@ def on_game_updated(self, game): if self.service: - db_games = sql.filtered_query(PGA_DB, "service_games", filters=({ - "service": self.service_media.service, - "appid": game.appid - })) + db_games = sql.filtered_query( + settings.PGA_DB, + "service_games", + filters=({ + "service": self.service_media.service, + "appid": game.appid + }) + ) else: - db_games = sql.filtered_query(PGA_DB, "games", filters=({ - "id": game.id - })) + db_games = sql.filtered_query( + settings.PGA_DB, + "games", + filters=({ + "id": game.id + }) + ) for db_game in db_games: GLib.idle_add(self.update, db_game) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/gui/widgets/sidebar.py new/lutris/lutris/gui/widgets/sidebar.py --- old/lutris/lutris/gui/widgets/sidebar.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/gui/widgets/sidebar.py 2020-11-27 16:39:50.000000000 +0100 @@ -8,11 +8,11 @@ from lutris.database import games as games_db from lutris.game import Game from lutris.gui.config.runner import RunnerConfigDialog +from lutris.gui.dialogs import ErrorDialog from lutris.gui.dialogs.runner_install import RunnerInstallDialog from lutris.gui.dialogs.runners import RunnersDialog from lutris.services.base import BaseService from lutris.util.jobs import AsyncCall -from lutris.util.log import logger TYPE = 0 SLUG = 1 @@ -135,9 +135,11 @@ self.service.wipe_game_cache() AsyncCall(self.service.load, self.service_load_cb) - def service_load_cb(self, _result, error): + def service_load_cb(self, games, error): + if not error and not games: + error = _("Failed to load games. Check that your profile is set to public during the sync.") if error: - logger.error("Service reload failed") + ErrorDialog(error) GLib.timeout_add(5000, self.enable_refresh_button) def enable_refresh_button(self): @@ -222,6 +224,7 @@ manage_runners_button.props.relief = Gtk.ReliefStyle.NONE manage_runners_button.set_margin_right(16) manage_runners_button.get_style_context().add_class("sidebar-button") + manage_runners_button.set_tooltip_text(_('Manage Runners')) box.add(manage_runners_button) self.add(Gtk.Separator()) self.show_all() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/installer/__init__.py new/lutris/lutris/installer/__init__.py --- old/lutris/lutris/installer/__init__.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/installer/__init__.py 2020-11-27 23:18:53.000000000 +0100 @@ -35,12 +35,12 @@ def read_script(filename): """Return scripts from a local file""" logger.debug("Loading script(s) from %s", filename) - scripts = yaml.safe_load(open(filename, "r").read()) - if isinstance(scripts, list): - return scripts - if "results" in scripts: - return scripts["results"] - return scripts + script = yaml.safe_load(open(filename, "r").read()) + if isinstance(script, list): + return script + if "results" in script: + return script["results"] + return [script] def get_installers(game_slug, installer_file=None, revision=None): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/installer/commands.py new/lutris/lutris/installer/commands.py --- old/lutris/lutris/installer/commands.py 2020-10-06 09:17:27.000000000 +0200 +++ new/lutris/lutris/installer/commands.py 2020-11-10 04:47:52.000000000 +0100 @@ -469,7 +469,7 @@ def write_config(self, params): """Write a key-value pair into an INI type config file.""" - if params.get("data", None): + if params.get("data"): self._check_required_params(["file", "data"], params, "write_config") else: self._check_required_params(["file", "section", "key", "value"], params, "write_config") @@ -489,7 +489,7 @@ parser.read(config_file_path) data = {} - if params.get("data", None): + if params.get("data"): data = params["data"] else: data[params["section"]] = {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/installer/installer.py new/lutris/lutris/installer/installer.py --- old/lutris/lutris/installer/installer.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/installer/installer.py 2020-11-10 05:05:40.000000000 +0100 @@ -139,6 +139,9 @@ if not self.files: return if self.service: + if self.service.online and not self.service.is_connected(): + logger.info("Not authenticated to %s", self.service.id) + return installer_file_id = self.pop_user_provided_file() if not installer_file_id: logger.warning("Could not find a file for this service") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/installer/interpreter.py new/lutris/lutris/installer/interpreter.py --- old/lutris/lutris/installer/interpreter.py 2020-10-16 23:47:59.000000000 +0200 +++ new/lutris/lutris/installer/interpreter.py 2020-11-10 04:47:52.000000000 +0100 @@ -377,7 +377,7 @@ def _substitute(self, template_string): """Replace path aliases with real paths.""" - if not template_string: + if template_string is None: logger.warning("No template string given") return "" replacements = { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/migrations/migrate_steam_appids.py new/lutris/lutris/migrations/migrate_steam_appids.py --- old/lutris/lutris/migrations/migrate_steam_appids.py 2020-10-03 13:55:57.000000000 +0200 +++ new/lutris/lutris/migrations/migrate_steam_appids.py 2020-11-27 23:18:53.000000000 +0100 @@ -5,7 +5,7 @@ def migrate(): """Run migration""" for game in get_games(): - if not game["steamid"]: + if not game.get("steamid"): continue if game["runner"] and game["runner"] != "steam": continue diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/runners/wine.py new/lutris/lutris/runners/wine.py --- old/lutris/lutris/runners/wine.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/runners/wine.py 2020-11-27 23:18:53.000000000 +0100 @@ -26,8 +26,8 @@ from lutris.util.wine.wine import ( POL_PATH, WINE_DIR, WINE_PATHS, detect_arch, display_vulkan_error, esync_display_limit_warning, esync_display_version_warning, fsync_display_support_warning, fsync_display_version_warning, get_default_version, - get_overrides_env, get_proton_paths, get_real_executable, get_system_wine_version, get_wine_versions, - is_esync_limit_set, is_fsync_supported, is_version_esync, is_version_fsync + get_overrides_env, get_real_executable, get_system_wine_version, get_wine_versions, is_esync_limit_set, + is_fsync_supported, is_version_esync, is_version_fsync ) from lutris.util.wine.x360ce import X360ce @@ -626,10 +626,6 @@ # logger.debug("Getting path for Wine %s", version) if version in WINE_PATHS.keys(): return system.find_executable(WINE_PATHS[version]) - if "Proton" in version: - for proton_path in get_proton_paths(): - if os.path.isfile(os.path.join(proton_path, version, "dist/bin/wine")): - return os.path.join(proton_path, version, "dist/bin/wine") if version.startswith("PlayOnLinux"): version, arch = version.split()[1].rsplit("-", 1) return os.path.join(POL_PATH, "wine", "linux-" + arch, version, "bin/wine") @@ -913,15 +909,8 @@ wine_root = None if WINE_DIR: wine_root = os.path.dirname(os.path.dirname(wine_path)) - for proton_path in get_proton_paths(): - if proton_path in wine_path: - wine_root = os.path.dirname(os.path.dirname(wine_path)) - if "-4." in wine_path or "/4." in wine_path: - version = "Ubuntu-18.04" - else: - version = "legacy" return runtime.get_env( - version=version, + version="Ubuntu-18.04", prefer_system_libs=self.system_config.get("prefer_system_libs", True), wine_path=wine_root, ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/runtime.py new/lutris/lutris/runtime.py --- old/lutris/lutris/runtime.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/runtime.py 2020-11-27 23:18:53.000000000 +0100 @@ -177,7 +177,6 @@ class RuntimeUpdater: - """Class handling the runtime updates""" current_updates = 0 @@ -191,18 +190,14 @@ """Launch the update process""" if RUNTIME_DISABLED: logger.debug("Runtime disabled, not updating it.") - return [] - - if self.is_updating(): - logger.debug("Runtime already updating") - return [] + return 0 for remote_runtime in self._iter_remote_runtimes(): runtime = Runtime(remote_runtime["name"], self) downloader = runtime.download(remote_runtime) if downloader: self.current_updates += 1 - return None + return self.current_updates @staticmethod def _iter_remote_runtimes(): @@ -243,7 +238,7 @@ logger.debug("Runtime %s is now updated and available", runtime.name) self.current_updates -= 1 if self.current_updates == 0: - logger.info("Runtime updated") + logger.info("Runtime is fully updated.") def get_env(version=None, prefer_system_libs=False, wine_path=None): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/services/gog.py new/lutris/lutris/services/gog.py --- old/lutris/lutris/services/gog.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/services/gog.py 2020-11-10 10:00:49.000000000 +0100 @@ -140,6 +140,7 @@ self.match_games() self.is_loading = False self.emit("service-games-loaded") + return games def request_token(self, url="", refresh_token=""): """Get authentication token from GOG""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/services/humblebundle.py new/lutris/lutris/services/humblebundle.py --- old/lutris/lutris/services/humblebundle.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/services/humblebundle.py 2020-11-10 10:00:35.000000000 +0100 @@ -110,6 +110,7 @@ game.save() self.is_loading = False self.emit("service-games-loaded") + return humble_games def make_api_request(self, url): """Make an authenticated request to the Humble API""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/services/lutris.py new/lutris/lutris/services/lutris.py --- old/lutris/lutris/services/lutris.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/services/lutris.py 2020-11-10 10:01:26.000000000 +0100 @@ -126,7 +126,8 @@ return self.emit("service-games-load") self.is_loading = True - for game in self.get_library(): + lutris_games = self.get_library() + for game in lutris_games: lutris_game = LutrisGame.new_from_api(game) lutris_game.save() logger.debug("Matching with already installed games") @@ -134,6 +135,7 @@ self.is_loading = False logger.debug("Lutris games loaded") self.emit("service-games-loaded") + return lutris_games def install(self, db_game): if isinstance(db_game, dict): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/services/steam.py new/lutris/lutris/services/steam.py --- old/lutris/lutris/services/steam.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/services/steam.py 2020-11-27 23:18:53.000000000 +0100 @@ -105,15 +105,16 @@ logger.error("Unable to find SteamID from Steam config") self.emit("service-games-loaded") return - - for steam_game in get_steam_library(steamid): + steam_games = get_steam_library(steamid) + for steam_game in steam_games: game = SteamGame.new_from_steam_game(steam_game) game.save() self.match_games() self.is_loading = False - logger.debug("Steam games loaded") + logger.debug("%d Steam games loaded", len(steam_games)) self.emit("service-games-loaded") + return steam_games def get_installer_files(self, installer, installer_file_id): steam_uri = "$WINESTEAM:%s:." if installer.runner == "winesteam" else "$STEAM:%s:." @@ -141,7 +142,7 @@ def install(self, db_game): appid = db_game["appid"] - db_games = get_games(filters={"steamid": appid, "installed": "1"}) + db_games = get_games(filters={"service_id": appid, "installed": "1", "service": "steam"}) existing_game = self.match_existing_game(db_games, appid) if existing_game: logger.debug("Found steam game: %s", existing_game) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/startup.py new/lutris/lutris/startup.py --- old/lutris/lutris/startup.py 2020-10-08 08:16:49.000000000 +0200 +++ new/lutris/lutris/startup.py 2020-11-27 23:23:48.000000000 +0100 @@ -1,6 +1,7 @@ """Check to run at program start""" import os import sqlite3 +import time from gettext import gettext as _ from lutris import runners, settings @@ -9,10 +10,12 @@ from lutris.game import Game from lutris.gui.dialogs import DontShowAgainDialog from lutris.runners.json import load_json_runners +from lutris.runtime import RuntimeUpdater from lutris.util.graphics import drivers, vkquery from lutris.util.linux import LINUX_SYSTEM from lutris.util.log import logger from lutris.util.system import create_folder +from lutris.util.wine.dxvk import init_dxvk_versions def init_dirs(): @@ -37,21 +40,6 @@ create_folder(directory) -def init_lutris(): - """Run full initialization of Lutris""" - runners.inject_runners(load_json_runners()) - # Load runner names - runners.RUNNER_NAMES = runners.get_runner_names() - init_dirs() - try: - syncdb() - except sqlite3.DatabaseError: - raise RuntimeError( - "Failed to open database file in %s. Try renaming this file and relaunch Lutris" % - settings.PGA_DB - ) - - def check_driver(): """Report on the currently running driver""" driver_info = {} @@ -153,3 +141,28 @@ check_libs() check_vulkan() fill_missing_platforms() + + +def init_lutris(): + """Run full initialization of Lutris""" + logger.info("Initializing lutris") + runners.inject_runners(load_json_runners()) + # Load runner names + runners.RUNNER_NAMES = runners.get_runner_names() + init_dirs() + try: + syncdb() + except sqlite3.DatabaseError: + raise RuntimeError( + "Failed to open database file in %s. Try renaming this file and relaunch Lutris" % + settings.PGA_DB + ) + runtime_updater = RuntimeUpdater() + components_to_update = runtime_updater.update() + if not components_to_update: + logger.info("Runtime up-to-date. Initialization complete.") + return + while runtime_updater.current_updates: + time.sleep(0.3) + init_dxvk_versions() + logger.info("Runtime updated. Initialization complete.") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/util/display.py new/lutris/lutris/util/display.py --- old/lutris/lutris/util/display.py 2020-10-03 13:55:57.000000000 +0200 +++ new/lutris/lutris/util/display.py 2020-11-27 23:18:53.000000000 +0100 @@ -297,21 +297,25 @@ """Return the appropriate screen saver inhibitor instance. Returns None if the required interface isn't available.""" desktop_environment = get_desktop_environment() + # Candidates are triples (name, path, interface) + candidates = [("org.freedesktop.ScreenSaver", + "/org/freedesktop/ScreenSaver", + "org.freedesktop.ScreenSaver")] if desktop_environment is DesktopEnvironment.MATE: - name = "org.mate.ScreenSaver" - path = "/" + candidates.append(("org.mate.ScreenSaver", + "/", + "org.mate.ScreenSaver")) elif desktop_environment is DesktopEnvironment.XFCE: - name = "org.xfce.ScreenSaver" - path = "/" - else: - name = "org.freedesktop.ScreenSaver" - path = "/org/freedesktop/ScreenSaver" - interface = name - try: - return DBusScreenSaverInhibitor(name, path, interface) - except GLib.Error as err: - logger.error("Error during creation of DBusScreenSaverInhibitor: %s", err.message) # pylint: disable=no-member - return None + candidates.append(("org.xfce.ScreenSaver", + "/", + "org.xfce.ScreenSaver")) + for (name, path, interface) in candidates: + try: + return DBusScreenSaverInhibitor(name, path, interface) + except GLib.Error as err: + logger.warning("Failed to create DBusScreenSaverInhibitor for name %s, path %s, " + "interface %s: %s", name, path, interface, str(err)) + return None SCREEN_SAVER_INHIBITOR = _get_screen_saver_inhibitor() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/util/graphics/displayconfig.py new/lutris/lutris/util/graphics/displayconfig.py --- old/lutris/lutris/util/graphics/displayconfig.py 2020-10-14 07:23:25.000000000 +0200 +++ new/lutris/lutris/util/graphics/displayconfig.py 2020-11-27 16:39:50.000000000 +0100 @@ -113,12 +113,12 @@ @property def width(self): """width in physical pixels""" - return self.mode_info[2] + return int(self.mode_info[2]) @property def height(self): """height in physical pixels""" - return self.mode_info[3] + return int(self.mode_info[3]) @property def frequency(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris/util/wine/wine.py new/lutris/lutris/util/wine/wine.py --- old/lutris/lutris/util/wine/wine.py 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris/util/wine/wine.py 2020-11-27 23:18:53.000000000 +0100 @@ -201,7 +201,6 @@ versions = [] versions += get_system_wine_versions() versions += get_lutris_wine_versions() - versions += get_proton_versions() versions += get_pol_wine_versions() return versions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/lutris.spec new/lutris/lutris.spec --- old/lutris/lutris.spec 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/lutris.spec 2020-11-27 23:23:48.000000000 +0100 @@ -6,7 +6,7 @@ %global appid net.lutris.Lutris Name: lutris -Version: 0.5.8 +Version: 0.5.8.1 Release: 7%{?dist} Summary: Install and play any video game easily diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/share/applications/net.lutris.Lutris.desktop new/lutris/share/applications/net.lutris.Lutris.desktop --- old/lutris/share/applications/net.lutris.Lutris.desktop 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/share/applications/net.lutris.Lutris.desktop 2020-11-10 04:47:52.000000000 +0100 @@ -1,7 +1,6 @@ [Desktop Entry] -Version=1.0 Name=Lutris -Comment=Open gaming platform +Comment=open source gaming platform Categories=Game; Keywords=gaming;wine;emulator; Exec=lutris %U diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/share/lutris/ui/lutris-window.ui new/lutris/share/lutris/ui/lutris-window.ui --- old/lutris/share/lutris/ui/lutris-window.ui 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/share/lutris/ui/lutris-window.ui 2020-11-08 01:58:29.000000000 +0100 @@ -72,8 +72,8 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="receives_default">False</property> - <property name="action_name">win.show-left-side-panel</property> - <property name="text" translatable="yes">Show _Left Side Panel</property> + <property name="action_name">win.show-side-panel</property> + <property name="text" translatable="yes">Show Side _Panel</property> <accelerator key="0xffffff" signal="clicked"/> </object> <packing> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/share/lutris/ui/lutris.css new/lutris/share/lutris/ui/lutris.css --- old/lutris/share/lutris/ui/lutris.css 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/share/lutris/ui/lutris.css 2020-11-27 23:18:53.000000000 +0100 @@ -32,9 +32,6 @@ font-weight: normal; } -row:selected { - border-radius: 30px; -} -row:hover { +.sidebar row:hover { background: rgba(0, 0, 0, 0.1); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/share/man/man1/lutris.1 new/lutris/share/man/man1/lutris.1 --- old/lutris/share/man/man1/lutris.1 2020-07-26 00:42:57.000000000 +0200 +++ new/lutris/share/man/man1/lutris.1 2020-11-06 18:21:50.000000000 +0100 @@ -36,6 +36,9 @@ \fB\-i\fR, \fB\-\-install\fR Install a game from a yml file .TP +\fB\-b\fR, \fB\-\-output\-script\fR +Generate a bash script to run a game without the client +.TP \fB\-e\fR, \fB\-\-exec\fR Execute a program with the lutris runtime .TP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lutris/share/metainfo/net.lutris.Lutris.metainfo.xml new/lutris/share/metainfo/net.lutris.Lutris.metainfo.xml --- old/lutris/share/metainfo/net.lutris.Lutris.metainfo.xml 2020-10-18 01:36:28.000000000 +0200 +++ new/lutris/share/metainfo/net.lutris.Lutris.metainfo.xml 2020-11-27 23:23:48.000000000 +0100 @@ -2,8 +2,8 @@ <!-- Copyright 2020 Lutris --> <component type="desktop"> <id>net.lutris.Lutris</id> - <project_license>GPL-3.0</project_license> - <metadata_license>GPL-3.0</metadata_license> + <project_license>GPL-3.0-or-later</project_license> + <metadata_license>CC0-1.0</metadata_license> <translation type="gettext">lutris</translation> <developer_name translatable="no">Lutris Team</developer_name> <update_contact>stri...@lutris.net</update_contact> @@ -15,7 +15,7 @@ <image>https://lutris.net/static/images/lutris-window.png</image> </screenshot> </screenshots> - <description><p></p>Lutris is an Open Source gaming platform. It installs and launches games so you can start playing without the hassle of setting up your games. Get your games from GOG, Steam, Battle.net, Origin, Uplay and many other sources running on any Linux powered gaming machine.</description> + <description><p>Lutris is an Open Source gaming platform. It installs and launches games so you can start playing without the hassle of setting up your games. Get your games from GOG, Steam, Battle.net, Origin, Uplay and many other sources running on any Linux powered gaming machine.</p></description> <url type="homepage">https://lutris.net</url> <url type="donation">https://lutris.net/donate</url> <url type="help">https://forums.lutris.net</url> @@ -24,7 +24,7 @@ <url type="bugtracker">https://github.com/lutris/lutris/issues</url> <launchable type="desktop-id">net.lutris.Lutris.desktop</launchable> <releases> - <release date="2020-10-19" version="0.5.8" /> + <release date="2020-11-27" version="0.5.8.1" /> </releases> <content_rating type="oars-1.1" /> </component> _______________________________________________ openSUSE Commits mailing list -- commit@lists.opensuse.org To unsubscribe, email commit-le...@lists.opensuse.org List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette List Archives: https://lists.opensuse.org/archives/list/commit@lists.opensuse.org