diff --git a/pkgs/tools/admin/google-cloud-sdk/cloud_sql_proxy_path.patch b/pkgs/tools/admin/google-cloud-sdk/cloud_sql_proxy_path.patch new file mode 100644 index 00000000000..aec4be2ec19 --- /dev/null +++ b/pkgs/tools/admin/google-cloud-sdk/cloud_sql_proxy_path.patch @@ -0,0 +1,36 @@ +diff --git a/lib/googlecloudsdk/api_lib/sql/instances.py b/lib/googlecloudsdk/api_lib/sql/instances.py +index 0d88ffe..814a436 100644 +--- a/lib/googlecloudsdk/api_lib/sql/instances.py ++++ b/lib/googlecloudsdk/api_lib/sql/instances.py +@@ -86,18 +86,19 @@ def GetRegionFromZone(gce_zone): + def _GetCloudSqlProxyPath(): + """Determines the path to the cloud_sql_proxy binary.""" + sdk_bin_path = config.Paths().sdk_bin_path +- if not sdk_bin_path: +- # Check if cloud_sql_proxy is located on the PATH. +- proxy_path = file_utils.FindExecutableOnPath('cloud_sql_proxy') +- if proxy_path: +- log.debug( +- 'Using cloud_sql_proxy found at [{path}]'.format(path=proxy_path)) +- return proxy_path +- else: +- raise exceptions.ToolException( +- 'A Cloud SQL Proxy SDK root could not be found. Please check your ' +- 'installation.') +- return os.path.join(sdk_bin_path, 'cloud_sql_proxy') ++ if sdk_bin_path and os.path.isfile(os.path.join(sdk_bin_path, 'cloud_sql_proxy')): ++ return os.path.join(sdk_bin_path, 'cloud_sql_proxy') ++ ++ # Check if cloud_sql_proxy is located on the PATH. ++ proxy_path = file_utils.FindExecutableOnPath('cloud_sql_proxy') ++ if proxy_path: ++ log.debug( ++ 'Using cloud_sql_proxy found at [{path}]'.format(path=proxy_path)) ++ return proxy_path ++ ++ raise exceptions.ToolException( ++ 'A Cloud SQL Proxy SDK root could not be found. Please check your ' ++ 'installation.') + + + def _RaiseProxyError(error_msg=None): diff --git a/pkgs/tools/admin/google-cloud-sdk/default.nix b/pkgs/tools/admin/google-cloud-sdk/default.nix index 644bdedffe5..1d585514f7e 100644 --- a/pkgs/tools/admin/google-cloud-sdk/default.nix +++ b/pkgs/tools/admin/google-cloud-sdk/default.nix @@ -45,6 +45,8 @@ in stdenv.mkDerivation rec { ./gcloud-path.patch # Disable checking for updates for the package ./gsutil-disable-updates.patch + # Try to use cloud_sql_proxy from SDK only if it actually exists, otherwise, search for one in PATH + ./cloud_sql_proxy_path.patch ]; installPhase = ''