From 4234dfb6f9fe8107216ab7587fca6192316e0fbd Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sun, 6 Sep 2020 18:37:27 +0300 Subject: [PATCH] Fixed an issue with "ImportError: cannot import name '_get_backend' from 'cryptography.hazmat.backends'" when using Remote Development // Resolve #3652 --- HISTORY.rst | 1 + platformio/package/manager/core.py | 32 ++++++++++++++++++++---------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 833c823f75..a0ac578b32 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -12,6 +12,7 @@ PlatformIO Core 5 ~~~~~~~~~~~~~~~~~~ - Fixed an issue when using a custom git/ssh package with `platform_packages `__ option (`issue #3624 `_) +- Fixed an issue with "ImportError: cannot import name '_get_backend' from 'cryptography.hazmat.backends'" when using `Remote Development `__ on RaspberryPi device (`issue #3652 `_) 5.0.0 (2020-09-03) ~~~~~~~~~~~~~~~~~~ diff --git a/platformio/package/manager/core.py b/platformio/package/manager/core.py index a11217e94a..50c52430d7 100644 --- a/platformio/package/manager/core.py +++ b/platformio/package/manager/core.py @@ -20,7 +20,7 @@ from platformio import __core_packages__, exception, fs, util from platformio.compat import PY2 from platformio.package.manager.tool import ToolPackageManager -from platformio.package.meta import PackageSpec +from platformio.package.meta import PackageItem, PackageSpec from platformio.proc import get_pythonexe_path @@ -95,16 +95,8 @@ def build_contrib_pysite_deps(target_dir): if os.path.isdir(target_dir): fs.rmtree(target_dir) os.makedirs(target_dir) - with open(os.path.join(target_dir, "package.json"), "w") as fp: - json.dump( - dict( - name="contrib-pysite", - version="2.%d%d.0" % (sys.version_info.major, sys.version_info.minor), - system=util.get_systype(), - ), - fp, - ) + # build dependencies pythonexe = get_pythonexe_path() for dep in get_contrib_pysite_deps(): subprocess.check_call( @@ -115,11 +107,31 @@ def build_contrib_pysite_deps(target_dir): "install", # "--no-cache-dir", "--no-compile", + "--no-binary", + ":all:", "-t", target_dir, dep, ] ) + + # build manifests + with open(os.path.join(target_dir, "package.json"), "w") as fp: + json.dump( + dict( + name="contrib-pysite", + version="2.%d%d.0" % (sys.version_info.major, sys.version_info.minor), + system=util.get_systype(), + ), + fp, + ) + pm = ToolPackageManager() + pkg = PackageItem(target_dir) + pkg.metadata = pm.build_metadata( + target_dir, PackageSpec(owner="platformio", name="contrib-pysite") + ) + pkg.dump_meta() + return True