Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package heroic-gogdl for openSUSE:Factory 
checked in at 2026-10-18 19:23:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/heroic-gogdl (Old)
 and      /work/SRC/openSUSE:Factory/.heroic-gogdl.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "heroic-gogdl"

Sun Oct 18 19:23:14 2026 rev:10 rq:1385709 version:1.3.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/heroic-gogdl/heroic-gogdl.changes        
2026-08-24 12:16:01.344397989 +0200
+++ /work/SRC/openSUSE:Factory/.heroic-gogdl.new.3698736/heroic-gogdl.changes   
2026-10-18 19:24:42.241192019 +0200
@@ -1,0 +2,9 @@
+Sat Oct 17 16:54:14 UTC 2026 - Jonatas Gonçalves <[email protected]>
+
+- Update to version 1.3.1
+  * fix: Flush when printing out the launch command by @CommandMC in #91
+  * fix: remove directories left empty after deleting files on update by
+    @fabi20750 in #95
+  * feat: Enable UTF-8 mode on Windows by @CommandMC in #92 
+
+-------------------------------------------------------------------

Old:
----
  heroic-gogdl-1.3.0.tar.gz

New:
----
  _scmsync.obsinfo
  heroic-gogdl-1.3.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ heroic-gogdl.spec ++++++
--- /var/tmp/diff_new_pack.FAQwPa/_old  2026-10-18 19:24:42.779214344 +0200
+++ /var/tmp/diff_new_pack.FAQwPa/_new  2026-10-18 19:24:42.781214427 +0200
@@ -16,7 +16,7 @@
 #
 
 Name:             heroic-gogdl
-Version:          1.3.0
+Version:          1.3.1
 Release:          0
 Summary:          GOG download module for Heroic Games Launcher
 License:          GPL-3.0-only

++++++ _scmsync.obsinfo ++++++
mtime: 1792256130
commit: 8fbb52241afd4bf448edfa6e1b063a8d0ea9fbd44dc63448ff934ee60be0ec57
url: https://src.opensuse.org/MaxxedSUSE/heroic-gogdl
revision: master

++++++ heroic-gogdl-1.3.0.tar.gz -> heroic-gogdl-1.3.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/heroic-gogdl-1.3.0/.github/workflows/build.yaml 
new/heroic-gogdl-1.3.1/.github/workflows/build.yaml
--- old/heroic-gogdl-1.3.0/.github/workflows/build.yaml 2026-08-07 
16:20:08.000000000 +0200
+++ new/heroic-gogdl-1.3.1/.github/workflows/build.yaml 2026-10-02 
10:45:29.000000000 +0200
@@ -39,11 +39,21 @@
         run: echo "option=--strip" >> $GITHUB_OUTPUT
         if: runner.os != 'Windows'
 
+      # See <https://docs.python.org/3/library/os.html#utf8-mode> on the 
effects of this
+      # Concretely, we need this since we may print out special characters 
(like Δ or ō), and if running from inside
+      # Node.js (Heroic), Python assumes a default stdout encoding that can't 
print those
+      - name: Enable UTF-8 mode on Windows
+        id: utf8
+        shell: bash
+        run: echo 'option=--python-option "X utf8"' >> $GITHUB_OUTPUT
+        if: runner.os == 'Windows'
+
       - name: Build
         run: pyinstaller
           --onefile
           --name gogdl
           ${{ steps.strip.outputs.option }}
+          ${{ steps.utf8.outputs.option }}
           gogdl/cli.py
         env:
           PYTHONOPTIMIZE: 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/heroic-gogdl-1.3.0/gogdl/__init__.py 
new/heroic-gogdl-1.3.1/gogdl/__init__.py
--- old/heroic-gogdl-1.3.0/gogdl/__init__.py    2026-08-07 16:20:08.000000000 
+0200
+++ new/heroic-gogdl-1.3.1/gogdl/__init__.py    2026-10-02 10:45:29.000000000 
+0200
@@ -7,4 +7,4 @@
 
 
 
