[Backport release-26.05] skypilot: fix for incompat. w/ defaults handling in click >= 8.2; wrap websocket_proxy.py with wrapPythonProgramsIn (#537544)

This commit is contained in:
nixpkgs-ci[bot] 2026-07-01 20:08:48 +00:00 committed by GitHub
commit cdc5eed111
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 78 additions and 0 deletions

View file

@ -0,0 +1,31 @@
From 6a2202baf3edff90aea6b66996a8e11e4e7c133e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ak=E1=B9=A3aya=20=C5=9Ar=C4=ABniv=C4=81san?=
<akssri@vakra.xyz>
Date: Wed, 13 May 2026 13:31:19 +0530
Subject: [PATCH] Fix --docker flag default for Click >= 8.2 compatibility
Click 8.2 changed flag_value option handling: default=False is no longer
normalised to None before the 'is None' guard. Change to default=None so
sky launch works with Click >= 8.2 (e.g. nixpkgs).
Upstream constrains click<8.2; this makes the code robust to newer versions.
---
sky/client/cli/command.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sky/client/cli/command.py b/sky/client/cli/command.py
index 6ee1102d0..15a5057d6 100644
--- a/sky/client/cli/command.py
+++ b/sky/client/cli/command.py
@@ -1072,7 +1072,7 @@ def _handle_infra_cloud_region_zone_options(infra: Optional[str],
@click.option('--docker',
'backend_name',
flag_value=backends.LocalDockerBackend.NAME,
- default=False,
+ default=None,
hidden=True,
help=('(Deprecated) Local docker support is deprecated. '
'To run locally, create a local Kubernetes cluster with '
--
2.53.0

View file

@ -0,0 +1,37 @@
diff --git a/sky/client/cli/command.py b/sky/client/cli/command.py
index 15a5057d6..5417cad9f 100644
--- a/sky/client/cli/command.py
+++ b/sky/client/cli/command.py
@@ -203,7 +203,6 @@ def _get_cluster_records_and_set_ssh_config(
escaped_key_path = shlex.quote(
(cluster_utils.SSHConfigHelper.generate_local_key_file(
handle.cluster_name, credentials)))
- escaped_executable_path = shlex.quote(sys.executable)
escaped_websocket_proxy_path = shlex.quote(
f'{directory_utils.get_sky_dir()}/templates/websocket_proxy.py')
# Instead of directly use websocket_proxy.py, we add an
@@ -220,8 +219,7 @@ def _get_cluster_records_and_set_ssh_config(
# TODO(zhwu): write the template to a temp file, don't use
# the one in skypilot repo, to avoid changing the file when
# updating skypilot.
- f'\"{escaped_executable_path} '
- f'{escaped_websocket_proxy_path} '
+ f'\"{escaped_websocket_proxy_path} '
f'{server_common.get_server_url()} '
f'{handle.cluster_name} '
f'kubernetes-pod-ssh-proxy\"')
@@ -229,13 +227,11 @@ def _get_cluster_records_and_set_ssh_config(
elif isinstance(handle.launched_resources.cloud, clouds.Slurm):
# Replace the proxy command to proxy through the SkyPilot API
# server with websocket.
- escaped_executable_path = shlex.quote(sys.executable)
escaped_websocket_proxy_path = shlex.quote(
f'{directory_utils.get_sky_dir()}/templates/websocket_proxy.py')
# %w is a placeholder for the node index, substituted per-node
# in cluster_utils.SSHConfigHelper.add_cluster().
- proxy_command = (f'{escaped_executable_path} '
- f'{escaped_websocket_proxy_path} '
+ proxy_command = (f'{escaped_websocket_proxy_path} '
f'{server_common.get_server_url()} '
f'{handle.cluster_name} '
f'slurm-job-ssh-proxy %w')

View file

@ -35,6 +35,11 @@ python3Packages.buildPythonApplication (finalAttrs: {
pyproject = true;
pythonRelaxDeps = true;
patches = [
./0001-Fix-docker-flag-default-for-Click-8.2-compatibility.patch
./0002-Fix-websocket-proxy-call-script-directly-as-executable.patch
];
nativeBuildInputs = [
writableTmpDirAsHomeHook
];
@ -217,6 +222,11 @@ python3Packages.buildPythonApplication (finalAttrs: {
cp -r ${dashboard}/* $out/${python3Packages.python.sitePackages}/sky/dashboard/out/
'';
postFixup = ''
chmod +x $out/${python3Packages.python.sitePackages}/sky/templates/websocket_proxy.py
wrapPythonProgramsIn "$out/${python3Packages.python.sitePackages}/sky/templates" "$out ''${pythonPath[*]}"
'';
# Excluding the tests as it fails with error:
# Message: 'Config loaded from /build/source/examples/admin_policy/restful_policy.yaml:\nadmin_policy: http://localhost:8080\n'
#Arguments: ()