diff --git a/scripts/requirements-base.txt b/scripts/requirements-base.txt index ce3d29cf489..c27eec087b1 100644 --- a/scripts/requirements-base.txt +++ b/scripts/requirements-base.txt @@ -29,7 +29,7 @@ anytree intelhex # it's west -west>=0.10.1 +west>=0.14.0 # used for windows based 'menuconfig' # "win32" is used for 64-bit Windows as well diff --git a/scripts/zephyr_module.py b/scripts/zephyr_module.py index bb234094319..938d0e4cd5b 100755 --- a/scripts/zephyr_module.py +++ b/scripts/zephyr_module.py @@ -521,15 +521,22 @@ def west_projects(manifest = None): # (and thus maybe not installed) # if user is providing a specific modules list. try: - from west.manifest import Manifest, \ - ManifestImportFailed, MalformedManifest, ManifestVersionError - from west.configuration import MalformedConfig - from west.util import WestNotFound - from west.version import __version__ as WestVersion + from west.manifest import Manifest except ImportError: # West is not installed, so don't return any projects. return None + # If west *is* installed, we need all of the following imports to + # work. West versions that are excessively old may fail here: + # west.configuration.MalformedConfig was + # west.manifest.MalformedConfig until west v0.14.0, for example. + # These should be hard errors. + from west.manifest import \ + ManifestImportFailed, MalformedManifest, ManifestVersionError + from west.configuration import MalformedConfig + from west.util import WestNotFound + from west.version import __version__ as WestVersion + from packaging import version try: if not manifest: