Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-06-01 07:07:44

0001 import os
0002 
0003 from escrun.cmake import CmakeBuildManager
0004 
0005 
0006 class PluginCmakeBuildManager(CmakeBuildManager):
0007     def __init__(self, plugin_path, **kwargs):
0008 
0009         if not plugin_path:
0010             raise RuntimeError("plugin_path is not provided")
0011         if not os.path.isdir(plugin_path):
0012             raise RuntimeError("plugin_path is not a directory (or the permission is denied)")
0013 
0014         kwargs['plugin_path'] = plugin_path
0015 
0016         # Plugin name
0017         if 'name' not in kwargs:
0018             kwargs['name'] = os.path.basename(os.path.abspath(plugin_path))
0019 
0020         default_build_prefix = os.path.join(plugin_path, 'cmake-build')
0021         kwargs['build_prefix'] = kwargs.get('build_prefix', default_build_prefix)
0022         kwargs['install_prefix'] = kwargs.get('install_prefix', plugin_path)
0023         kwargs['build_target'] = kwargs.get('build_target', kwargs['name']+'_plugin')
0024 
0025         # For plugins set it true
0026         kwargs['auto_create_build_dir'] = kwargs.get('auto_create_build_dir', True)
0027 
0028         super().__init__(**kwargs)
0029 
0030 
0031 class Plugin(object):
0032     def __init__(self, name, **kwargs):
0033 
0034         if not name:
0035             raise ValueError("Plugin name is emtpy or None. Plugin name is required")
0036         self._name = name
0037 
0038         self.args = {}
0039         self.args.update(kwargs)
0040 
0041     @property
0042     def name(self):
0043         return self._name
0044 
0045     @property
0046     def search_path(self):
0047         return None
0048 
0049 
0050 class PluginFromSource(Plugin):
0051     """Jana plugin from """
0052     def __init__(self, plugin_path, **kwargs):
0053         self.builder = PluginCmakeBuildManager(plugin_path, **kwargs)
0054         self.builder.config['build_target'] = 'install'
0055         self.builder.config['cxx_standard'] = '17'
0056         self.args = {}
0057         super().__init__(self.builder.config['name'])
0058 
0059     @property
0060     def name(self):
0061         return self.builder.config['name']
0062 
0063     @property
0064     def search_path(self):
0065         return self.builder.config['install_prefix']
0066 
0067 # class UserPlugin(object):
0068 #     def