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 return None
def _parse_export(self): def _parse_export(self):
result = {"exclude": ["extras", "docs", "tests", "test", "*.doxyfile", "*.pdf"]} result = {}
include = None include = None
if self.remote_url: if self.remote_url:
url_attrs = urlparse(self.remote_url) url_attrs = urlparse(self.remote_url)

View File

@ -22,7 +22,11 @@ import tempfile
from platformio import fs from platformio import fs
from platformio.compat import IS_WINDOWS from platformio.compat import IS_WINDOWS
from platformio.package.exception import PackageException, UserSideException 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.manifest.schema import ManifestSchema
from platformio.package.meta import PackageItem from platformio.package.meta import PackageItem
from platformio.package.unpack import FileUnpacker from platformio.package.unpack import FileUnpacker
@ -55,6 +59,10 @@ class PackagePacker(object):
"doc", "doc",
"docs", "docs",
"mkdocs", "mkdocs",
"doxygen",
"*.doxyfile",
"html",
"media",
"**/*.[pP][dD][fF]", "**/*.[pP][dD][fF]",
"**/*.[dD][oO][cC]?", "**/*.[dD][oO][cC]?",
"**/*.[pP][pP][tT]?", "**/*.[pP][pP][tT]?",
@ -79,10 +87,8 @@ class PackagePacker(object):
EXCLUDE_LIBRARY_EXTRA = [ EXCLUDE_LIBRARY_EXTRA = [
"assets", "assets",
"extra", "extra",
"extras",
"resources", "resources",
"html",
"media",
"doxygen",
"**/build/", "**/build/",
"**/*.flat", "**/*.flat",
"**/*.[jJ][aA][rR]", "**/*.[jJ][aA][rR]",
@ -97,6 +103,7 @@ class PackagePacker(object):
def __init__(self, package, manifest_uri=None): def __init__(self, package, manifest_uri=None):
self.package = package self.package = package
self.manifest_uri = manifest_uri self.manifest_uri = manifest_uri
self.manifest_parser = None
@staticmethod @staticmethod
def get_archive_name(name, version, system=None): def get_archive_name(name, version, system=None):
@ -128,7 +135,8 @@ class PackagePacker(object):
src = tmp_dir src = tmp_dir
src = self.find_source_root(src) 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( filename = self.get_archive_name(
manifest["name"], manifest["name"],
manifest["version"], manifest["version"],
@ -144,11 +152,6 @@ class PackagePacker(object):
finally: finally:
shutil.rmtree(tmp_dir) 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): def find_source_root(self, src):
if self.manifest_uri: if self.manifest_uri:
mp = ( mp = (
@ -214,7 +217,9 @@ class PackagePacker(object):
# exclude items declared in manifest # exclude items declared in manifest
result += ["-<%s>" % p for p in exclude or []] result += ["-<%s>" % p for p in exclude or []]
# apply extra excludes if no custom "export" field in manifest # 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] result += ["-<%s>" % p for p in exclude_extra]
# automatically include manifests # automatically include manifests
result += ["+<%s>" % p for p in self.INCLUDE_DEFAULT] result += ["+<%s>" % p for p in self.INCLUDE_DEFAULT]