Skip to content

Commit

Permalink
Add support for BBC micro:bit board that is built on the ARM mbed and…
Browse files Browse the repository at this point in the history
… Nordic nrf51 platform // Resolve #709
  • Loading branch information
ivankravets committed Aug 9, 2016
1 parent 97c58c8 commit 20be83e
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 27 deletions.
3 changes: 3 additions & 0 deletions HISTORY.rst
Expand Up @@ -64,6 +64,9 @@ PlatformIO 3.0
+ Support for the 3rd party manifests (Arduino IDE "library.properties"
and ARM mbed "module.json")

* Added support for BBC micro:bit board that is built on the ARM mbed and
Nordic nrf51 platform
(`issue #709 <https://github.com/platformio/platformio/issues/709>`_)
* Print human-readable information when processing environments without
``-v, --verbose`` option
(`issue #721 <https://github.com/platformio/platformio/issues/721>`_)
Expand Down
2 changes: 1 addition & 1 deletion platformio/__init__.py
Expand Up @@ -14,7 +14,7 @@

import sys

VERSION = (3, 0, "0a2")
VERSION = (3, 0, "0a3")
__version__ = ".".join([str(s) for s in VERSION])

__title__ = "platformio"
Expand Down
25 changes: 3 additions & 22 deletions platformio/builder/tools/piolib.py
Expand Up @@ -24,6 +24,7 @@

from platformio import util
from platformio.builder.tools import platformio as piotool
from platformio.managers.lib import LibraryManager


class LibBuilderFactory(object):
Expand Down Expand Up @@ -105,28 +106,8 @@ def version(self):

@property
def dependencies(self):
deps = self._manifest.get("dependencies")
if not deps:
return deps
items = []
if isinstance(deps, dict):
if "name" in deps:
items.append(deps)
else:
for name, version in deps.items():
items.append({"name": name, "version": version})
elif isinstance(deps, list):
items = [d for d in deps if "name" in d]
for item in items:
for k in ("frameworks", "platforms"):
if k not in item or isinstance(k, list):
continue
if item[k] == "*":
del item[k]
elif isinstance(item[k], basestring):
item[k] = [i.strip() for i in item[k].split(",")
if i.strip()]
return items
return LibraryManager.normalize_dependencies(
self._manifest.get("dependencies", []))

@property
def src_filter(self):
Expand Down
29 changes: 25 additions & 4 deletions platformio/managers/lib.py
Expand Up @@ -33,6 +33,30 @@ def __init__(self, package_dir=None):
def manifest_name(self):
return ".library.json"

@staticmethod
def normalize_dependencies(dependencies):
if not dependencies:
return []
items = []
if isinstance(dependencies, dict):
if "name" in dependencies:
items.append(dependencies)
else:
for name, version in dependencies.items():
items.append({"name": name, "version": version})
elif isinstance(dependencies, list):
items = [d for d in dependencies if "name" in d]
for item in items:
for k in ("frameworks", "platforms"):
if k not in item or isinstance(k, list):
continue
if item[k] == "*":
del item[k]
elif isinstance(item[k], basestring):
item[k] = [i.strip() for i in item[k].split(",")
if i.strip()]
return items

@staticmethod
def max_satisfying_repo_version(versions, requirements=None):

Expand Down Expand Up @@ -132,10 +156,7 @@ def install(self, name, requirements=None, quiet=False,
if not quiet:
click.secho("Installing dependencies", fg="yellow")

_dependencies = manifest['dependencies']
if not isinstance(_dependencies, list):
_dependencies = [_dependencies]
for filters in _dependencies:
for filters in self.normalize_dependencies(manifest['dependencies']):
assert "name" in filters
if any([s in filters.get("version", "") for s in ("\\", "/")]):
self.install("{name}={version}".format(**filters))
Expand Down

0 comments on commit 20be83e

Please sign in to comment.