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

Dependency installation enhancement #512

Open
ar13pit opened this issue Jul 14, 2020 · 11 comments
Open

Dependency installation enhancement #512

ar13pit opened this issue Jul 14, 2020 · 11 comments

Comments

@ar13pit
Copy link
Contributor

ar13pit commented Jul 14, 2020

Problem
Our current system first uses a install.yaml and then a install.bash to install a target. With this some targets that are needed as a immediate dependency in install.bash are either installed using the tue-install-x-now commands or bypassed totally by using commands like sudo apt-get install ....

The reason being we collect all package manager based targets in a list to be installed at the end of the execution. This was done to avoid installation at every parse of install.yaml and has made a mess in dependency installation with tons of tue-install-now commands.

We need something in between the two approaches.

Possible solutions:

  1. When both install.yaml and install.bash are detected for a target, then flush the current list of targets to be installed at the end by installing them at that instant.
  2. Only install the dependent targets at that instant when both install.yaml and install.bash are present and rest at the end of the execution.

Expected result

  • Removal of all tue-install-x-now commands
  • All target dependencies specified using install.yamlonly
  • Cleaner install.bash with no dependency installations commands
@ar13pit
Copy link
Contributor Author

ar13pit commented Jul 14, 2020

@MatthijsBurgh @Timple need your thoughts on this. As this is the biggest issue when moving to python and extending support for OS other than Ubuntu.

@Timple
Copy link
Member

Timple commented Jul 14, 2020

Current situation is basically declaring dependencies for it's script (albeit nobleo-system-now instead of something like uses)
But I'm okay with the proposed approach if that helps in the tooling. I'm also curious to the timing differences between these to commands:
apt install item1 item2 item3 item4
apt-install item1 item2 && apt install item3 item4


Regarding extending support for anything other than Ubuntu: why? This creates a lot of maintenance work. There is a reason even ROS until recently only supported ubuntu officially.

@ar13pit
Copy link
Contributor Author

ar13pit commented Jul 14, 2020

There won't be any change in the execution logic if we use the second option. But it will simplify the target creation process largely. With the first option, the execution becomes as you mentioned.


I'm not suggesting that we support any other OS other than Ubuntu at the moment. But at Avular I'm first moving melodic packages to noetic and eventually to ROS2. For ROS2 I want to try having this toolkit and extending it to other OS using a plugin based system like colcon does, instead of writing something new. So with a bit of refactor here that should be possible.

@Timple
Copy link
Member

Timple commented Jul 16, 2020

Ah, alright. I'm game!

@Timple
Copy link
Member

Timple commented Jul 22, 2020

In the meantime at another company not that far away...

We've solved the issue by supporting system-now types in the yaml. Want me to backport that?

@ar13pit
Copy link
Contributor Author

ar13pit commented Jul 22, 2020

@Timple Yeah definitely :)

I recently added Docker-in-Docker support for GitLab CI with private repositories, private docker registries and CI config inheritance. Want me to backport that? 😆

@Timple
Copy link
Member

Timple commented Jul 22, 2020

That does sound really interesting!
But we use bitbucket, so not sure how relevant that would be...

@ar13pit
Copy link
Contributor Author

ar13pit commented Jul 22, 2020

What about the CI? BitBucket itself or something else?

@Timple
Copy link
Member

Timple commented Jul 22, 2020

Bitbucket pipelines

@Timple
Copy link
Member

Timple commented Jul 27, 2020

@Timple Yeah definitely :)

#513

As the install yamls are parsed top-to-bottom this makes sure dependencies are installed before required

@MatthijsBurgh
Copy link
Member

I think this is (partly) fixed by #524

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants