zephyrproject-rtos / west

West, Zephyr's meta-tool
https://docs.zephyrproject.org/latest/guides/west/index.html
Apache License 2.0
231 stars 122 forks source link

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

Closed RobMeades closed 10 months ago

RobMeades commented 10 months ago

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
RobMeades commented 10 months ago

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.

marc-hb commented 10 months ago

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.

marc-hb commented 10 months ago

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.