From fc1798f19ed67ee8dd4ee08a41b5cf392fa040b5 Mon Sep 17 00:00:00 2001 From: Ilya Trubachev Date: Fri, 6 Jun 2025 13:49:50 +0300 Subject: [PATCH] Native plugins sketch Signed-off-by: Ilya Trubachev --- .../build_system/src/build/compile_worker.ts | 8 ++++++++ .../build_system/src/plugins/plugins_driver.ts | 16 ++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/ets2panda/driver/build_system/src/build/compile_worker.ts b/ets2panda/driver/build_system/src/build/compile_worker.ts index c98142c648..299071a432 100644 --- a/ets2panda/driver/build_system/src/build/compile_worker.ts +++ b/ets2panda/driver/build_system/src/build/compile_worker.ts @@ -64,6 +64,14 @@ process.on('message', (message: { '--arktsconfig', fileInfo.arktsConfigFile, '--output', fileInfo.abcFilePath, ]; + if (PluginDriver.isNativePluginPresent) { + ets2pandaCmd.push("--plugins=["); + PluginDriver.nativePlugins.forEach((plugin: RawPlugins) => { + ets2pandaCmd.push(plugin.name) + ets2pandaCmd.push(", ") + }); + ets2pandaCmd.push("--plugins=]"); + } if (isDebug) { ets2pandaCmd.push('--debug-info'); } diff --git a/ets2panda/driver/build_system/src/plugins/plugins_driver.ts b/ets2panda/driver/build_system/src/plugins/plugins_driver.ts index 67203f601d..86fa4efcf4 100644 --- a/ets2panda/driver/build_system/src/plugins/plugins_driver.ts +++ b/ets2panda/driver/build_system/src/plugins/plugins_driver.ts @@ -128,13 +128,16 @@ class PluginContext { export class PluginDriver { private static instance: PluginDriver | undefined; private sortedPlugins: Map; - private allPlugins: Map; + private managedPlugins: Map; + private nativePlugins: Map; private context: PluginContext; private logger: Logger = Logger.getInstance(); + public isNativePluginPresent: boolean = false; constructor() { this.sortedPlugins = new Map(); - this.allPlugins = new Map(); + this.managedPlugins = new Map(); + this.nativePlugins = new Map(); this.context = new PluginContext(); } @@ -183,7 +186,12 @@ export class PluginDriver { pluginResults.forEach((plugin: RawPlugins) => { if (plugin.init !== undefined) { - this.allPlugins.set(plugin.name, plugin.init()); + if (!plugin.name.endsWith(".so")) { + this.managedPlugins.set(plugin.name, plugin.init()); + } else { + this.nativePlugins.set(plugin.name, plugin.init()); + this.isNativePluginPresent = true; + } } }); @@ -209,7 +217,7 @@ export class PluginDriver { let normal: PluginExecutor[] = []; let post: PluginExecutor[] = []; - this.allPlugins.forEach((pluginObject: Plugins, name: string) => { + this.managedPlugins.forEach((pluginObject: Plugins, name: string) => { if (!(pluginObject[hook])) { return; } -- Gitee