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':
