From c5a4b3c153bf00ae64edbc9675bf83535d5c8db0 Mon Sep 17 00:00:00 2001 From: Igor Sarkisov Date: Wed, 22 Nov 2023 17:20:47 -0800 Subject: [PATCH] Stop using imp python module. (#2011) imp module has been removed from Python 3.12 b/312559511 --- starboard/build/platform_configuration.py | 20 ++++++++++++++++---- starboard/tools/build.py | 10 ++++++++-- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/starboard/build/platform_configuration.py b/starboard/build/platform_configuration.py index 94d2144c85e1..13268c39d06c 100644 --- a/starboard/build/platform_configuration.py +++ b/starboard/build/platform_configuration.py @@ -13,7 +13,8 @@ # limitations under the License. """Base platform build configuration.""" -import imp # pylint: disable=deprecated-module +import importlib.machinery +import importlib.util import inspect import logging import os @@ -32,8 +33,14 @@ def _GetApplicationConfigurationClass(application_path): if not os.path.isfile(application_configuration_path): return None - application_configuration = imp.load_source('application_configuration', - application_configuration_path) + loader = importlib.machinery.SourceFileLoader('application_configuration', + application_configuration_path) + spec = importlib.util.spec_from_file_location( + 'application_configuration', + application_configuration_path, + loader=loader) + application_configuration = importlib.util.module_from_spec(spec) + loader.exec_module(application_configuration) for name, cls in inspect.getmembers(application_configuration): if not inspect.isclass(cls): continue @@ -137,7 +144,12 @@ def GetLauncher(self): module_path = os.path.abspath( os.path.join(self.GetLauncherPath(), 'launcher.py')) try: - return imp.load_source('launcher', module_path) + loader = importlib.machinery.SourceFileLoader('launcher', module_path) + spec = importlib.util.spec_from_file_location( + 'launcher', module_path, loader=loader) + launcher = importlib.util.module_from_spec(spec) + loader.exec_module(launcher) + return launcher except (IOError, ImportError, RuntimeError) as error: logging.error('Unable to load launcher module from %s.', module_path) logging.error(error) diff --git a/starboard/tools/build.py b/starboard/tools/build.py index ae9fc0438652..4c9f5136b43e 100644 --- a/starboard/tools/build.py +++ b/starboard/tools/build.py @@ -15,8 +15,9 @@ # """Build related constants and helper functions.""" -import imp # pylint: disable=deprecated-module import importlib +import importlib.machinery +import importlib.util import logging import os import sys @@ -94,7 +95,12 @@ def _LoadPlatformModule(platform_name, file_name, function_name): PLATFORMS[platform_name]) module_path = os.path.join(platform_path, file_name) if not _ModuleLoaded('platform_module', module_path): - platform_module = imp.load_source('platform_module', module_path) + loader = importlib.machinery.SourceFileLoader('platform_module', + module_path) + spec = importlib.util.spec_from_file_location( + 'platform_module', module_path, loader=loader) + platform_module = importlib.util.module_from_spec(spec) + loader.exec_module(platform_module) else: platform_module = sys.modules['platform_module'] else: