From 949b4562c764668c436f1f3c694b3fdc10fe7e7e Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 15 Dec 2021 13:46:30 +0200 Subject: [PATCH] Packaging: exclude extras from Arduino libraries --- platformio/package/manifest/parser.py | 2 +- platformio/package/pack.py | 27 ++++++++++++++++----------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/platformio/package/manifest/parser.py b/platformio/package/manifest/parser.py index 54417c0c..47e9025d 100644 --- a/platformio/package/manifest/parser.py +++ b/platformio/package/manifest/parser.py @@ -608,7 +608,7 @@ class LibraryPropertiesManifestParser(BaseManifestParser): return None def _parse_export(self): - result = {"exclude": ["extras", "docs", "tests", "test", "*.doxyfile", "*.pdf"]} + result = {} include = None if self.remote_url: url_attrs = urlparse(self.remote_url) diff --git a/platformio/package/pack.py b/platformio/package/pack.py index 2d1eea46..df5b23c1 100644 --- a/platformio/package/pack.py +++ b/platformio/package/pack.py @@ -22,7 +22,11 @@ import tempfile from platformio import fs from platformio.compat import IS_WINDOWS from platformio.package.exception import PackageException, UserSideException -from platformio.package.manifest.parser import ManifestFileType, ManifestParserFactory +from platformio.package.manifest.parser import ( + LibraryPropertiesManifestParser, + ManifestFileType, + ManifestParserFactory, +) from platformio.package.manifest.schema import ManifestSchema from platformio.package.meta import PackageItem from platformio.package.unpack import FileUnpacker @@ -55,6 +59,10 @@ class PackagePacker(object): "doc", "docs", "mkdocs", + "doxygen", + "*.doxyfile", + "html", + "media", "**/*.[pP][dD][fF]", "**/*.[dD][oO][cC]?", "**/*.[pP][pP][tT]?", @@ -79,10 +87,8 @@ class PackagePacker(object): EXCLUDE_LIBRARY_EXTRA = [ "assets", "extra", + "extras", "resources", - "html", - "media", - "doxygen", "**/build/", "**/*.flat", "**/*.[jJ][aA][rR]", @@ -97,6 +103,7 @@ class PackagePacker(object): def __init__(self, package, manifest_uri=None): self.package = package self.manifest_uri = manifest_uri + self.manifest_parser = None @staticmethod def get_archive_name(name, version, system=None): @@ -128,7 +135,8 @@ class PackagePacker(object): src = tmp_dir src = self.find_source_root(src) - manifest = self.load_manifest(src) + self.manifest_parser = ManifestParserFactory.new_from_dir(src) + manifest = ManifestSchema().load_manifest(self.manifest_parser.as_dict()) filename = self.get_archive_name( manifest["name"], manifest["version"], @@ -144,11 +152,6 @@ class PackagePacker(object): finally: shutil.rmtree(tmp_dir) - @staticmethod - def load_manifest(src): - mp = ManifestParserFactory.new_from_dir(src) - return ManifestSchema().load_manifest(mp.as_dict()) - def find_source_root(self, src): if self.manifest_uri: mp = ( @@ -214,7 +217,9 @@ class PackagePacker(object): # exclude items declared in manifest result += ["-<%s>" % p for p in exclude or []] # apply extra excludes if no custom "export" field in manifest - if not include and not exclude: + if (not include and not exclude) or isinstance( + self.manifest_parser, LibraryPropertiesManifestParser + ): result += ["-<%s>" % p for p in exclude_extra] # automatically include manifests result += ["+<%s>" % p for p in self.INCLUDE_DEFAULT]