west: multiple local west project installations
Can I use west to initialize multiple working directories?
I’m experimenting with adding a module and I wanted to a setup so I created a ‘zephyrproject_2’ directory and ran a ‘west init’ command with some additional parameters to use the west.yaml of my url/branch but it returns an error which leads me to think a system can only have one installation:
FATAL ERROR: already in an installation (/home/dleach/work/zephyrproject), aborting
David Leach
NXP Semiconductors phone: +1.210.241.6761 Email: david.leach@...
** PROPRIETARY & COMPANY-CONFIDENTIAL **
|
|
Jan Van Winkel <jan.van_winkel@...>
Hi David, I use west for 3 different projects without any problems but I have to admit that I always created the new projects from a fresh shell, so maybe some environment variables are stuck. Regards, Jan On Fri, Aug 16, 2019 at 6:11 AM David Leach <david.leach@...> wrote:
|
|
Wang, Steven L <steven.l.wang@...>
Hi David: I'm not sure if I understand your question correctly. Do you mean that you created "zephyrproject_2" under "/home/dleach/work/zephyrproject" and run "west init"? If so, I don't think you should create "zephyrproject_2" like this. You should create it in another directory, rather than "/home/dleach/work/zephyrproject". -Steven On 8/16/2019 12:11 PM, David Leach
wrote:
|
|
Paul Sokolovsky
Hello David,
On Fri, 16 Aug 2019 04:11:32 +0000 "David Leach" <david.leach@...> wrote: Can I use west to initialize multiple working directories?My understanding is that *west* installation (i.e. the tool itself) is indeed single/global (though you probably can work that around using Python virtualenv's). But west can definitely manage multiple local "workspaces". I figure the requirement for those is that they don't overlap (which includes containment). For example, I historically had Zephyr checkout under ~/projects-3rdparty/Embedded/Zephyr/ , and when west became unavoidable, I converted that path to a west "workspace". Recently, I wanted to create another workspace, and tried to do that under the same ~/projects-3rdparty/Embedded/Zephyr/, but it failed with a message similar to the above. So, I went to create another workspace under ~/projects-3rdparty/Embedded/zephyr-googleiot/ , which worked.
-- Best Regards, Paul Linaro.org | Open source software for ARM SoCs Follow Linaro: http://www.facebook.com/pages/Linaro http://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog |
|
no. I want to initialize a second Zephyr project area in parallel. So for example:
/home/dleach/work/zephyrproject /home/dleach/work/zephyrproject2
David
From: devel@... <devel@...>
On Behalf Of via Lists.Zephyrproject.Org
Sent: Friday, August 16, 2019 12:52 AM To: devel@... Cc: devel@... Subject: Re: [Zephyr-devel] west: multiple local west project installations
Hi David: I'm not sure if I understand your question correctly. Do you mean that you created "zephyrproject_2" under "/home/dleach/work/zephyrproject" and run "west init"? If so, I don't think you should create "zephyrproject_2" like this. You should create it in another directory, rather than "/home/dleach/work/zephyrproject". -Steven On 8/16/2019 12:11 PM, David Leach wrote:
|
|
Yeah, I'm trying to do some work to add a module when requires 1) adding the module, 2) updating west.yaml, and 3) making changes to the zephyr CMakeLists.txt tree to build the module. But I didn't want to muck with my current project area so hoped that I could just create a new project area.
toggle quoted message
Show quoted text
Unfortunate that it is global if that is true. David -----Original Message-----
From: Paul Sokolovsky <paul.sokolovsky@...> Sent: Friday, August 16, 2019 2:36 AM To: David Leach <david.leach@...> Cc: zephyr-devel <zephyr-devel@...> Subject: Re: [Zephyr-devel] west: multiple local west project installations Hello David, On Fri, 16 Aug 2019 04:11:32 +0000 "David Leach" <david.leach@...> wrote: Can I use west to initialize multiple working directories?My understanding is that *west* installation (i.e. the tool itself) is indeed single/global (though you probably can work that around using Python virtualenv's). But west can definitely manage multiple local "workspaces". I figure the requirement for those is that they don't overlap (which includes containment). For example, I historically had Zephyr checkout under ~/projects-3rdparty/Embedded/Zephyr/ , and when west became unavoidable, I converted that path to a west "workspace". Recently, I wanted to create another workspace, and tried to do that under the same ~/projects-3rdparty/Embedded/Zephyr/, but it failed with a message similar to the above. So, I went to create another workspace under ~/projects-3rdparty/Embedded/zephyr-googleiot/ , which worked.
-- Best Regards, Paul Linaro.org | Open source software for ARM SoCs Follow Linaro: https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.facebook.com%2Fpages%2FLinaro&data=02%7C01%7Cdavid.leach%40nxp.com%7Ce9d2c87148654f168c7908d7221c5493%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637015377391350705&sdata=8HqSPZCEGE8sXzLzJ3J6R3%2BUfBLCrt6EQ3PMZuCBILw%3D&reserved=0 https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Ftwitter.com%2F%23!%2Flinaroorg&data=02%7C01%7Cdavid.leach%40nxp.com%7Ce9d2c87148654f168c7908d7221c5493%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637015377391350705&sdata=1hfXId%2Ffe70iNsIyCJ2xAUKNephzxux%2BiN52rSDe8mQ%3D&reserved=0 - https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.linaro.org%2Flinaro-blog&data=02%7C01%7Cdavid.leach%40nxp.com%7Ce9d2c87148654f168c7908d7221c5493%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637015377391350705&sdata=sFpqi%2BGwnrcW9ya8h3VZf9lXI4NnTYu0BqwOyOkWILI%3D&reserved=0 |
|
Carles Cufi
I am not quite sure I understand David.
“west init” initializes an installation. It creates a top-level folder which then contains a .west/ subfolder and a bunch of other folders that correspond to the manifest repo and west projects. Once you are inside that installation you cannot really refer to another installation, but you *can* switch the path to the manifest repository by using your ~/.westconfig or the “west config” command. Say you have a zephyrproject/ top-level installation folder and there’s a zephyr/ folder inside it, at the same level as the .west/ folder. Say also that you have a myrepo/ folder at the same folder level that contains a myrepo/west.yml with your own manifest. Then you can do:
west config manifest.path zephyr (&& west update) west config manifest.path myrepo (&& west update)
to switch between manifest repos while remaining in a single installation.
Carles
From: devel@... <devel@...>
On Behalf Of David Leach via Lists.Zephyrproject.Org
Sent: 16 August 2019 15:58 To: steven.l.wang@...; devel@... Cc: devel@... Subject: Re: [Zephyr-devel] west: multiple local west project installations
no. I want to initialize a second Zephyr project area in parallel. So for example:
/home/dleach/work/zephyrproject /home/dleach/work/zephyrproject2
David
Hi David: I'm not sure if I understand your question correctly. Do you mean that you created "zephyrproject_2" under "/home/dleach/work/zephyrproject" and run "west init"? If so, I don't think you should create "zephyrproject_2" like this. You should create it in another directory, rather than "/home/dleach/work/zephyrproject". -Steven On 8/16/2019 12:11 PM, David Leach wrote:
|
|
I want to be able to have multiple installations on my system. To expand out my example:
I understand that I can’t instantiate a separate project directory tree from within a west created project area but I think I should be able to create multiple project directory trees. But the indication is that using west commits your whole machine to a single project.
David
From: Cufi, Carles <Carles.Cufi@...>
Sent: Friday, August 16, 2019 9:08 AM To: David Leach <david.leach@...>; steven.l.wang@...; devel@... Subject: RE: [Zephyr-devel] west: multiple local west project installations
I am not quite sure I understand David.
“west init” initializes an installation. It creates a top-level folder which then contains a .west/ subfolder and a bunch of other folders that correspond to the manifest repo and west projects. Once you are inside that installation you cannot really refer to another installation, but you *can* switch the path to the manifest repository by using your ~/.westconfig or the “west config” command. Say you have a zephyrproject/ top-level installation folder and there’s a zephyr/ folder inside it, at the same level as the .west/ folder. Say also that you have a myrepo/ folder at the same folder level that contains a myrepo/west.yml with your own manifest. Then you can do:
west config manifest.path zephyr (&& west update) west config manifest.path myrepo (&& west update)
to switch between manifest repos while remaining in a single installation.
Carles
From:
devel@... <devel@...>
On Behalf Of David Leach via Lists.Zephyrproject.Org
no. I want to initialize a second Zephyr project area in parallel. So for example:
/home/dleach/work/zephyrproject /home/dleach/work/zephyrproject2
David
Hi David: I'm not sure if I understand your question correctly. Do you mean that you created "zephyrproject_2" under "/home/dleach/work/zephyrproject" and run "west init"? If so, I don't think you should create "zephyrproject_2" like this. You should create it in another directory, rather than "/home/dleach/work/zephyrproject". -Steven On 8/16/2019 12:11 PM, David Leach wrote:
|
|
Carles Cufi
That is actually incorrect, you can have as many installations as you want. In your case:
cd ~/work west init zephyrproject west init mytestzephyrproject cd zephyrproject west update cd ../mytestzephyrproject west update
and then do whatever you want in each of the installations, and choose one by either going into one:
vim west.yml <edit> west update // will only affect mytestzephyrproject and so on.
I am not sure what makes you think that you cannot have multiple west/zephyr installations in your system, I have several myself without any problems at all. Note that the zephyr.base-prefer setting will affect how ZEPHYR_BASE is determined though: https://docs.zephyrproject.org/latest/guides/west/config.html
Carles
From: David Leach <david.leach@...>
Sent: 16 August 2019 17:12 To: Cufi, Carles <Carles.Cufi@...>; steven.l.wang@...; devel@... Subject: RE: [Zephyr-devel] west: multiple local west project installations
I want to be able to have multiple installations on my system. To expand out my example:
I understand that I can’t instantiate a separate project directory tree from within a west created project area but I think I should be able to create multiple project directory trees. But the indication is that using west commits your whole machine to a single project.
David
From: Cufi, Carles <Carles.Cufi@...>
I am not quite sure I understand David.
“west init” initializes an installation. It creates a top-level folder which then contains a .west/ subfolder and a bunch of other folders that correspond to the manifest repo and west projects. Once you are inside that installation you cannot really refer to another installation, but you *can* switch the path to the manifest repository by using your ~/.westconfig or the “west config” command. Say you have a zephyrproject/ top-level installation folder and there’s a zephyr/ folder inside it, at the same level as the .west/ folder. Say also that you have a myrepo/ folder at the same folder level that contains a myrepo/west.yml with your own manifest. Then you can do:
west config manifest.path zephyr (&& west update) west config manifest.path myrepo (&& west update)
to switch between manifest repos while remaining in a single installation.
Carles
From:
devel@... <devel@...>
On Behalf Of David Leach via Lists.Zephyrproject.Org
no. I want to initialize a second Zephyr project area in parallel. So for example:
/home/dleach/work/zephyrproject /home/dleach/work/zephyrproject2
David
Hi David: I'm not sure if I understand your question correctly. Do you mean that you created "zephyrproject_2" under "/home/dleach/work/zephyrproject" and run "west init"? If so, I don't think you should create "zephyrproject_2" like this. You should create it in another directory, rather than "/home/dleach/work/zephyrproject". -Steven On 8/16/2019 12:11 PM, David Leach wrote:
|
|
Carles,
See the following:
dleach@dleach-test:~/work$ west init zephyrproject2 FATAL ERROR: already in an installation (/home/dleach/work/zephyrproject), aborting
From: Cufi, Carles <Carles.Cufi@...>
Sent: Friday, August 16, 2019 10:23 AM To: David Leach <david.leach@...>; steven.l.wang@...; devel@... Subject: RE: [Zephyr-devel] west: multiple local west project installations
That is actually incorrect, you can have as many installations as you want. In your case:
cd ~/work west init zephyrproject west init mytestzephyrproject cd zephyrproject west update cd ../mytestzephyrproject west update
and then do whatever you want in each of the installations, and choose one by either going into one:
vim west.yml <edit> west update // will only affect mytestzephyrproject and so on.
I am not sure what makes you think that you cannot have multiple west/zephyr installations in your system, I have several myself without any problems at all. Note that the zephyr.base-prefer setting will affect how ZEPHYR_BASE is determined though: https://docs.zephyrproject.org/latest/guides/west/config.html
Carles
From: David Leach <david.leach@...>
I want to be able to have multiple installations on my system. To expand out my example:
I understand that I can’t instantiate a separate project directory tree from within a west created project area but I think I should be able to create multiple project directory trees. But the indication is that using west commits your whole machine to a single project.
David
From: Cufi, Carles <Carles.Cufi@...>
I am not quite sure I understand David.
“west init” initializes an installation. It creates a top-level folder which then contains a .west/ subfolder and a bunch of other folders that correspond to the manifest repo and west projects. Once you are inside that installation you cannot really refer to another installation, but you *can* switch the path to the manifest repository by using your ~/.westconfig or the “west config” command. Say you have a zephyrproject/ top-level installation folder and there’s a zephyr/ folder inside it, at the same level as the .west/ folder. Say also that you have a myrepo/ folder at the same folder level that contains a myrepo/west.yml with your own manifest. Then you can do:
west config manifest.path zephyr (&& west update) west config manifest.path myrepo (&& west update)
to switch between manifest repos while remaining in a single installation.
Carles
From:
devel@... <devel@...>
On Behalf Of David Leach via Lists.Zephyrproject.Org
no. I want to initialize a second Zephyr project area in parallel. So for example:
/home/dleach/work/zephyrproject /home/dleach/work/zephyrproject2
David
Hi David: I'm not sure if I understand your question correctly. Do you mean that you created "zephyrproject_2" under "/home/dleach/work/zephyrproject" and run "west init"? If so, I don't think you should create "zephyrproject_2" like this. You should create it in another directory, rather than "/home/dleach/work/zephyrproject". -Steven On 8/16/2019 12:11 PM, David Leach wrote:
|
|
For historical tracking, the error is because I have ZEPHYR_BASE environment variable set. Carles and I agree that the error message is not very helpful.
David
From: devel@... <devel@...>
On Behalf Of David Leach via Lists.Zephyrproject.Org
Sent: Friday, August 16, 2019 10:27 AM To: Cufi, Carles <Carles.Cufi@...>; steven.l.wang@...; devel@... Cc: devel@... Subject: Re: [Zephyr-devel] west: multiple local west project installations
Carles,
See the following:
dleach@dleach-test:~/work$ west init zephyrproject2 FATAL ERROR: already in an installation (/home/dleach/work/zephyrproject), aborting
From: Cufi, Carles <Carles.Cufi@...>
That is actually incorrect, you can have as many installations as you want. In your case:
cd ~/work west init zephyrproject west init mytestzephyrproject cd zephyrproject west update cd ../mytestzephyrproject west update
and then do whatever you want in each of the installations, and choose one by either going into one:
vim west.yml <edit> west update // will only affect mytestzephyrproject and so on.
I am not sure what makes you think that you cannot have multiple west/zephyr installations in your system, I have several myself without any problems at all. Note that the zephyr.base-prefer setting will affect how ZEPHYR_BASE is determined though: https://docs.zephyrproject.org/latest/guides/west/config.html
Carles
From: David Leach <david.leach@...>
I want to be able to have multiple installations on my system. To expand out my example:
I understand that I can’t instantiate a separate project directory tree from within a west created project area but I think I should be able to create multiple project directory trees. But the indication is that using west commits your whole machine to a single project.
David
From: Cufi, Carles <Carles.Cufi@...>
I am not quite sure I understand David.
“west init” initializes an installation. It creates a top-level folder which then contains a .west/ subfolder and a bunch of other folders that correspond to the manifest repo and west projects. Once you are inside that installation you cannot really refer to another installation, but you *can* switch the path to the manifest repository by using your ~/.westconfig or the “west config” command. Say you have a zephyrproject/ top-level installation folder and there’s a zephyr/ folder inside it, at the same level as the .west/ folder. Say also that you have a myrepo/ folder at the same folder level that contains a myrepo/west.yml with your own manifest. Then you can do:
west config manifest.path zephyr (&& west update) west config manifest.path myrepo (&& west update)
to switch between manifest repos while remaining in a single installation.
Carles
From:
devel@... <devel@...>
On Behalf Of David Leach via Lists.Zephyrproject.Org
no. I want to initialize a second Zephyr project area in parallel. So for example:
/home/dleach/work/zephyrproject /home/dleach/work/zephyrproject2
David
Hi David: I'm not sure if I understand your question correctly. Do you mean that you created "zephyrproject_2" under "/home/dleach/work/zephyrproject" and run "west init"? If so, I don't think you should create "zephyrproject_2" like this. You should create it in another directory, rather than "/home/dleach/work/zephyrproject". -Steven On 8/16/2019 12:11 PM, David Leach wrote:
|
|
Bolivar, Marti
"David Leach via Lists.Zephyrproject.Org"
<david.leach=nxp.com@...> writes: For historical tracking, the error is because I have ZEPHYR_BASEFTR, I rarely have ZEPHYR_BASE set in my parent environment because I only need it to run sanitycheck, which I usually do in a new terminal window since it takes forever. All the usual west-based workflows (build, flash, debug, etc.) work just fine without ZEPHYR_BASE set as long as you are running them from a directory in the installation. Since I don't keep my applications in ~, but rather in ~/zephyrproject, this works for me and I never run into this problem. I have a hopefully more helpful error message for people who do run into this proposed here: https://github.com/zephyrproject-rtos/west/pull/290 This PR adds the following to the error message: Note: In your environment, ZEPHYR_BASE is set to: <whatever> This forces west to search for an installation there. Try unsetting ZEPHYR_BASE and re-running this command. If you have some suggestions, please feel free to comment there. Sorry for the trouble. Thanks, Marti |
|