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

Rethink pre-compiled libController submodule #482

Closed
ygoumaz opened this issue Oct 11, 2022 · 6 comments · Fixed by #508
Closed

Rethink pre-compiled libController submodule #482

ygoumaz opened this issue Oct 11, 2022 · 6 comments · Fixed by #508
Labels
cleanup enhancement New feature or request question Further information is requested

Comments

@ygoumaz
Copy link
Contributor

ygoumaz commented Oct 11, 2022

Robot windows and other dynamic libraries can't be used with WSL (WSL compatibility introduced in #481), because the libController is executed on Linux, while the requested libraries are distributed with Webots (running on Windows in this case). This implies that such libraries should be distributed with the webots_ros2 package, or at least in the pre-compiled libController repository.

Moreover, the current libController repository is containing binaries, which is not a very clean solution.

Here are some discussed solutions:

  • Refactor the libController repository to make it a lighter but similar architecture as the Webots installation folder, containing only the necessary compiled libraries.
  • Replace the libController repository by new nightly-built packages containing the libController and other useful libraries. These could be distributed with classic Webots nightly-builds as tarballs for example. webots_ros2 could download this package to replace the libController sub-module.
  • Replace the libController repository sub-module by the download of the tarball of the last Webots release. All the missing libraries would be present in the webots_ros2 package. Nightly builds could be used for more up-to-date versions of libraries.
@ygoumaz ygoumaz added enhancement New feature or request question Further information is requested cleanup labels Oct 11, 2022
@lukicdarkoo
Copy link
Member

This is a very tough problem to solve. There are two points to consider:

  • All files necessary for compiling the ROS packages must be in the Git repository. This is a limitation imposed by the ROS buildfarm. This means that points 2 and 3 you mentioned would probably not be possible.
  • Initially, Webots was shipped with the package, but the Webots package got too big for the ROS buildfarm. Given that Webots got way smaller in size since R2021b you could consider shipping Webots as a ROS package. Having Webots as a ROS package would remove the need to distrubute libController. Furthermore, it would be much more convenient for users as Webots would be automatically installed.

@ygoumaz
Copy link
Contributor Author

ygoumaz commented Oct 11, 2022

Another solution could be to replace the libController submodule with the webots repository. The ROS package would compile the necessary files (controllers and libraries). We can also choose to distribute only the necessary files from the repository to avoid having a package too big for the buildfarm.

@lukicdarkoo
Copy link
Member

Another solution could be to replace the libController submodule with the webots repository.

The webots repository is over 4GB in size, it will likely cause problems in the buildfarm. We should check for a way to distribute Webots as rosdep. Then, the webots package would be a dependency of webots_ros2.

@ygoumaz
Copy link
Contributor Author

ygoumaz commented Oct 11, 2022

This is also an option. But isn't there a way to specify which files of the sub-module we want to distribute? In this case we could keep only files needed to build the libController, as well as other useful libraries. This would decrease a lot the size of the included files.

@lukicdarkoo
Copy link
Member

But isn't there a way to specify which files of the sub-module we want to distribute?

Unfortunately, I don't think it is possible.

@ygoumaz
Copy link
Contributor Author

ygoumaz commented Dec 29, 2022

I am closing this issue, as we resolved the problem in #508. The libcontroller sources are now directly commited on this repository and updated with a workflow every night if changes occured in the Webots repository.

@ygoumaz ygoumaz closed this as completed Dec 29, 2022
@ygoumaz ygoumaz linked a pull request Dec 29, 2022 that will close this issue
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cleanup enhancement New feature or request question Further information is requested
Development

Successfully merging a pull request may close this issue.

2 participants