diff options
author | Kira Bruneau <kira.bruneau@pm.me> | 2021-09-06 10:37:35 -0400 |
---|---|---|
committer | Kira Bruneau <kira.bruneau@pm.me> | 2021-09-06 11:43:54 -0400 |
commit | 2df0c2aae5a7ad685fa21da91007d1a89538f722 (patch) | |
tree | 9d0ead210144151e3648c3552667005d82e4de23 /pkgs/tools/package-management/protontricks | |
parent | 8e778c6df06ab73862b9abc71f40489f9bbf6c40 (diff) |
protontricks: 1.5.2 → 1.6.0
Diffstat (limited to 'pkgs/tools/package-management/protontricks')
-rw-r--r-- | pkgs/tools/package-management/protontricks/default.nix | 31 | ||||
-rw-r--r-- | pkgs/tools/package-management/protontricks/steam-run.patch | 120 |
2 files changed, 83 insertions, 68 deletions
diff --git a/pkgs/tools/package-management/protontricks/default.nix b/pkgs/tools/package-management/protontricks/default.nix index cbe10e85f667d..99751c00d99c9 100644 --- a/pkgs/tools/package-management/protontricks/default.nix +++ b/pkgs/tools/package-management/protontricks/default.nix @@ -2,23 +2,24 @@ , buildPythonApplication , fetchFromGitHub , setuptools-scm +, setuptools , vdf , bash , steam-run , winetricks -, zenity +, yad , pytestCheckHook }: buildPythonApplication rec { pname = "protontricks"; - version = "1.5.2"; + version = "1.6.0"; src = fetchFromGitHub { owner = "Matoking"; repo = pname; rev = version; - hash = "sha256-Vmxb8SjPhcSqFzykHRPsLtAoSwomN+se+icwHkucbX8="; + hash = "sha256-sbYIqVsuDZ2Htb6SVIe/gBA1UIvUzu4fjTjWQ7k1WFs="; }; patches = [ @@ -27,23 +28,31 @@ buildPythonApplication rec { ]; SETUPTOOLS_SCM_PRETEND_VERSION = version; + nativeBuildInputs = [ setuptools-scm ]; - propagatedBuildInputs = [ vdf ]; + + propagatedBuildInputs = [ + setuptools # implicit dependency, used to find data/icon_placeholder.png + vdf + ]; makeWrapperArgs = [ "--prefix PATH : ${lib.makeBinPath [ bash steam-run - (winetricks.override { - # Remove default build of wine to reduce closure size. - # Falls back to wine in PATH when --no-runtime is passed. - wine = null; - }) - zenity + winetricks + yad ]}" ]; checkInputs = [ pytestCheckHook ]; + + # From 1.6.0 release notes (https://github.com/Matoking/protontricks/releases/tag/1.6.0): + # In most cases the script is unnecessary and should be removed as part of the packaging process. + postInstall = '' + rm "$out/bin/protontricks-desktop-install" + ''; + pythonImportsCheck = [ "protontricks" ]; meta = with lib; { @@ -51,6 +60,6 @@ buildPythonApplication rec { homepage = "https://github.com/Matoking/protontricks"; license = licenses.gpl3Only; maintainers = with maintainers; [ kira-bruneau ]; - platforms = platforms.linux; + platforms = [ "x86_64-linux" "i686-linux" ]; }; } diff --git a/pkgs/tools/package-management/protontricks/steam-run.patch b/pkgs/tools/package-management/protontricks/steam-run.patch index 82ddec1abb898..0144160c5af81 100644 --- a/pkgs/tools/package-management/protontricks/steam-run.patch +++ b/pkgs/tools/package-management/protontricks/steam-run.patch @@ -1,31 +1,31 @@ -diff --git a/src/protontricks/cli.py b/src/protontricks/cli.py -index cc65a03..5c3fc7a 100755 ---- a/src/protontricks/cli.py -+++ b/src/protontricks/cli.py -@@ -15,8 +15,8 @@ import sys - - from . import __version__ - from .gui import select_steam_app_with_gui --from .steam import (find_legacy_steam_runtime_path, find_proton_app, -- find_steam_path, get_steam_apps, get_steam_lib_paths) -+from .steam import (find_proton_app, find_steam_path, get_steam_apps, -+ get_steam_lib_paths) - from .util import run_command, is_flatpak_sandbox - from .winetricks import get_winetricks_path - -@@ -77,8 +77,7 @@ def main(args=None): +diff --git a/src/protontricks/cli/main.py b/src/protontricks/cli/main.py +index 535ec9b..690c1f9 100755 +--- a/src/protontricks/cli/main.py ++++ b/src/protontricks/cli/main.py +@@ -14,8 +14,8 @@ import sys + + from .. import __version__ + from ..gui import select_steam_app_with_gui +-from ..steam import (find_legacy_steam_runtime_path, find_proton_app, +- find_steam_path, get_steam_apps, get_steam_lib_paths) ++from ..steam import (find_proton_app, find_steam_path, get_steam_apps, ++ get_steam_lib_paths) + from ..util import is_flatpak_sandbox, run_command + from ..winetricks import get_winetricks_path + from .util import (CustomArgumentParser, cli_error_handler, enable_logging, +@@ -60,8 +60,7 @@ def main(args=None): "WINE: path to a custom 'wine' executable\n" "WINESERVER: path to a custom 'wineserver' executable\n" "STEAM_RUNTIME: 1 = enable Steam Runtime, 0 = disable Steam " - "Runtime, valid path = custom Steam Runtime path, " -- "empty = enable automatically (default)" -+ "Runtime, empty = enable automatically (default)" +- "empty = enable automatically (default)\n" ++ "Runtime, empty = enable automatically (default)\n" + "PROTONTRICKS_GUI: GUI provider to use, accepts either 'yad' " + "or 'zenity'" ), - formatter_class=argparse.RawTextHelpFormatter - ) -@@ -148,18 +147,9 @@ def main(args=None): - ) - sys.exit(-1) +@@ -147,17 +146,9 @@ def main(args=None): + if not steam_path: + exit_("Steam installation directory could not be found.") - # 2. Find the pre-installed legacy Steam Runtime if enabled - legacy_steam_runtime_path = None @@ -38,13 +38,12 @@ index cc65a03..5c3fc7a 100755 - ) - - if not legacy_steam_runtime_path: -- print("Steam Runtime was enabled but couldn't be found!") -- sys.exit(-1) +- exit_("Steam Runtime was enabled but couldn't be found!") + use_steam_runtime = True else: use_steam_runtime = False logger.info("Steam Runtime disabled.") -@@ -222,7 +212,6 @@ def main(args=None): +@@ -218,7 +209,6 @@ def main(args=None): proton_app=proton_app, steam_app=steam_app, use_steam_runtime=use_steam_runtime, @@ -52,7 +51,7 @@ index cc65a03..5c3fc7a 100755 command=[winetricks_path, "--gui"], use_bwrap=use_bwrap ) -@@ -292,7 +281,6 @@ def main(args=None): +@@ -286,7 +276,6 @@ def main(args=None): proton_app=proton_app, steam_app=steam_app, use_steam_runtime=use_steam_runtime, @@ -60,7 +59,7 @@ index cc65a03..5c3fc7a 100755 use_bwrap=use_bwrap, command=[winetricks_path] + args.winetricks_command) elif args.command: -@@ -302,7 +290,6 @@ def main(args=None): +@@ -296,7 +285,6 @@ def main(args=None): steam_app=steam_app, command=args.command, use_steam_runtime=use_steam_runtime, @@ -69,7 +68,7 @@ index cc65a03..5c3fc7a 100755 # Pass the command directly into the shell *without* # escaping it diff --git a/src/protontricks/steam.py b/src/protontricks/steam.py -index 4ab778b..f3f5f99 100644 +index e898caf..7448d11 100644 --- a/src/protontricks/steam.py +++ b/src/protontricks/steam.py @@ -12,8 +12,8 @@ from .util import lower_dict @@ -77,13 +76,13 @@ index 4ab778b..f3f5f99 100644 __all__ = ( "COMMON_STEAM_DIRS", "SteamApp", "find_steam_path", - "find_legacy_steam_runtime_path", "get_appinfo_sections", -- "get_proton_appid", "find_steam_proton_app", "find_appid_proton_prefix", -+ "get_appinfo_sections", "get_proton_appid", -+ "find_steam_proton_app", "find_appid_proton_prefix", +- "get_tool_appid", "find_steam_compat_tool_app", "find_appid_proton_prefix", ++ "get_appinfo_sections", "get_tool_appid", ++ "find_steam_compat_tool_app", "find_appid_proton_prefix", "find_proton_app", "get_steam_lib_paths", "get_compat_tool_dirs", - "get_custom_proton_installations_in_dir", "get_custom_proton_installations", + "get_custom_compat_tool_installations_in_dir", "get_custom_compat_tool_installations", "find_current_steamid3", "get_appid_from_shortcut", -@@ -300,37 +300,6 @@ def find_steam_path(): +@@ -311,37 +311,6 @@ def find_steam_path(): return None, None @@ -122,12 +121,12 @@ index 4ab778b..f3f5f99 100644 APPINFO_STRUCT_SECTION = "<LLLLQ20sL" diff --git a/src/protontricks/util.py b/src/protontricks/util.py -index b6617de..85f8b2d 100644 +index 5252d6c..f16dfec 100644 --- a/src/protontricks/util.py +++ b/src/protontricks/util.py -@@ -4,15 +4,14 @@ import shlex - import shutil +@@ -5,15 +5,14 @@ import shutil import stat + from pathlib import Path -from subprocess import check_output, run, PIPE +from subprocess import run, PIPE @@ -146,7 +145,7 @@ index b6617de..85f8b2d 100644 ) logger = logging.getLogger("protontricks") -@@ -46,24 +45,6 @@ def lower_dict(d): +@@ -47,24 +46,6 @@ def lower_dict(d): return {k.lower(): _lower_value(v) for k, v in d.items()} @@ -171,7 +170,7 @@ index b6617de..85f8b2d 100644 def get_host_library_paths(): """ Get host library paths to use when creating the LD_LIBRARY_PATH environment -@@ -75,7 +56,7 @@ def get_host_library_paths(): +@@ -76,7 +57,7 @@ def get_host_library_paths(): # Since that command is unavailable with newer Steam Runtime releases, # do it ourselves here. result = run( @@ -180,7 +179,7 @@ index b6617de..85f8b2d 100644 check=True, stdout=PIPE, stderr=PIPE ) lines = result.stdout.decode("utf-8").split("\n") -@@ -93,7 +74,7 @@ RUNTIME_ROOT_GLOB_PATTERNS = ( +@@ -94,7 +75,7 @@ RUNTIME_ROOT_GLOB_PATTERNS = ( ) @@ -189,7 +188,7 @@ index b6617de..85f8b2d 100644 """ Get LD_LIBRARY_PATH value to use when running a command using Steam Runtime """ -@@ -116,7 +97,7 @@ def get_runtime_library_paths(proton_app, use_bwrap=True): +@@ -117,7 +98,7 @@ def get_runtime_library_paths(proton_app, use_bwrap=True): ) ) @@ -198,7 +197,7 @@ index b6617de..85f8b2d 100644 return "".join([ str(proton_app.proton_dist_path / "lib"), os.pathsep, str(proton_app.proton_dist_path / "lib64"), os.pathsep -@@ -132,14 +113,19 @@ def get_runtime_library_paths(proton_app, use_bwrap=True): +@@ -133,14 +114,19 @@ def get_runtime_library_paths(proton_app, use_bwrap=True): ]) @@ -225,19 +224,18 @@ index b6617de..85f8b2d 100644 # Helper script created by Protontricks to run Wine binaries using Steam Runtime set -o errexit -@@ -207,7 +193,10 @@ if [[ -n "$PROTONTRICKS_INSIDE_STEAM_RUNTIME" ]]; then +@@ -208,7 +194,9 @@ if [[ -n "$PROTONTRICKS_INSIDE_STEAM_RUNTIME" ]]; then export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PROTON_LD_LIBRARY_PATH" "$PROTON_DIST_PATH"/bin/{name} "$@" else - exec "$STEAM_RUNTIME_PATH"/run --share-pid --batch \ + exec steam-run "$STEAM_RUNTIME_PATH"/pressure-vessel/bin/pressure-vessel-wrap \ -+ --runtime-archive=$(echo "$STEAM_RUNTIME_PATH"/*runtime.tar.gz) \ + --variable-dir="${{PRESSURE_VESSEL_VARIABLE_DIR:-$STEAM_RUNTIME_PATH/var}}" \ + --share-pid --batch \ "${{mount_params[@]}}" -- \ env PROTONTRICKS_INSIDE_STEAM_RUNTIME=1 \ "$PROTONTRICKS_PROXY_SCRIPT_PATH" "$@" -@@ -273,7 +262,6 @@ def create_wine_bin_dir(proton_app, use_bwrap=True): +@@ -274,7 +262,6 @@ def create_wine_bin_dir(proton_app, use_bwrap=True): def run_command( winetricks_path, proton_app, steam_app, command, use_steam_runtime=False, @@ -245,7 +243,7 @@ index b6617de..85f8b2d 100644 use_bwrap=True, **kwargs): """Run an arbitrary command with the correct environment variables -@@ -350,7 +338,7 @@ def run_command( +@@ -351,7 +338,7 @@ def run_command( os.environ["STEAM_RUNTIME_PATH"] = \ str(proton_app.required_tool_app.install_path) os.environ["PROTON_LD_LIBRARY_PATH"] = \ @@ -254,7 +252,7 @@ index b6617de..85f8b2d 100644 runtime_name = proton_app.required_tool_app.name logger.info( -@@ -373,11 +361,8 @@ def run_command( +@@ -372,11 +359,8 @@ def run_command( "Current Steam Runtime not recognized by Protontricks." ) else: @@ -267,7 +265,7 @@ index b6617de..85f8b2d 100644 # When Steam Runtime is enabled, create a set of helper scripts # that load the underlying Proton Wine executables with Steam Runtime -@@ -385,8 +370,6 @@ def run_command( +@@ -384,8 +368,6 @@ def run_command( wine_bin_dir = create_wine_bin_dir( proton_app=proton_app, use_bwrap=use_bwrap ) @@ -276,11 +274,11 @@ index b6617de..85f8b2d 100644 os.environ["PATH"] = "".join([ str(wine_bin_dir), os.pathsep, os.environ["PATH"] -diff --git a/tests/test_cli.py b/tests/test_cli.py -index 580bb5b..3a05ad3 100644 ---- a/tests/test_cli.py -+++ b/tests/test_cli.py -@@ -117,15 +117,10 @@ class TestCLIRun: +diff --git a/tests/cli/test_main.py b/tests/cli/test_main.py +index e6da0fb..46b9545 100644 +--- a/tests/cli/test_main.py ++++ b/tests/cli/test_main.py +@@ -116,15 +116,10 @@ class TestCLIRun: assert str(command.args[0]).endswith(".local/bin/winetricks") assert command.args[1] == "winecfg" assert command.env["PATH"].startswith(str(wine_bin_dir)) @@ -296,7 +294,7 @@ index 580bb5b..3a05ad3 100644 assert "STEAM_RUNTIME_PATH" not in command.env for name in ("wine", "wineserver"): -@@ -166,16 +161,14 @@ class TestCLIRun: +@@ -165,16 +160,14 @@ class TestCLIRun: assert command.env["PATH"].startswith(str(wine_bin_dir)) # Compared to the traditional Steam Runtime, PROTON_LD_LIBRARY_PATH @@ -315,7 +313,7 @@ index 580bb5b..3a05ad3 100644 assert command.env["STEAM_RUNTIME_PATH"] == \ str(steam_runtime_soldier.install_path) -@@ -239,9 +232,7 @@ class TestCLIRun: +@@ -238,9 +231,7 @@ class TestCLIRun: str(runtime_root / "lib" / "x86_64-linux-gnu") ])) @@ -326,9 +324,17 @@ index 580bb5b..3a05ad3 100644 assert command.env["STEAM_RUNTIME_PATH"] == \ str(steam_runtime_soldier.install_path) -@@ -324,20 +315,6 @@ class TestCLIRun: +@@ -335,7 +326,6 @@ class TestCLIRun: + + # Also ensure log messages are included in the error message + assert b"Found Steam directory at" in message +- assert b"Using default Steam Runtime" in message + + def test_run_gui_provider_not_found(self, cli, home_dir, steam_app_factory): + """ +@@ -349,20 +339,6 @@ class TestCLIRun: - assert "Zenity is not installed" in result + assert "YAD or Zenity is not installed" in result - def test_run_steam_runtime_not_found( - self, cli, steam_dir, steam_app_factory): |