Packaging: exclude extras from Arduino libraries

This commit is contained in:
Ivan Kravets
2021-12-15 13:46:30 +02:00
parent 75f68c8be1
commit 949b4562c7
2 changed files with 17 additions and 12 deletions

View File

@ -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)

View File

@ -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]