From d4658e43dd0cc252b3d296fded85626bd08375c5 Mon Sep 17 00:00:00 2001 From: Paul Willot Date: Fri, 13 Dec 2024 19:13:01 +0900 Subject: [PATCH 1/5] Fix platform check `cat /etc/os-release` is not always available, the prisma client broke when trying to deploy in an Ubuntu 22.04 VM. This uses the standard library's `platform` instead. --- src/prisma/binaries/platform.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/prisma/binaries/platform.py b/src/prisma/binaries/platform.py index 62789631d..74020a9a4 100644 --- a/src/prisma/binaries/platform.py +++ b/src/prisma/binaries/platform.py @@ -32,15 +32,12 @@ def linux_distro() -> str: def _get_linux_distro_details() -> Tuple[str, str]: - process = subprocess.run(['cat', '/etc/os-release'], stdout=subprocess.PIPE, check=True) - output = str(process.stdout, sys.getdefaultencoding()) - - match = re.search(r'ID="?([^"\n]*)"?', output) - distro_id = match.group(1) if match else '' - - match = re.search(r'ID_LIKE="?([^"\n]*)"?', output) - distro_id_like = match.group(1) if match else '' - return distro_id, distro_id_like + if hasattr(platform, 'freedesktop_os_release'): + # For python >= 3.10 + distro = platform.freedesktop_os_release() + else: + distro = platform.linux_distribution() + return distro.get('ID', ''), distro.get('ID_LIKE', '') @lru_cache(maxsize=None) From f28d0d370c6b3bee6321ea368aee4044c35d84a5 Mon Sep 17 00:00:00 2001 From: Paul Willot Date: Fri, 13 Dec 2024 19:14:41 +0900 Subject: [PATCH 2/5] Use aliased _platform --- src/prisma/binaries/platform.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/prisma/binaries/platform.py b/src/prisma/binaries/platform.py index 74020a9a4..ce3dd23e1 100644 --- a/src/prisma/binaries/platform.py +++ b/src/prisma/binaries/platform.py @@ -34,9 +34,9 @@ def linux_distro() -> str: def _get_linux_distro_details() -> Tuple[str, str]: if hasattr(platform, 'freedesktop_os_release'): # For python >= 3.10 - distro = platform.freedesktop_os_release() + distro = _platform.freedesktop_os_release() else: - distro = platform.linux_distribution() + distro = _platform.linux_distribution() return distro.get('ID', ''), distro.get('ID_LIKE', '') From 22180162537d7cae8cc8510b01b33ad6c75ce802 Mon Sep 17 00:00:00 2001 From: Paul Willot Date: Fri, 13 Dec 2024 19:20:54 +0900 Subject: [PATCH 3/5] Fix leftover platform -> _platform --- src/prisma/binaries/platform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/prisma/binaries/platform.py b/src/prisma/binaries/platform.py index ce3dd23e1..0bf18cd15 100644 --- a/src/prisma/binaries/platform.py +++ b/src/prisma/binaries/platform.py @@ -32,7 +32,7 @@ def linux_distro() -> str: def _get_linux_distro_details() -> Tuple[str, str]: - if hasattr(platform, 'freedesktop_os_release'): + if hasattr(_platform, 'freedesktop_os_release'): # For python >= 3.10 distro = _platform.freedesktop_os_release() else: From 748a855216ad822c24ddf0be2862356684e2f46c Mon Sep 17 00:00:00 2001 From: Paul Willot Date: Fri, 13 Dec 2024 19:27:18 +0900 Subject: [PATCH 4/5] Also fix ssl version check --- src/prisma/binaries/platform.py | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/prisma/binaries/platform.py b/src/prisma/binaries/platform.py index 0bf18cd15..11d4790ab 100644 --- a/src/prisma/binaries/platform.py +++ b/src/prisma/binaries/platform.py @@ -1,6 +1,4 @@ -import re -import sys -import subprocess +import ssl import platform as _platform from functools import lru_cache from typing import Tuple @@ -55,14 +53,4 @@ def binary_platform() -> str: def get_openssl() -> str: - process = subprocess.run(['openssl', 'version', '-v'], stdout=subprocess.PIPE, check=True) - return parse_openssl_version(str(process.stdout, sys.getdefaultencoding())) - - -def parse_openssl_version(string: str) -> str: - match = re.match(r'^OpenSSL\s(\d+\.\d+)\.\d+', string) - if match is None: - # default - return '1.1.x' - - return match.group(1) + '.x' + return ".".join(str(x) for x in ssl.OPENSSL_VERSION_INFO) From f25c63f1c2962b6a7ab61e8b07ab82757a2b989c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 13 Dec 2024 10:27:25 +0000 Subject: [PATCH 5/5] chore(pre-commit.ci): auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/prisma/binaries/platform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/prisma/binaries/platform.py b/src/prisma/binaries/platform.py index 11d4790ab..1a4a4d2e2 100644 --- a/src/prisma/binaries/platform.py +++ b/src/prisma/binaries/platform.py @@ -53,4 +53,4 @@ def binary_platform() -> str: def get_openssl() -> str: - return ".".join(str(x) for x in ssl.OPENSSL_VERSION_INFO) + return '.'.join(str(x) for x in ssl.OPENSSL_VERSION_INFO)