Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package faugus-launcher for openSUSE:Factory
checked in at 2026-02-11 18:47:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/faugus-launcher (Old)
and /work/SRC/openSUSE:Factory/.faugus-launcher.new.1670 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "faugus-launcher"
Wed Feb 11 18:47:57 2026 rev:3 rq:1332348 version:1.14.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/faugus-launcher/faugus-launcher.changes
2026-02-07 15:33:59.446779711 +0100
+++
/work/SRC/openSUSE:Factory/.faugus-launcher.new.1670/faugus-launcher.changes
2026-02-11 18:48:48.189265586 +0100
@@ -1,0 +2,28 @@
+Tue Feb 10 19:02:03 UTC 2026 - Jehu Marcos Herrera Puentes
<[email protected]>
+
+- Bump to version 1.14.2
+- Upstream changes for 1.14.2:
+ * Fixed Proton being redownloaded
+ * perf: optimize search by toggling flowbox child visibility
+ * Fix permission for Python executables
+ * perf: attach game references to flowbox children
+- For .spec file:
+ * Added shebang fix for proton_downloader.py
+ * Added %if conditional to fix non-executable scripts for older
faugus-launcher versions
+ * Moved some of the fixes to the %prep step
+ * Added proper lang subpackage for translations
+ * Fix python bytecode mtime warnings for SLE 15 SP6 / Leap 15.6
+ * Better use of macros
+ * Minor fixes
+
+-------------------------------------------------------------------
+Mon Feb 9 07:14:29 UTC 2026 - Jehu Marcos Herrera Puentes
<[email protected]>
+
+- .spec enhancements for %check
+
+-------------------------------------------------------------------
+Sun Feb 8 00:22:58 UTC 2026 - Jehu Marcos Herrera Puentes
<[email protected]>
+
+- Minor .spec fixes
+
+-------------------------------------------------------------------
Old:
----
faugus-launcher-1.14.1.tar.xz
New:
----
faugus-launcher-1.14.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ faugus-launcher.spec ++++++
--- /var/tmp/diff_new_pack.xn6uzL/_old 2026-02-11 18:48:48.813291792 +0100
+++ /var/tmp/diff_new_pack.xn6uzL/_new 2026-02-11 18:48:48.813291792 +0100
@@ -26,13 +26,13 @@
%endif
Name: faugus-launcher
-Version: 1.14.1
+Version: 1.14.2
Release: 0
Summary: A simple and lightweight app for running Windows games using
UMU-Launcher
-
License: MIT
URL: https://github.com/Faugus/faugus-launcher
Group: System/Emulators/PC
+
# Get the source from tar_scm
Source0: %{name}-%{version}.tar.xz
# Exclusions
@@ -43,6 +43,8 @@
# Faugus BuildDeps
BuildRequires: meson
BuildRequires: gtk4-tools
+BuildRequires: desktop-file-utils
+BuildRequires: appstream-glib
# To remove duplicated files
BuildRequires: fdupes
@@ -52,14 +54,14 @@
Requires: ImageMagick
Requires: canberra-gtk-play
-Requires: python%{python3_version_nodots}
-Requires: python%{python3_version_nodots}-Pillow
-Requires: python%{python3_version_nodots}-filelock
-Requires: python%{python3_version_nodots}-gobject
-Requires: python%{python3_version_nodots}-icoextract
-Requires: python%{python3_version_nodots}-psutil
-Requires: python%{python3_version_nodots}-requests
-Requires: python%{python3_version_nodots}-vdf
+Requires: %{python_module base}
+Requires: %{python_module Pillow}
+Requires: %{python_module filelock}
+Requires: %{python_module gobject}
+Requires: %{python_module icoextract}
+Requires: %{python_module psutil}
+Requires: %{python_module requests}
+Requires: %{python_module vdf}
Requires: typelib-1_0-AyatanaAppIndicator3-0_1
# Only install gaming selinux policy on SLE +16 / Leap +16 / Tumbleweed /
Slowroll
@@ -76,15 +78,30 @@
Recommends: ntsync-autoload
Recommends: ntsync-autoload-udev-rules
-Provides: faugus-launcher = %{version}
Obsoletes: faugus-launcher < %{version}
%description
A simple and lightweight app for running Windows games using
UMU-Launcher/UMU-Proton.
+# Lang subpackage
+%lang_package
+
%prep
%autosetup -n %{name}-%{version}
+# Fix for shebangs
+sed -i '1s|/usr/bin/env python3|%{__python3}|' faugus_launcher.py
+sed -i '1s|/usr/bin/env python3|%{__python3}|' faugus_run.py
+sed -i '1s|/usr/bin/env python3|%{__python3}|' faugus_proton_manager.py
+sed -i '1s|/usr/bin/env python3|%{__python3}|' faugus/proton_downloader.py
+
+# Fix for non-executable scripts on older versions than 1.14.2
+%if "%{version}" <= "1.14.1"
+sed -i '1{/^#!.*python/d}' faugus/components.py
+sed -i '1{/^#!.*python/d}' faugus/path_manager.py
+sed -i '1{/^#!.*python/d}' faugus/proton_downloader.py
+%endif
+
%build
# Compile faugus-launcher
%meson
@@ -94,15 +111,12 @@
# Install faugus-launcher
%meson_install
-# Fix for shebangs
-sed -i '1s|/usr/bin/env python3|/usr/bin/python3|'
%{buildroot}%{_bindir}/faugus-launcher
-sed -i '1s|/usr/bin/env python3|/usr/bin/python3|'
%{buildroot}%{_bindir}/faugus-run
-sed -i '1s|/usr/bin/env python3|/usr/bin/python3|'
%{buildroot}%{_bindir}/faugus-proton-manager
-
-# Fix for non-executable scripts
-sed -i '1{/^#!.*python/d}' %{buildroot}%{python3_sitelib}/faugus/components.py
-sed -i '1{/^#!.*python/d}'
%{buildroot}%{python3_sitelib}/faugus/path_manager.py
-sed -i '1{/^#!.*python/d}'
%{buildroot}%{python3_sitelib}/faugus/proton_downloader.py
+# Fix bytecode mtime for SLE 15 SP6 / Leap 15.6
+%if 0%{?sle_version} == 150600
+find %{buildroot}%{python3_sitelib} -name "*.pyc" -delete
+find %{buildroot}%{python3_sitelib} -name "*.py" -exec touch -d "1970-01-01
00:00:03" {} +
+%{__python3} -m compileall -d %{python3_sitelib}
%{buildroot}%{python3_sitelib}/faugus/
+%endif
# Remove duplicated files
%fdupes %{buildroot}%{_datadir}
@@ -114,8 +128,11 @@
cat faugus-proton-manager.lang faugus-run.lang >> %{name}.lang
%check
+# Checks for desktop files and appstream metadata
+desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
+appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/*.xml
-%files -f %{name}.lang
+%files
%license LICENSE
# Application data
%dir %{_datadir}/faugus-launcher
@@ -133,3 +150,6 @@
# Python modules
%{python3_sitelib}/faugus/
+# Language files for the subpackage
+%files lang -f %{name}.lang
+
++++++ _service ++++++
--- /var/tmp/diff_new_pack.xn6uzL/_old 2026-02-11 18:48:48.865293975 +0100
+++ /var/tmp/diff_new_pack.xn6uzL/_new 2026-02-11 18:48:48.877294479 +0100
@@ -3,7 +3,7 @@
<service name="tar_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://github.com/Faugus/faugus-launcher.git</param>
- <param name="revision">1.14.1</param>
+ <param name="revision">1.14.2</param>
<param name="changesgenerate">enable</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v?([0-9]+(\.[0-9])*)(\+0)?</param>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.xn6uzL/_old 2026-02-11 18:48:48.905295655 +0100
+++ /var/tmp/diff_new_pack.xn6uzL/_new 2026-02-11 18:48:48.909295824 +0100
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param
name="url">https://github.com/Faugus/faugus-launcher.git</param>
- <param
name="changesrevision">f85773916c55fbb43b44464d20d57e7602b786d2</param></service></servicedata>
+ <param
name="changesrevision">307dff349ec34794816542823762343c048d0975</param></service></servicedata>
(No newline at EOF)
++++++ faugus-launcher-1.14.1.tar.xz -> faugus-launcher-1.14.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.14.1/README.md
new/faugus-launcher-1.14.2/README.md
--- old/faugus-launcher-1.14.1/README.md 2026-02-06 15:50:40.000000000
+0100
+++ new/faugus-launcher-1.14.2/README.md 2026-02-10 13:53:05.000000000
+0100
@@ -38,7 +38,7 @@
sudo apt update
sudo apt install -y wget
mkdir -p ~/faugus-launcher
-wget -P ~/faugus-launcher
https://github.com/Faugus/faugus-launcher/releases/download/1.14.1/faugus-launcher_1.14.1-1_all.deb
+wget -P ~/faugus-launcher
https://github.com/Faugus/faugus-launcher/releases/download/1.14.2/faugus-launcher_1.14.2-1_all.deb
sudo apt install -y ~/faugus-launcher/*.deb
sudo rm -r ~/faugus-launcher
```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/faugus-launcher-1.14.1/data/faugus-launcher.metainfo.xml
new/faugus-launcher-1.14.2/data/faugus-launcher.metainfo.xml
--- old/faugus-launcher-1.14.1/data/faugus-launcher.metainfo.xml
2026-02-06 15:50:40.000000000 +0100
+++ new/faugus-launcher-1.14.2/data/faugus-launcher.metainfo.xml
2026-02-10 13:53:05.000000000 +0100
@@ -81,15 +81,12 @@
</screenshot>
</screenshots>
<releases>
- <release version="1.14.1-1" date="2026-02-06">
+ <release version="1.14.2-1" date="2026-02-10">
<description>
<ul>
- <li>Updated Dutch translation</li>
- <li>Updated Portuguese translation</li>
- <li>Added support to Asahi Linux</li>
- <li>Fix allow protonfixes for Steam games</li>
- <li>Added a message when SLR download fails due to internet
connection error</li>
- <li>Added global settings for new entries</li>
+ <li>Fixed GE-Proton being redownloaded every time</li>
+ <li>Fixed permissions for Python executables</li>
+ <li>Improved search performance</li>
</ul>
</description>
</release>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/faugus-launcher-1.14.1/data/io.github.Faugus.faugus-launcher.metainfo.xml
new/faugus-launcher-1.14.2/data/io.github.Faugus.faugus-launcher.metainfo.xml
---
old/faugus-launcher-1.14.1/data/io.github.Faugus.faugus-launcher.metainfo.xml
2026-02-06 15:50:40.000000000 +0100
+++
new/faugus-launcher-1.14.2/data/io.github.Faugus.faugus-launcher.metainfo.xml
2026-02-10 13:53:05.000000000 +0100
@@ -87,15 +87,12 @@
</screenshot>
</screenshots>
<releases>
- <release version="1.14.1-1" date="2026-02-06">
+ <release version="1.14.2-1" date="2026-02-10">
<description>
<ul>
- <li>Updated Dutch translation</li>
- <li>Updated Portuguese translation</li>
- <li>Added support to Asahi Linux</li>
- <li>Fix allow protonfixes for Steam games</li>
- <li>Added a message when SLR download fails due to internet
connection error</li>
- <li>Added global settings for new entries</li>
+ <li>Fixed GE-Proton being redownloaded every time</li>
+ <li>Fixed permissions for Python executables</li>
+ <li>Improved search performance</li>
</ul>
</description>
</release>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.14.1/faugus/proton_downloader.py
new/faugus-launcher-1.14.2/faugus/proton_downloader.py
--- old/faugus-launcher-1.14.1/faugus/proton_downloader.py 2026-02-06
15:50:40.000000000 +0100
+++ new/faugus-launcher-1.14.2/faugus/proton_downloader.py 2026-02-10
13:53:05.000000000 +0100
@@ -49,19 +49,25 @@
if not version_file.exists():
return None
- text = version_file.read_text().strip()
-
- parts = text.split()
- if len(parts) < 2:
+ parts = version_file.read_text().strip().split(maxsplit=1)
+ if len(parts) != 2:
return None
- ver = parts[1].rstrip("+")
+ return parts[1]
+
- if ver.startswith("GE-Proton"):
- ver = ver.split("-g")[0]
- ver = ver.rsplit("-", 1)[0]
+def normalize_version(v):
+ if not v:
+ return None
- return ver
+ return (
+ v.lstrip("v")
+ .replace("GE-Proton", "")
+ .replace("Proton-EM-", "")
+ .replace("EM-", "")
+ .rstrip("+")
+ .strip("-")
+ )
def rewrite_compatibilitytool_vdf(proton_dir, display_name):
@@ -122,7 +128,7 @@
installed = get_installed_version(proton_dir)
- if installed == latest_tag:
+ if installed and normalize_version(installed) ==
normalize_version(latest_tag):
print(f"{cfg['label']} is up to date.", flush=True)
return
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.14.1/faugus_launcher.py
new/faugus-launcher-1.14.2/faugus_launcher.py
--- old/faugus-launcher-1.14.1/faugus_launcher.py 2026-02-06
15:50:40.000000000 +0100
+++ new/faugus-launcher-1.14.2/faugus_launcher.py 2026-02-10
13:53:05.000000000 +0100
@@ -26,7 +26,7 @@
from faugus.config_manager import *
from faugus.dark_theme import *
-VERSION = "1.14.1"
+VERSION = "1.14.2"
print(f"Faugus Launcher {VERSION}")
IS_FLATPAK = 'FLATPAK_ID' in os.environ or os.path.exists('/.flatpak-info')
@@ -703,14 +703,11 @@
selected_children = self.flowbox.get_selected_children()
selected_child = selected_children[0]
- hbox = selected_child.get_child()
- game_label = hbox.get_children()[1]
- title = game_label.get_text()
+ game = selected_child.game
+ title = game.title
self.menu_item_title.get_child().set_text(title)
- game = next((j for j in self.games if j.title == title), None)
-
with open(games_json, "r") as f:
data = json.load(f)
@@ -826,8 +823,7 @@
if not selected:
return
- title = selected[0].get_child().get_children()[1].get_text()
- game = next((g for g in self.games if g.title == title), None)
+ game = selected[0].game
if not game:
return
@@ -955,15 +951,12 @@
def on_duplicate_clicked(self, widget):
selected_children = self.flowbox.get_selected_children()
selected_child = selected_children[0]
- hbox = selected_child.get_child()
- game_label = hbox.get_children()[1]
- title = game_label.get_text()
+ game = selected_child.game
+ title = game.title
# Display duplicate dialog
duplicate_dialog = DuplicateDialog(self, title)
- game = next((g for g in self.games if g.title == title), None)
-
while True:
response = duplicate_dialog.run()
@@ -1506,27 +1499,24 @@
game_label.set_no_show_all(True)
self.flowbox_child.add(hbox)
+ self.flowbox_child.game = game
self.flowbox.add(self.flowbox_child)
def on_search_changed(self, entry):
search_text = entry.get_text().lower()
- self.filtered_games = [game for game in self.games if search_text in
game.title.lower()]
+ first_visible = None
for child in self.flowbox.get_children():
- self.flowbox.remove(child)
+ game = child.game
+ is_match = search_text in game.title.lower()
- if self.filtered_games:
- for game in self.filtered_games:
- self.add_item_list(game)
-
- first_child = self.flowbox.get_children()[0]
- self.flowbox.select_child(first_child)
- self.on_item_selected(self.flowbox, first_child)
-
- else:
- pass
-
- self.flowbox.show_all()
+ child.set_visible(is_match)
+ if is_match and first_visible is None:
+ first_visible = child
+
+ if first_visible:
+ self.flowbox.select_child(first_visible)
+ self.on_item_selected(self.flowbox, first_visible)
def on_item_selected(self, flowbox, child):
if child is not None:
@@ -1694,9 +1684,8 @@
return
selected_child = selected_children[0]
- hbox = selected_child.get_child()
- game_label = hbox.get_children()[1]
- title = game_label.get_text()
+ game = selected_child.game
+ title = game.title
processos = self.load_processes_from_file()
self.button_locked[title] = True
@@ -1712,8 +1701,6 @@
return
- # Find the selected game object
- game = next((j for j in self.games if j.title == title), None)
if game:
# Format the title for command execution
game_directory = os.path.dirname(game.path)
@@ -1847,11 +1834,10 @@
selected_children = self.flowbox.get_selected_children()
selected_child = selected_children[0]
- hbox = selected_child.get_child()
- game_label = hbox.get_children()[1]
- title = game_label.get_text()
+ game = selected_child.game
+ title = game.title
- if game := next((j for j in self.games if j.title == title), None):
+ if game:
processos = self.load_processes_from_file()
if game.title in processos:
self.game_running = True
@@ -1992,11 +1978,10 @@
self.reload_playtimes()
selected_children = self.flowbox.get_selected_children()
selected_child = selected_children[0]
- hbox = selected_child.get_child()
- game_label = hbox.get_children()[1]
- title = game_label.get_text()
+ game = selected_child.game
+ title = game.title
- if game := next((j for j in self.games if j.title == title), None):
+ if game:
# Display confirmation dialog
confirmation_dialog = ConfirmationDialog(self, title, game.prefix,
game.runner)
response = confirmation_dialog.run()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.14.1/meson.build
new/faugus-launcher-1.14.2/meson.build
--- old/faugus-launcher-1.14.1/meson.build 2026-02-06 15:50:40.000000000
+0100
+++ new/faugus-launcher-1.14.2/meson.build 2026-02-10 13:53:05.000000000
+0100
@@ -1,6 +1,6 @@
project(
'faugus-launcher',
- version: '1.14.1',
+ version: '1.14.2',
meson_version: '>=1.2.0',
license: 'MIT',
license_files: 'LICENSE',