wic: align layer plugin path

wic look for external layer source plugin under scripts/lib/
while other tools look for lib/.

allow wic to check for source plugin at both scripts/lib/ and
lib/ to align with other tools while avoid breaking any existing
source plugin in external layer.

[YOCTO #13056]

(From OE-Core rev: 8351cb19e8a83157143b1df61cd9bbb71282e9fc)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 986baff26bd96a6265f5fe2d631818fff9f66374)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Lee Chee Yang
2020-04-01 14:39:56 +08:00
committed by Richard Purdie
parent 4d888ebbda
commit 51586b5612
2 changed files with 8 additions and 6 deletions

View File

@@ -523,7 +523,8 @@ DESCRIPTION
Source plugins can also be implemented and added by external
layers - any plugins found in a scripts/lib/wic/plugins/source/
directory in an external layer will also be made available.
or lib/wic/plugins/source/ directory in an external layer will
also be made available.
When the wic implementation needs to invoke a partition-specific
implementation, it looks for the plugin that has the same name as

View File

@@ -18,7 +18,7 @@ from wic.misc import get_bitbake_var
PLUGIN_TYPES = ["imager", "source"]
SCRIPTS_PLUGIN_DIR = "scripts/lib/wic/plugins"
SCRIPTS_PLUGIN_DIR = ["scripts/lib/wic/plugins", "lib/wic/plugins"]
logger = logging.getLogger('wic')
@@ -38,10 +38,11 @@ class PluginMgr:
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)
for script_plugin_dir in SCRIPTS_PLUGIN_DIR:
path = os.path.join(layer_path, script_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)
if ptype not in PLUGINS:
# load all ptype plugins