diff --git a/meshroom/core/__init__.py b/meshroom/core/__init__.py index 03006477..5257e5f8 100644 --- a/meshroom/core/__init__.py +++ b/meshroom/core/__init__.py @@ -19,6 +19,7 @@ try: except Exception: pass +from meshroom.core.plugins import ProcessEnv from meshroom.core.submitter import BaseSubmitter from meshroom.env import EnvVar, meshroomFolder from . import desc @@ -349,9 +350,7 @@ def loadPluginFolder(folder): logging.info(f"Plugin folder '{folder}' does not contain a 'meshroom' folder.") return - binFolders = [Path(folder, 'bin')] - libFolders = [Path(folder, 'lib'), Path(folder, 'lib64')] - pythonPathFolders = [Path(folder)] + binFolders + processEnv = ProcessEnv(folder) loadAllNodes(folder=mrFolder) loadPipelineTemplates(folder=mrFolder) @@ -361,7 +360,7 @@ def loadPluginsFolder(folder): if not os.path.isdir(folder): logging.debug(f"PluginSet folder '{folder}' does not exist.") return - + for file in os.listdir(folder): if os.path.isdir(file): subFolder = os.path.join(folder, file) diff --git a/meshroom/core/plugins.py b/meshroom/core/plugins.py new file mode 100644 index 00000000..e1b40061 --- /dev/null +++ b/meshroom/core/plugins.py @@ -0,0 +1,14 @@ +from pathlib import Path + +from meshroom.common import BaseObject + +class ProcessEnv(BaseObject): + """ + Describes the environment required by a node's process. + """ + + def __init__(self, folder: str): + super().__init__() + self.binPaths: list = [Path(folder, "bin")] + self.libPaths: list = [Path(folder, "lib"), Path(folder, "lib64")] + self.pythonPathFolders: list = [Path(folder)] + self.binPaths