mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-11-26 22:40:25 +00:00
Merge branch 'hedger/fbt_tarfix' into dev
This commit is contained in:
commit
ff52f7d9ba
1 changed files with 25 additions and 6 deletions
|
@ -22,6 +22,7 @@ class Main(App):
|
|||
RESOURCE_TAR_MODE = "w:"
|
||||
RESOURCE_TAR_FORMAT = tarfile.USTAR_FORMAT
|
||||
RESOURCE_FILE_NAME = "resources.tar"
|
||||
RESOURCE_ENTRY_NAME_MAX_LENGTH = 100
|
||||
|
||||
WHITELISTED_STACK_TYPES = set(
|
||||
map(
|
||||
|
@ -120,9 +121,10 @@ class Main(App):
|
|||
)
|
||||
if self.args.resources:
|
||||
resources_basename = self.RESOURCE_FILE_NAME
|
||||
self.package_resources(
|
||||
if not self.package_resources(
|
||||
self.args.resources, join(self.args.directory, resources_basename)
|
||||
)
|
||||
):
|
||||
return 3
|
||||
|
||||
if not self.layout_check(dfu_size, radio_addr):
|
||||
self.logger.warn("Memory layout looks suspicious")
|
||||
|
@ -199,11 +201,28 @@ class Main(App):
|
|||
"Please confirm that you REALLY want to do that with --I-understand-what-I-am-doing=yes"
|
||||
)
|
||||
|
||||
def _tar_filter(self, tarinfo: tarfile.TarInfo):
|
||||
if len(tarinfo.name) > self.RESOURCE_ENTRY_NAME_MAX_LENGTH:
|
||||
self.logger.error(
|
||||
f"Cannot package resource: name '{tarinfo.name}' too long"
|
||||
)
|
||||
raise ValueError("Resource name too long")
|
||||
return tarinfo
|
||||
|
||||
def package_resources(self, srcdir: str, dst_name: str):
|
||||
try:
|
||||
with tarfile.open(
|
||||
dst_name, self.RESOURCE_TAR_MODE, format=self.RESOURCE_TAR_FORMAT
|
||||
) as tarball:
|
||||
tarball.add(srcdir, arcname="")
|
||||
tarball.add(
|
||||
srcdir,
|
||||
arcname="",
|
||||
filter=self._tar_filter,
|
||||
)
|
||||
return True
|
||||
except ValueError as e:
|
||||
self.logger.error(f"Cannot package resources: {e}")
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def copro_version_as_int(coprometa, stacktype):
|
||||
|
|
Loading…
Reference in a new issue