From 244585b369ecc0019002ca51bf7f8fd506234462 Mon Sep 17 00:00:00 2001 From: Ed Bartosh Date: Wed, 15 Feb 2017 21:24:38 +0200 Subject: wic: move PluginMgr class to pluginbase As PluginMgr class contains only one method it's better to move it to pluginbase to have all plugin related APIs in one module. Signed-off-by: Ed Bartosh --- scripts/lib/wic/engine.py | 2 +- scripts/lib/wic/help.py | 2 +- scripts/lib/wic/partition.py | 2 +- scripts/lib/wic/plugin.py | 66 -------------------------------- scripts/lib/wic/pluginbase.py | 47 +++++++++++++++++++++-- scripts/lib/wic/plugins/imager/direct.py | 3 +- 6 files changed, 48 insertions(+), 74 deletions(-) delete mode 100644 scripts/lib/wic/plugin.py diff --git a/scripts/lib/wic/engine.py b/scripts/lib/wic/engine.py index 4d0901d0fb..f59821fea6 100644 --- a/scripts/lib/wic/engine.py +++ b/scripts/lib/wic/engine.py @@ -32,7 +32,7 @@ import logging import os from wic import WicError -from wic.plugin import PluginMgr +from wic.pluginbase import PluginMgr from wic.utils.misc import get_bitbake_var logger = logging.getLogger('wic') diff --git a/scripts/lib/wic/help.py b/scripts/lib/wic/help.py index c08ad34ae5..148da89e0a 100644 --- a/scripts/lib/wic/help.py +++ b/scripts/lib/wic/help.py @@ -28,7 +28,7 @@ import subprocess import logging -from wic.plugin import PluginMgr, PLUGIN_TYPES +from wic.pluginbase import PluginMgr, PLUGIN_TYPES logger = logging.getLogger('wic') diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py index adf44b743c..6ef8d7f3c9 100644 --- a/scripts/lib/wic/partition.py +++ b/scripts/lib/wic/partition.py @@ -30,7 +30,7 @@ import tempfile from wic import WicError from wic.utils.misc import exec_cmd, exec_native_cmd, get_bitbake_var -from wic.plugin import PluginMgr +from wic.pluginbase import PluginMgr logger = logging.getLogger('wic') diff --git a/scripts/lib/wic/plugin.py b/scripts/lib/wic/plugin.py deleted file mode 100644 index 094a878e0f..0000000000 --- a/scripts/lib/wic/plugin.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python -tt -# -# Copyright (c) 2011 Intel, Inc. -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the Free -# Software Foundation; version 2 of the License -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., 59 -# Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -import os -import logging - -from importlib.machinery import SourceFileLoader - -from wic import pluginbase, WicError -from wic.utils.misc import get_bitbake_var - -PLUGIN_TYPES = ["imager", "source"] - -SCRIPTS_PLUGIN_DIR = "scripts/lib/wic/plugins" - -logger = logging.getLogger('wic') - -class PluginMgr: - _plugin_dirs = [] - _plugins = {} - - @classmethod - def get_plugins(cls, ptype): - """Get dictionary of : pairs.""" - if ptype not in PLUGIN_TYPES: - raise WicError('%s is not valid plugin type' % ptype) - - if ptype in cls._plugins: - return cls._plugins[ptype] - - # collect plugin directories - if not cls._plugin_dirs: - cls._plugin_dirs = [os.path.join(os.path.dirname(__file__), 'plugins')] - layers = get_bitbake_var("BBLAYERS") or '' - for layer_path in layers.split(): - path = os.path.join(layer_path, SCRIPTS_PLUGIN_DIR) - path = os.path.abspath(os.path.expanduser(path)) - if path not in cls._plugin_dirs and os.path.isdir(path): - cls._plugin_dirs.insert(0, path) - - # load plugins - for pdir in cls._plugin_dirs: - ppath = os.path.join(pdir, ptype) - if os.path.isdir(ppath): - for fname in os.listdir(ppath): - if fname.endswith('.py'): - mname = fname[:-3] - mpath = os.path.join(ppath, fname) - SourceFileLoader(mname, mpath).load_module() - - cls._plugins[ptype] = pluginbase.get_plugins(ptype) - return cls._plugins[ptype] diff --git a/scripts/lib/wic/pluginbase.py b/scripts/lib/wic/pluginbase.py index 743170a5fa..93f0b663a3 100644 --- a/scripts/lib/wic/pluginbase.py +++ b/scripts/lib/wic/pluginbase.py @@ -15,16 +15,59 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # Temple Place - Suite 330, Boston, MA 02111-1307, USA. -__all__ = ['ImagerPlugin', 'SourcePlugin', 'get_plugins'] +__all__ = ['ImagerPlugin', 'SourcePlugin'] +import os import logging from collections import defaultdict +from importlib.machinery import SourceFileLoader from wic import WicError +from wic.utils.misc import get_bitbake_var + +PLUGIN_TYPES = ["imager", "source"] + +SCRIPTS_PLUGIN_DIR = "scripts/lib/wic/plugins" logger = logging.getLogger('wic') +class PluginMgr: + _plugin_dirs = [] + _plugins = {} + + @classmethod + def get_plugins(cls, ptype): + """Get dictionary of : pairs.""" + if ptype not in PLUGIN_TYPES: + raise WicError('%s is not valid plugin type' % ptype) + + if ptype in cls._plugins: + return cls._plugins[ptype] + + # collect plugin directories + if not cls._plugin_dirs: + cls._plugin_dirs = [os.path.join(os.path.dirname(__file__), 'plugins')] + layers = get_bitbake_var("BBLAYERS") or '' + for layer_path in layers.split(): + path = os.path.join(layer_path, SCRIPTS_PLUGIN_DIR) + path = os.path.abspath(os.path.expanduser(path)) + if path not in cls._plugin_dirs and os.path.isdir(path): + cls._plugin_dirs.insert(0, path) + + # load plugins + for pdir in cls._plugin_dirs: + ppath = os.path.join(pdir, ptype) + if os.path.isdir(ppath): + for fname in os.listdir(ppath): + if fname.endswith('.py'): + mname = fname[:-3] + mpath = os.path.join(ppath, fname) + SourceFileLoader(mname, mpath).load_module() + + cls._plugins[ptype] = PluginMeta.plugins.get(ptype) + return cls._plugins[ptype] + class PluginMeta(type): plugins = defaultdict(dict) def __new__(cls, name, bases, attrs): @@ -97,5 +140,3 @@ class SourcePlugin(metaclass=PluginMeta): """ logger.debug("SourcePlugin: do_prepare_partition: part: %s", part) -def get_plugins(typen): - return PluginMeta.plugins.get(typen) diff --git a/scripts/lib/wic/plugins/imager/direct.py b/scripts/lib/wic/plugins/imager/direct.py index 7221648fc2..b7e324aab6 100644 --- a/scripts/lib/wic/plugins/imager/direct.py +++ b/scripts/lib/wic/plugins/imager/direct.py @@ -35,8 +35,7 @@ from time import strftime from wic import WicError from wic.filemap import sparse_copy from wic.ksparser import KickStart, KickStartError -from wic.plugin import PluginMgr -from wic.pluginbase import ImagerPlugin +from wic.pluginbase import PluginMgr, ImagerPlugin from wic.utils.misc import get_bitbake_var, exec_cmd, exec_native_cmd logger = logging.getLogger('wic') -- cgit 1.2.3-korg