-version = "1.3.0"
+version = "1.3.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/heroic-gogdl-1.3.0/gogdl/dl/managers/task_executor.py 
new/heroic-gogdl-1.3.1/gogdl/dl/managers/task_executor.py
--- old/heroic-gogdl-1.3.0/gogdl/dl/managers/task_executor.py   2026-08-07 
16:20:08.000000000 +0200
+++ new/heroic-gogdl-1.3.1/gogdl/dl/managers/task_executor.py   2026-10-02 
10:45:29.000000000 +0200
@@ -40,6 +40,8 @@
         self.linux_chunks_to_download = deque()
         self.tasks = deque()
         self.active_tasks = 0
+        # (destination, relative path) of files removed by this run
+        self.deleted_paths = list()
 
         self.processed_items = 0
         self.items_to_complete = 0
@@ -76,6 +78,7 @@
         for f in self.diff.deleted + self.diff.removed_redist:
             support_flag = generic.TaskFlag.SUPPORT if 'support' in f.flags 
else generic.TaskFlag.NONE
             self.tasks.append(generic.FileTask(f.path, 
flags=generic.TaskFlag.DELETE_FILE | support_flag))
+            self.deleted_paths.append((self.support if support_flag else 
self.path, f.path))
             if isinstance(f, v1.File):
                 required_disk_size_delta -= f.size
             elif isinstance(f, v2.DepotFile):
@@ -495,8 +498,28 @@
             return True
         
         self.shutdown()
+        if not self.fatal_error:
+            self.remove_empty_dirs()
         return self.fatal_error
 
+    def remove_empty_dirs(self):
+        # Directories that only contained deleted files would otherwise stay 
on disk.
+        # Some games (e.g. The Witcher 3) treat every directory in their 
content folders
+        # as a content package and hang when an empty leftover one is present.
+        for destination, file_path in self.deleted_paths:
+            root = os.path.normpath(destination)
+            path = 
dl_utils.get_case_insensitive_name(os.path.join(destination, file_path))
+            directory = os.path.dirname(os.path.normpath(path))
+            while directory != root and directory.startswith(root + os.sep):
+                try:
+                    if not os.path.isdir(directory) or os.listdir(directory):
+                        break
+                    os.rmdir(directory)
+                    self.logger.debug(f"Removed empty directory {directory}")
+                except OSError:
+                    break
+                directory = os.path.dirname(directory)
+
     def interrupt_shutdown(self):
         self.progress.completed = True
         self.running = False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/heroic-gogdl-1.3.0/gogdl/dl/managers/v2.py 
new/heroic-gogdl-1.3.1/gogdl/dl/managers/v2.py
--- old/heroic-gogdl-1.3.0/gogdl/dl/managers/v2.py      2026-08-07 
16:20:08.000000000 +0200
+++ new/heroic-gogdl-1.3.1/gogdl/dl/managers/v2.py      2026-10-02 
10:45:29.000000000 +0200
@@ -259,14 +259,16 @@
             exit(2)
         dl_utils.prepare_location(self.path)
 
-        for dir in self.manifest.dirs:
-            manifest_dir_path = os.path.join(self.path, dir.path)
-            
dl_utils.prepare_location(dl_utils.get_case_insensitive_name(manifest_dir_path))
         cancelled = executor.run()
 
         if cancelled:
             return
 
+        # Created after the run, so removing directories left empty by deleted 
files doesn't remove these
+        for dir in self.manifest.dirs:
+            manifest_dir_path = os.path.join(self.path, dir.path)
+            
dl_utils.prepare_location(dl_utils.get_case_insensitive_name(manifest_dir_path))
+
         dl_utils.prepare_location(constants.MANIFESTS_DIR)
         if self.manifest:
             with open(manifest_path, 'w') as f_handle:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/heroic-gogdl-1.3.0/gogdl/launch.py 
new/heroic-gogdl-1.3.1/gogdl/launch.py
--- old/heroic-gogdl-1.3.0/gogdl/launch.py      2026-08-07 16:20:08.000000000 
+0200
+++ new/heroic-gogdl-1.3.1/gogdl/launch.py      2026-10-02 10:45:29.000000000 
+0200
@@ -198,7 +198,7 @@
                 pass
             environment.update({"LD_LIBRARY_PATH": ":".join(splitted)})
     
-    print("Launch command:", command)
+    print("Launch command:", command, flush=True)
 
     status = None
     if sys.platform == 'linux':

Reply via email to