diff --git a/HISTORY.rst b/HISTORY.rst index a2bf6ad8..7b124df6 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -6,6 +6,11 @@ Release Notes PlatformIO Core 4 ----------------- +4.3.4 (2020-??-??) +~~~~~~~~~~~~~~~~~~ + +* Automatically build ``contrib-pysite`` package on a target machine when pre-built package is not compatible (`issue #3482 `_) + 4.3.3 (2020-04-28) ~~~~~~~~~~~~~~~~~~ diff --git a/platformio/commands/home/command.py b/platformio/commands/home/command.py index 1eaad046..32d28063 100644 --- a/platformio/commands/home/command.py +++ b/platformio/commands/home/command.py @@ -22,11 +22,7 @@ import click from platformio import exception from platformio.compat import WINDOWS -from platformio.managers.core import ( - build_contrib_pysite_deps, - get_core_package_dir, - inject_contrib_pysite, -) +from platformio.managers.core import get_core_package_dir, inject_contrib_pysite @click.command("home", short_help="PIO Home") @@ -55,12 +51,7 @@ def cli(port, host, no_open, shutdown_timeout): # import contrib modules inject_contrib_pysite() - try: - from autobahn.twisted.resource import WebSocketResource - except: # pylint: disable=bare-except - build_contrib_pysite_deps(get_core_package_dir("contrib-pysite")) - from autobahn.twisted.resource import WebSocketResource - + from autobahn.twisted.resource import WebSocketResource from twisted.internet import reactor from twisted.web import server from twisted.internet.error import CannotListenError diff --git a/platformio/commands/remote/command.py b/platformio/commands/remote/command.py index d4a1cc34..f9e24c29 100644 --- a/platformio/commands/remote/command.py +++ b/platformio/commands/remote/command.py @@ -44,7 +44,7 @@ def cli(ctx, agent): "https://docs.platformio.org/page/core/installation.html" ) ctx.obj = agent - inject_contrib_pysite() + inject_contrib_pysite(verify_openssl=True) @cli.group("agent", short_help="Start a new agent or list active") diff --git a/platformio/managers/core.py b/platformio/managers/core.py index cb6ad31c..64b4a8b6 100644 --- a/platformio/managers/core.py +++ b/platformio/managers/core.py @@ -100,15 +100,26 @@ def update_core_packages(only_check=False, silent=False): return True -def inject_contrib_pysite(): - from site import addsitedir # pylint: disable=import-outside-toplevel +def inject_contrib_pysite(verify_openssl=False): + # pylint: disable=import-outside-toplevel + from site import addsitedir contrib_pysite_dir = get_core_package_dir("contrib-pysite") if contrib_pysite_dir in sys.path: - return + return True addsitedir(contrib_pysite_dir) sys.path.insert(0, contrib_pysite_dir) + if not verify_openssl: + return True + + try: + from OpenSSL import SSL # pylint: disable=import-error,unused-import + except: # pylint: disable=bare-except + build_contrib_pysite_deps(get_core_package_dir("contrib-pysite")) + + return True + def build_contrib_pysite_deps(target_dir): if os.path.isdir(target_dir): @@ -146,11 +157,11 @@ def get_contrib_pysite_deps(): sys_type = util.get_systype() py_version = "%d%d" % (sys.version_info.major, sys.version_info.minor) - twisted_version = "19.7.0" + twisted_version = "19.10.0" if PY2 else "20.3.0" result = [ "twisted == %s" % twisted_version, - "autobahn == 19.10.1", - "json-rpc == 1.12.1", + "autobahn == 20.4.3", + "json-rpc == 1.13.0", ] # twisted[tls], see setup.py for %twisted_version% @@ -159,12 +170,12 @@ def get_contrib_pysite_deps(): ) # zeroconf - if sys.version_info.major < 3: + if PY2: result.append( "https://github.com/ivankravets/python-zeroconf/" "archive/pio-py27.zip" ) else: - result.append("zeroconf == 0.23.0") + result.append("zeroconf == 0.26.0") if "windows" in sys_type: result.append("pypiwin32 == 223")