scripts: Update to use exec_module() instead of load_module()

This is deprecated in python 3.12 and Fedora 35 is throwing warnings so
move to the new functions.

(From OE-Core rev: 655cd3f614d736416eab0d708b7c49674bf5c977)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2022-01-04 23:06:50 +00:00
parent 6209684ca6
commit fc2bc42eec
2 changed files with 11 additions and 4 deletions

View File

@ -18,7 +18,8 @@ import sys
import tempfile import tempfile
import threading import threading
import importlib import importlib
from importlib import machinery import importlib.machinery
import importlib.util
class KeepAliveStreamHandler(logging.StreamHandler): class KeepAliveStreamHandler(logging.StreamHandler):
def __init__(self, keepalive=True, **kwargs): def __init__(self, keepalive=True, **kwargs):
@ -82,7 +83,9 @@ def load_plugins(logger, plugins, pluginpath):
logger.debug('Loading plugin %s' % name) logger.debug('Loading plugin %s' % name)
spec = importlib.machinery.PathFinder.find_spec(name, path=[pluginpath] ) spec = importlib.machinery.PathFinder.find_spec(name, path=[pluginpath] )
if spec: if spec:
return spec.loader.load_module() mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
return mod
def plugin_name(filename): def plugin_name(filename):
return os.path.splitext(os.path.basename(filename))[0] return os.path.splitext(os.path.basename(filename))[0]

View File

@ -9,9 +9,11 @@ __all__ = ['ImagerPlugin', 'SourcePlugin']
import os import os
import logging import logging
import types
from collections import defaultdict from collections import defaultdict
from importlib.machinery import SourceFileLoader import importlib
import importlib.util
from wic import WicError from wic import WicError
from wic.misc import get_bitbake_var from wic.misc import get_bitbake_var
@ -54,7 +56,9 @@ class PluginMgr:
mname = fname[:-3] mname = fname[:-3]
mpath = os.path.join(ppath, fname) mpath = os.path.join(ppath, fname)
logger.debug("loading plugin module %s", mpath) logger.debug("loading plugin module %s", mpath)
SourceFileLoader(mname, mpath).load_module() spec = importlib.util.spec_from_file_location(mname, mpath)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return PLUGINS.get(ptype) return PLUGINS.get(ptype)