Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Skipping dependency strange behavior #50

Open
eliapellegrino opened this issue Jul 19, 2022 · 1 comment
Open

Skipping dependency strange behavior #50

eliapellegrino opened this issue Jul 19, 2022 · 1 comment
Labels
bug Something isn't working good first issue Good for newcomers

Comments

@eliapellegrino
Copy link

After cleaning a forest workspace

tree@tree-comexpress1:~/circulo9_ws2$ rm -rf build/*
tree@tree-comexpress1:~/circulo9_ws2$ rm -rf install/*

and try to grow a recipe with some dependency, a strange behavior happened:

tree@tree-comexpress1:~/circulo9_ws2$ forest grow all -j8 -m xeno
building all with 8 parallel jobs
[all] depends on xbot2 -> not found, installing..
..[xbot2] depends on XBotInterface -> found
..[xbot2] depends on matlogger2 -> found
..[xbot2] depends on gazebo -> found
..[xbot2] depends on matio -> not found, installing..
....[matio] libmatio-dev already installed
....[matio] no build action required
....[matio] ok
..[xbot2] depends on xbot_msgs -> found
..[xbot2] depends on orocos_kdl -> found
..[xbot2] depends on eigen_conversions -> found
..[xbot2] depends on urdf -> found
..[xbot2] depends on tf2_kdl -> found
..[xbot2] depends on tf -> found
..[xbot2] depends on tf2_eigen -> found
..[xbot2] source code  already exists, skipping clone
..[xbot2] running cmake...
..[xbot2] building...
..[xbot2] ok
[all] depends on circulo9_device -> build found, building..
..[circulo9_device] skipping dependency ec_xbot2_client   ** THIS DEPENDECY SHOULD NOT BE SKIPPED **
..[circulo9_device] depends on xbot2 -> build found, building..
....[xbot2] skipping dependency XBotInterface
....[xbot2] skipping dependency matlogger2
....[xbot2] skipping dependency gazebo
....[xbot2] skipping dependency matio
....[xbot2] skipping dependency xbot_msgs
....[xbot2] skipping dependency orocos_kdl
....[xbot2] skipping dependency eigen_conversions
....[xbot2] skipping dependency urdf
....[xbot2] skipping dependency tf2_kdl
....[xbot2] skipping dependency tf
....[xbot2] skipping dependency tf2_eigen
....[xbot2] source code  already exists, skipping clone
....[xbot2] already built, skipping
....[xbot2] ok

As you can see, the dependency ec_xbot2_client should not be skipped.
Trying again to do the exact same thing, bring to a different result, where the dependency is not skipped. It seems a random behavior

tree@tree-comexpress1:~/circulo9_ws2$ rm -rf build/*
tree@tree-comexpress1:~/circulo9_ws2$ rm -rf install/*
tree@tree-comexpress1:~/circulo9_ws2$ ls build/
tree@tree-comexpress1:~/circulo9_ws2$ ls install/
tree@tree-comexpress1:~/circulo9_ws2$ forest grow all -j8 -m xeno
building all with 8 parallel jobs
[all] depends on xbot2 -> not found, installing..
..[xbot2] depends on XBotInterface -> found
..[xbot2] depends on matlogger2 -> found
..[xbot2] depends on gazebo -> found
..[xbot2] depends on matio -> not found, installing..
....[matio] libmatio-dev already installed
....[matio] no build action required
....[matio] ok
..[xbot2] depends on xbot_msgs -> found
..[xbot2] depends on orocos_kdl -> found
..[xbot2] depends on eigen_conversions -> found
..[xbot2] depends on urdf -> found
..[xbot2] depends on tf2_kdl -> found
..[xbot2] depends on tf -> found
..[xbot2] depends on tf2_eigen -> found
..[xbot2] source code  already exists, skipping clone
..[xbot2] running cmake...
..[xbot2] building...


..[xbot2] ok
[all] depends on circulo9_device -> not found, installing..
..[circulo9_device] depends on ec_xbot2_client -> not found, installing..
....[ec_xbot2_client] depends on xbot2 -> build found, building..
......[xbot2] skipping dependency XBotInterface
......[xbot2] skipping dependency matlogger2
......[xbot2] skipping dependency gazebo
......[xbot2] skipping dependency matio
......[xbot2] skipping dependency xbot_msgs
......[xbot2] skipping dependency orocos_kdl
......[xbot2] skipping dependency eigen_conversions
......[xbot2] skipping dependency urdf
......[xbot2] skipping dependency tf2_kdl
......[xbot2] skipping dependency tf
......[xbot2] skipping dependency tf2_eigen
......[xbot2] source code  already exists, skipping clone
......[xbot2] already built, skipping
......[xbot2] ok

@eliapellegrino eliapellegrino added bug Something isn't working good first issue Good for newcomers labels Jul 19, 2022
@MarcoRuzzon
Copy link
Collaborator

I find somehow confusing that the circulo9_device build folder is found, even though the folder should be empty.
Since Forest does not build dependencies of projects already built by it, ec_xbot2_client build is skipped.

tree@tree-comexpress1:~/circulo9_ws2$ rm -rf build/*   <--- SHOULD EMPTY THE BUILD FOLDER
tree@tree-comexpress1:~/circulo9_ws2$ rm -rf install/*

tree@tree-comexpress1:~/circulo9_ws2$ forest grow all -j8 -m xeno
building all with 8 parallel jobs
[all] depends on xbot2 -> not found, installing..
..[xbot2] depends on XBotInterface -> found
..[xbot2] depends on matlogger2 -> found
..[xbot2] depends on gazebo -> found
..[xbot2] depends on matio -> not found, installing..
....[matio] libmatio-dev already installed
....[matio] no build action required
....[matio] ok
..[xbot2] depends on xbot_msgs -> found
..[xbot2] depends on orocos_kdl -> found
..[xbot2] depends on eigen_conversions -> found
..[xbot2] depends on urdf -> found
..[xbot2] depends on tf2_kdl -> found
..[xbot2] depends on tf -> found
..[xbot2] depends on tf2_eigen -> found
..[xbot2] source code  already exists, skipping clone
..[xbot2] running cmake...
..[xbot2] building...
..[xbot2] ok
[all] depends on circulo9_device -> build found, building..   <-- FOUND BUILD FOLDER OF circulo9_device
..[circulo9_device] skipping dependency ec_xbot2_client   <-- THIS DEPENDENCY SHOULD BE SKIPPED 
..[circulo9_device] depends on xbot2 -> build found, building..
....[xbot2] skipping dependency XBotInterface
....[xbot2] skipping dependency matlogger2
....[xbot2] skipping dependency gazebo
....[xbot2] skipping dependency matio
....[xbot2] skipping dependency xbot_msgs
....[xbot2] skipping dependency orocos_kdl
....[xbot2] skipping dependency eigen_conversions
....[xbot2] skipping dependency urdf
....[xbot2] skipping dependency tf2_kdl
....[xbot2] skipping dependency tf
....[xbot2] skipping dependency tf2_eigen
....[xbot2] source code  already exists, skipping clone
....[xbot2] already built, skipping
....[xbot2] ok

The expected behaviour is the second one.

[all] depends on circulo9_device -> not found, installing..
..[circulo9_device] depends on ec_xbot2_client -> not found, installing..

The build folder existence check is done only in src/forest/common/install.py and it's pretty straightforward. I don't see how this could give false positives.

In case this should happen again report it with re result of la command in the build folder.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

2 participants