-
Notifications
You must be signed in to change notification settings - Fork 0
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
Set a minimum version policy for dependencies at a global or project-wide level #7
Comments
An example of a breaking change in YARP, should we conform to the always-latest-release-policy: the new |
I agree on the fact that this is an important issue. Where would this go? Perhaps on an individual file in the root of installation-guides? Alternatives would include https://github.com/roboticslab-uc3m/best-practices and perhaps a developer manual as suggested in #12, but maybe there is where it can have most visibility. |
If I understood correctly, installation-guides only specifies how a dependency should be installed, and then each repo specifies somewhere within that repo which dependencies are needed for that concrete repo. In that case, the minimum version should be specified along each dependency within that repo. Note that several entries for the same dependency might be required in installation-guides, one per version. |
Another YARP breaking change: roboticslab-uc3m/yarp-devices@b342044. |
In a recent meeting, @jgvictores and I concluded that we could just specify the minimum version for each dependency along its name on each repo's installation guide (see David's comment), dropping the idea of a master table on a separate .md file that would hold this information. That is, for teo-body/doc/teo_body_install_on_debian_6.md#install-the-software, this would simply result in:
(version numbers were chosen only for illustrative purposes) The final format may vary (I'd rather use parentheses and no |
Okay, I've been populating teo_body_install_on_debian_6.md.
Regarding YARP, here are the facts:
PS: I'll be working with |
I think we should be working with the gitflow in our minds:
This, of course, has the problem of maintaining two software versions with their dependencies in the robot. There are many choices to solve this problem, although all of them might not be suitable for Teo:
|
I'm with option 3, too. @David-Estevez please keep in mind that the ASIBOT's PC is actually a Roboard (RB-110, https://www.robot-r-us.com/vmchk/microcontroller/roboard-rb-110-kit.html). We are nearly out of space ATM for installing additional software (Docker/WMs weigh too much), and I'm not sure yet we can go past the current 8 GB memory size for the Micro-SD card. |
@PeterBowman What about two Micro-SD cards, one for develop and other for master? Is that feasible or too crazy? |
@David-Estevez We've tried to implement this on TEO (see roboticslab-uc3m/yarp-devices#43) but haven't been doing this, it just turns out not to be very practical. PS: Regarding YARP version on teo-body, I've started roboticslab-uc3m/yarp-devices#89. |
@David-Estevez there is only one slot, and the USB is already used by the WiFi adapter. I also forgot to mention that ASIBOT's casing is quite hard to remove, that means that any hardware change (even as simple as changing the SD) would require some work and attention to:
|
I see, it seems that working with robots is a little bit more difficult than working with PCs 😅 |
A quite complex repo in terms of installation and versions that has been updated is the current teo-body. Can we conclude this is the accepted way to document dependencies and their versions, and can close the issue once the following two steps are done?
|
@jgvictores automated installation tools means |
@David-Estevez Yes, I meant |
So, if I have understood correctly:
|
Please note there was a misunderstanding here. I was referring to the case where the entire repository or all its dependencies could be simultaneously compiled/installed with a single line (via some automated script, PPA or similar). However, having an automated script should not exclude a best practice of documenting how to install dependencies and compile/install from source. For dependencies, I still support creating a new page on roboticslab-uc3m/installation-guides. There are several reasons for this:
Other than being tedious (and the |
@David-Estevez I was told that the
BTW another important change in YARP, I wonder if it could break anything on our end: robotology/community#187. |
@PeterBowman That is something I am still considering. But there are some dependencies that require certain development version or compiling one specific commit of the required library to have some cutting-edge functionality. The project also involves C++, so CMake is required at some point to compile the C++ parts, so this has to be taken into account. We are in a bit of a hurry now since we have an approaching deadline, so probably I won't be dealing with textiles dependencies / installation until next month. Then I will deal with the Spring cleaning project in textiles. |
See https://pip.pypa.io/en/stable/reference/pip_install/#git. |
Unfortunately, in my case it is a CMake based repository split into two different repositories (OpenCV 3 with contrib, Python 3 support and fix for SVM_load, see https://github.com/roboticslab-uc3m/installation-guides/blob/develop/install-opencv.md). Nevertheless that reference page is an excellent resource for all my incoming work on simplifying installation, thanks! |
As a side note: @jgvictores and I had concluded that all CMake list files may bump the required minimum version to 2.8.11 (now using 2.8.9 due to YCM or even 2.6 due to old project generators). This is guaranteed to work on Trusty onwards, even Precise systems may find appropriate packages in the kalakris PPA ( For reference, see also: https://cmake.org/Wiki/CMake_Version_Compatibility_Matrix. |
Idea: set 3.5 (3.5.1) as the minimum CMake version everywhere. Thanks to: |
YARP is going to require CMake 3.5, soon (robotology/community#280). |
Check this out (kinematics-dynamics-install.md):
At the time of writing, the first three requirements apply now to several repos in our org. |
@jgvictores are you happy with #7 (comment)? Can we finally close this ticket? |
Perfect, yes! |
There seems to be an unwritten rule about always developing against the latest version of YARP. After having read robotology/community#173, I concluded that we may benefit from defining such policies as projects grow larger and more people get involved in their development. I perceive this as a bit of a pressing matter since several of my past commits were mostly aimed at dealing with deprecations, code no longer working due to certain upgrade and achieving backwards compatibility where possible. For example, I'm unsure about the minimum version of CMake I should be targeting at and in consequence I will miss some of the newer features. Additionally, it's not clear to which extent hacks (sometimes dirty ones) must be applied to support outdated software.
The YARP team has a nice page that covers all dependencies:
http://wiki.icub.org/wiki/YARP_Supported_Distributions
Seeing this from another perspective, care should also be taken to conform to the latest releases of upstream software - in case such policy applies, too (as stated in the first sentence, YARP could be a candidate in this respect). To list some of these issues, developers should be aware of incoming deprecations (see roboticslab-uc3m/yarp-devices@efb8962) and keep their documentation up-to-date (roboticslab-uc3m/installation-guides#1).
The text was updated successfully, but these errors were encountered: