zephyrproject-rtos/west

Moving from Zephyr 3.2.99 to 3.5.99: `west` cannot find its configuration file

RobMeades opened this issue · 3 comments

We are trying to move from nrfConnect 2.3.0/Zephyr 3.2.99 to nrfConnect 2.5.0/Zephyr 3.5.99.

The new version requires west 0.13 instead of the west 0.12 that we had previously, which is fine, we have updated west to 0.13.

However, after doing that, the installation process fails with west saying "RuntimeError: local configuration file not found" (full dump below). There is no west, .west or .westconfig directory anywhere that I can find on my disk; this is on Windows (10) and I have specifically checked my user directory, the ProgramData directory and the directory where I happen to be running the installation from. I have tried uninstalling and reinstalling west but that doesn't seem to have helped.

How can I make west happy?

  File "c:\program files\python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\program files\python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Program Files\Python39\Scripts\west.exe\__main__.py", line 7, in <module>
  File "c:\program files\python39\lib\site-packages\west\app\main.py", line 786, in main
    app.run(argv or sys.argv[1:])
  File "c:\program files\python39\lib\site-packages\west\app\main.py", line 101, in run
    self.load_manifest()
  File "c:\program files\python39\lib\site-packages\west\app\main.py", line 119, in load_manifest
    self.manifest = Manifest.from_topdir(topdir=self.topdir,
  File "c:\program files\python39\lib\site-packages\west\manifest.py", line 1105, in from_topdir
    return Manifest(topdir=topdir, config=config,
  File "c:\program files\python39\lib\site-packages\west\manifest.py", line 1370, in __init__
    self._ctx = self._top_level_init(source_data,
  File "c:\program files\python39\lib\site-packages\west\manifest.py", line 1712, in _top_level_init
    manifest_path_option = get_option('manifest.path')
  File "c:\program files\python39\lib\site-packages\west\manifest.py", line 1709, in get_option
    return config.get(option, default=default,
  File "c:\program files\python39\lib\site-packages\west\configuration.py", line 169, in get
    return self._get(lambda cf: cf.get(option), default, configfile)
  File "c:\program files\python39\lib\site-packages\west\configuration.py", line 208, in _get
    for cf in self._whence(configfile):
  File "c:\program files\python39\lib\site-packages\west\configuration.py", line 229, in _whence
    raise RuntimeError('local configuration file not found')
RuntimeError: local configuration file not found

Hmmm, seems that, if this happens, you have to delete the previously-cloned nrfconnectsdk-v2.5.0 directory before trying to install again: looks like an nrfconnectsdk-v2.5.0\.west\manifest-tmp is created inside it as part of the [failed] installation process which somehow doesn't play will with version 0.12 of west?

Anyway, deleting and re-cloning fixed it for me.

I don't know anything about nrfConnect and its installation process but for future reference I can summarize the failure shown in this stack trace.

What happened there is that west looked for a manifest as part of an initialization process. It didn't find any. It looked for:

[manifest]
path = ...

inside the file: workspace/.west/config but there was no such file.

This type of error usually looks better ("FATAL ERROR: no west workspace found") but initialization/bootstrap creates some interesting chicken-and-egg challenges.

looks like an nrfconnectsdk-v2.5.0.west\manifest-tmp is created inside it as part of the [failed] installation process

This looks like:

somehow doesn't play will with version 0.12 of west?

I could be wrong but I doubt the west version matters that much.