mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-30 10:07:14 +02:00
Automatically build `contrib-pysite
` package on a target machine when pre-built package is not compatible // Resolve #3482
This commit is contained in:
@ -6,6 +6,11 @@ Release Notes
|
|||||||
PlatformIO Core 4
|
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 <https://github.com/platformio/platformio-core/issues/3482>`_)
|
||||||
|
|
||||||
4.3.3 (2020-04-28)
|
4.3.3 (2020-04-28)
|
||||||
~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@ -22,11 +22,7 @@ import click
|
|||||||
|
|
||||||
from platformio import exception
|
from platformio import exception
|
||||||
from platformio.compat import WINDOWS
|
from platformio.compat import WINDOWS
|
||||||
from platformio.managers.core import (
|
from platformio.managers.core import get_core_package_dir, inject_contrib_pysite
|
||||||
build_contrib_pysite_deps,
|
|
||||||
get_core_package_dir,
|
|
||||||
inject_contrib_pysite,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@click.command("home", short_help="PIO Home")
|
@click.command("home", short_help="PIO Home")
|
||||||
@ -55,12 +51,7 @@ def cli(port, host, no_open, shutdown_timeout):
|
|||||||
# import contrib modules
|
# import contrib modules
|
||||||
inject_contrib_pysite()
|
inject_contrib_pysite()
|
||||||
|
|
||||||
try:
|
from autobahn.twisted.resource import WebSocketResource
|
||||||
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 twisted.internet import reactor
|
from twisted.internet import reactor
|
||||||
from twisted.web import server
|
from twisted.web import server
|
||||||
from twisted.internet.error import CannotListenError
|
from twisted.internet.error import CannotListenError
|
||||||
|
@ -44,7 +44,7 @@ def cli(ctx, agent):
|
|||||||
"https://docs.platformio.org/page/core/installation.html"
|
"https://docs.platformio.org/page/core/installation.html"
|
||||||
)
|
)
|
||||||
ctx.obj = agent
|
ctx.obj = agent
|
||||||
inject_contrib_pysite()
|
inject_contrib_pysite(verify_openssl=True)
|
||||||
|
|
||||||
|
|
||||||
@cli.group("agent", short_help="Start a new agent or list active")
|
@cli.group("agent", short_help="Start a new agent or list active")
|
||||||
|
@ -100,15 +100,26 @@ def update_core_packages(only_check=False, silent=False):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def inject_contrib_pysite():
|
def inject_contrib_pysite(verify_openssl=False):
|
||||||
from site import addsitedir # pylint: disable=import-outside-toplevel
|
# pylint: disable=import-outside-toplevel
|
||||||
|
from site import addsitedir
|
||||||
|
|
||||||
contrib_pysite_dir = get_core_package_dir("contrib-pysite")
|
contrib_pysite_dir = get_core_package_dir("contrib-pysite")
|
||||||
if contrib_pysite_dir in sys.path:
|
if contrib_pysite_dir in sys.path:
|
||||||
return
|
return True
|
||||||
addsitedir(contrib_pysite_dir)
|
addsitedir(contrib_pysite_dir)
|
||||||
sys.path.insert(0, 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):
|
def build_contrib_pysite_deps(target_dir):
|
||||||
if os.path.isdir(target_dir):
|
if os.path.isdir(target_dir):
|
||||||
@ -146,11 +157,11 @@ def get_contrib_pysite_deps():
|
|||||||
sys_type = util.get_systype()
|
sys_type = util.get_systype()
|
||||||
py_version = "%d%d" % (sys.version_info.major, sys.version_info.minor)
|
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 = [
|
result = [
|
||||||
"twisted == %s" % twisted_version,
|
"twisted == %s" % twisted_version,
|
||||||
"autobahn == 19.10.1",
|
"autobahn == 20.4.3",
|
||||||
"json-rpc == 1.12.1",
|
"json-rpc == 1.13.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
# twisted[tls], see setup.py for %twisted_version%
|
# twisted[tls], see setup.py for %twisted_version%
|
||||||
@ -159,12 +170,12 @@ def get_contrib_pysite_deps():
|
|||||||
)
|
)
|
||||||
|
|
||||||
# zeroconf
|
# zeroconf
|
||||||
if sys.version_info.major < 3:
|
if PY2:
|
||||||
result.append(
|
result.append(
|
||||||
"https://github.com/ivankravets/python-zeroconf/" "archive/pio-py27.zip"
|
"https://github.com/ivankravets/python-zeroconf/" "archive/pio-py27.zip"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
result.append("zeroconf == 0.23.0")
|
result.append("zeroconf == 0.26.0")
|
||||||
|
|
||||||
if "windows" in sys_type:
|
if "windows" in sys_type:
|
||||||
result.append("pypiwin32 == 223")
|
result.append("pypiwin32 == 223")
|
||||||
|
Reference in New Issue
Block a user