Merge remote-tracking branch 'OFW/dev' into dev

This commit is contained in:
MX
2024-05-21 01:34:05 +03:00
78 changed files with 1510 additions and 453 deletions

View File

@@ -24,8 +24,8 @@ ICONS_TEMPLATE_C_FRAME = "const uint8_t {name}[] = {data};\n"
ICONS_TEMPLATE_C_DATA = "const uint8_t* const {name}[] = {data};\n"
ICONS_TEMPLATE_C_ICONS = "const Icon {name} = {{.width={width},.height={height},.frame_count={frame_count},.frame_rate={frame_rate},.frames=_{name}}};\n"
MAX_IMAGE_WIDTH = 128
MAX_IMAGE_HEIGHT = 64
MAX_IMAGE_WIDTH = 2**16 - 1
MAX_IMAGE_HEIGHT = 2**16 - 1
class Main(App):

View File

@@ -354,10 +354,10 @@ class AppBuildset:
).append(app)
def get_ext_apps(self):
return self.extapps
return list(self.extapps)
def get_incompatible_ext_apps(self):
return self.incompatible_extapps
return list(self.incompatible_extapps)
def _check_conflicts(self):
conflicts = []
@@ -402,14 +402,30 @@ class AppBuildset:
def _group_plugins(self):
known_extensions = self.get_apps_of_type(FlipperAppType.PLUGIN, all_known=True)
for extension_app in known_extensions:
keep_app = False
for parent_app_id in extension_app.requires:
try:
parent_app = self.appmgr.get(parent_app_id)
parent_app._plugins.append(extension_app)
if (
parent_app.apptype in self.BUILTIN_APP_TYPES
and parent_app_id in self.appnames
) or parent_app.apptype not in self.BUILTIN_APP_TYPES:
keep_app |= True
except FlipperManifestException:
self._writer(
f"Module {extension_app.appid} has unknown parent {parent_app_id}"
)
keep_app = True
# Debug output for plugin parentage
# print(
# f"Module {extension_app.appid} has parents {extension_app.requires} keep={keep_app}"
# )
if not keep_app and extension_app in self.extapps:
# print(f"Excluding plugin {extension_app.appid}")
self.extapps.remove(extension_app)
def get_apps_cdefs(self):
cdefs = set()
@@ -435,9 +451,11 @@ class AppBuildset:
return sorted(
filter(
lambda app: app.apptype == apptype,
self.appmgr.known_apps.values()
if all_known
else map(self.appmgr.get, self.appnames),
(
self.appmgr.known_apps.values()
if all_known
else map(self.appmgr.get, self.appnames)
),
),
key=lambda app: app.order,
)

View File

@@ -461,7 +461,8 @@ def _gather_app_components(env, appname) -> AppDeploymentComponents:
else:
# host app is a built-in app
components.add_app(artifacts_app_to_run)
components.extra_launch_args = f"-a {host_app.name}"
if host_app.name:
components.extra_launch_args = f"-a {host_app.name}"
else:
raise UserError("Host app is unknown")
else:

View File

@@ -198,6 +198,7 @@ def gen_sdk_data(sdk_cache: SdkCache):
api_def.extend(
(f"#include <{h.name}>" for h in sdk_cache.get_headers()),
)
api_def.append('#pragma GCC diagnostic ignored "-Wdeprecated-declarations"')
api_def.append(f"const int elf_api_version = {sdk_cache.version.as_int()};")