From b3abee85138fb3bd3826d959e14308e68f708b71 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Tue, 23 Aug 2016 00:09:28 +0300 Subject: [PATCH] Ignore broken libraries; show link to the docs with lib_compat_mode // Resolve #759 --- platformio/builder/tools/piolib.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/platformio/builder/tools/piolib.py b/platformio/builder/tools/piolib.py index a5ab68fe..cf4c31e4 100644 --- a/platformio/builder/tools/piolib.py +++ b/platformio/builder/tools/piolib.py @@ -479,6 +479,7 @@ def GetLibBuilders(env): return False return True + found_incompat = False for libs_dir in env['LIBSOURCE_DIRS']: libs_dir = env.subst(libs_dir) if not isdir(libs_dir): @@ -486,13 +487,28 @@ def GetLibBuilders(env): for item in sorted(os.listdir(libs_dir)): if item == "__cores__" or not isdir(join(libs_dir, item)): continue - lb = LibBuilderFactory.new(env, join(libs_dir, item)) + try: + lb = LibBuilderFactory.new(env, join(libs_dir, item)) + except ValueError: + sys.stderr.write("Skip library with broken manifest: %s\n" % + join(libs_dir, item)) + continue if _check_lib_builder(lb): items += (lb, ) + else: + found_incompat = True for lb in env.get("EXTRA_LIB_BUILDERS", []): if _check_lib_builder(lb): items += (lb, ) + else: + found_incompat = True + + if verbose and found_incompat: + sys.stderr.write( + "More details about \"Library Compatibility Mode\": " + "http://docs.platformio.org/en/latest/librarymanager/ldf.html#" + "ldf-compat-mode\n") return items