Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package legendary for openSUSE:Factory checked in at 2026-10-18 22:54:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/legendary (Old) and /work/SRC/openSUSE:Factory/.legendary.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "legendary" Sun Oct 18 22:54:30 2026 rev:11 rq:1386052 version:0.21.1 Changes: -------- --- /work/SRC/openSUSE:Factory/legendary/legendary.changes 2026-08-24 12:15:56.911239142 +0200 +++ /work/SRC/openSUSE:Factory/.legendary.new.3698736/legendary.changes 2026-10-18 22:55:08.269683637 +0200 @@ -1,0 +2,15 @@ +Sun Oct 18 06:13:08 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to 0.21.1 Lowlife (hotfix release) + * Smaller Linux binaries (~13 MiB -> ~3 MiB, dev dependencies excluded + from zipapp packaging) + * Restore Wrapper EXE support, fixing titles expecting + "EpicGamesLauncher.exe" as parent process (e.g. Rockstar titles) + * Fix launching third-party-launcher games (Ubisoft Connect / EA App) + from Flatpak or /usr installs with umu/Proton, incl. CWD for EA app + launches + * macOS: support symlinks used by some native games +- Add relax-uv-build-upper-bound.patch: drop upstream's uv_build<0.12 + build-system pin so the build uses the distro backend (0.13.x) + +------------------------------------------------------------------- Old: ---- legendary-0.21.0.tar.gz New: ---- legendary-0.21.1.tar.gz relax-uv-build-upper-bound.patch ----------(New B)---------- New: * macOS: support symlinks used by some native games - Add relax-uv-build-upper-bound.patch: drop upstream's uv_build<0.12 build-system pin so the build uses the distro backend (0.13.x) ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ legendary.spec ++++++ --- /var/tmp/diff_new_pack.ezrraq/_old 2026-10-18 22:55:08.827707076 +0200 +++ /var/tmp/diff_new_pack.ezrraq/_new 2026-10-18 22:55:08.829707160 +0200 @@ -16,12 +16,13 @@ # Name: legendary -Version: 0.21.0 +Version: 0.21.1 Release: 0 Summary: An Epic Games Launcher alternative License: GPL-3.0-only URL: https://github.com/legendary-gl/legendary.git Source: %{name}-%{version}.tar.gz +Patch0: relax-uv-build-upper-bound.patch BuildRequires: fdupes BuildRequires: python3-build BuildRequires: python3-installer ++++++ legendary-0.21.0.tar.gz -> legendary-0.21.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/legendary-0.21.0/.github/workflows/build-base.yml new/legendary-0.21.1/.github/workflows/build-base.yml --- old/legendary-0.21.0/.github/workflows/build-base.yml 2026-08-04 19:07:29.000000000 +0200 +++ new/legendary-0.21.1/.github/workflows/build-base.yml 2026-09-08 22:12:07.000000000 +0200 @@ -80,7 +80,7 @@ - run: mkdir -p build dist - name: Dependencies - run: uv export --format requirements.txt --no-editable | uv pip install --requirement - --target build + run: uv export --format requirements.txt --no-editable --no-dev | uv pip install --requirement - --target build - run: cp zipapp_main.py build/__main__.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/legendary-0.21.0/legendary/cli.py new/legendary-0.21.1/legendary/cli.py --- old/legendary-0.21.0/legendary/cli.py 2026-08-04 19:07:29.000000000 +0200 +++ new/legendary-0.21.1/legendary/cli.py 2026-09-08 22:12:07.000000000 +0200 @@ -687,15 +687,18 @@ if args.json: return self._print_json(vars(params), args.pretty_json) + # Copying existing env vars is required on Windows, probably a good idea on Linux + full_env = os.environ.copy() + full_env.update(params.environment) + full_params = list() full_params.extend(params.launch_command) + if 'LEGENDARY_WRAPPER_EXE' in full_env: + full_params.append(full_env['LEGENDARY_WRAPPER_EXE'].strip()) full_params.append(os.path.join(params.game_directory, params.game_executable)) full_params.extend(params.game_parameters) full_params.extend(params.user_parameters) full_params.extend(params.egl_parameters) - # Copying existing env vars is required on Windows, probably a good idea on Linux - full_env = os.environ.copy() - full_env.update(params.environment) if 'CX_BOTTLE' in full_env and any('SharedSupport/CrossOver' in p for p in params.launch_command): # if using crossover, unset WINEPREFIX @@ -836,7 +839,7 @@ logger.warning(f'Pre-launch command failed: {e!r}') logger.debug(f'Opening URI with command: {shlex.join(command)}') - subprocess.Popen(command, env=full_env) + subprocess.Popen(command, env=full_env, cwd=full_env.get('WINEPREFIX', None)) def install_game(self, args): if not self.core.lgd.lock_installed(): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/legendary-0.21.0/legendary/downloader/mp/manager.py new/legendary-0.21.1/legendary/downloader/mp/manager.py --- old/legendary-0.21.0/legendary/downloader/mp/manager.py 2026-08-04 19:07:29.000000000 +0200 +++ new/legendary-0.21.1/legendary/downloader/mp/manager.py 2026-09-08 22:12:07.000000000 +0200 @@ -344,6 +344,10 @@ # skip unchanged and empty files if current_file.filename in mc.unchanged: continue + elif current_file.symlink_target: + self.tasks.append(FileTask(current_file.filename, old_file=current_file.symlink_target, + flags=TaskFlags.CREATE_SYMLINK)) + continue elif not current_file.chunk_parts: self.tasks.append(FileTask(current_file.filename, flags=TaskFlags.CREATE_EMPTY_FILE)) continue diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/legendary-0.21.0/legendary/downloader/mp/workers.py new/legendary-0.21.1/legendary/downloader/mp/workers.py --- old/legendary-0.21.0/legendary/downloader/mp/workers.py 2026-08-04 19:07:29.000000000 +0200 +++ new/legendary-0.21.1/legendary/downloader/mp/workers.py 2026-09-08 22:12:07.000000000 +0200 @@ -207,6 +207,29 @@ open(full_path, 'a').close() self.o_q.put(WriterTaskResult(success=True, **j.__dict__)) continue + if j.flags & TaskFlags.CREATE_SYMLINK: + if current_file: + logger.warning('Trying to create symlink without closing first!') + current_file.close() + current_file = None + + try: + os.symlink(j.old_file, full_path) + except FileExistsError: + try: + os.remove(full_path) + os.symlink(j.old_file, full_path) + except OSError as e: + logger.error(f'Creating symlink failed: {e!r}') + self.o_q.put(WriterTaskResult(success=False, **j.__dict__)) + continue + except OSError as e: + logger.error(f'Creating symlink failed: {e!r}') + self.o_q.put(WriterTaskResult(success=False, **j.__dict__)) + continue + + self.o_q.put(WriterTaskResult(success=True, **j.__dict__)) + continue elif j.flags & TaskFlags.OPEN_FILE: if current_file: logger.warning(f'Opening new file {j.filename} without closing previous! {last_filename}') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/legendary-0.21.0/legendary/models/downloading.py new/legendary-0.21.1/legendary/models/downloading.py --- old/legendary-0.21.0/legendary/models/downloading.py 2026-08-04 19:07:29.000000000 +0200 +++ new/legendary-0.21.1/legendary/models/downloading.py 2026-09-08 22:12:07.000000000 +0200 @@ -59,6 +59,7 @@ CLOSE_FILE = auto() DELETE_FILE = auto() CREATE_EMPTY_FILE = auto() + CREATE_SYMLINK = auto() RENAME_FILE = auto() RELEASE_MEMORY = auto() MAKE_EXECUTABLE = auto() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/legendary-0.21.0/pyproject.toml new/legendary-0.21.1/pyproject.toml --- old/legendary-0.21.0/pyproject.toml 2026-08-04 19:07:29.000000000 +0200 +++ new/legendary-0.21.1/pyproject.toml 2026-09-08 22:12:07.000000000 +0200 @@ -4,7 +4,7 @@ [project] name = "legendary-gl" -version = "0.21.0" +version = "0.21.1" dependencies = [ "requests", "filelock", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/legendary-0.21.0/uv.lock new/legendary-0.21.1/uv.lock --- old/legendary-0.21.0/uv.lock 2026-08-04 19:07:29.000000000 +0200 +++ new/legendary-0.21.1/uv.lock 2026-09-08 22:12:07.000000000 +0200 @@ -194,7 +194,7 @@ [[package]] name = "legendary-gl" -version = "0.20.35" +version = "0.21.1" source = { editable = "." } dependencies = [ { name = "filelock" }, ++++++ relax-uv-build-upper-bound.patch ++++++ Allow building with system uv_build >= 0.12 (e.g. 0.13.x in Factory): upstream pins build-system.requires to uv_build>=0.11.4,<0.12, which fails the PEP 517 dependency check under --no-isolation as soon as the distro ships a newer backend. The backend interface is stable, so drop the upper bound and use whatever the distro provides. --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["uv_build>=0.11.4,<0.12"] +requires = ["uv_build>=0.11.4"] build-backend = "uv_build" [project]
