Skip to content

Team‐Managed Dependencies

Abhay Deshpande edited this page Oct 1, 2023 · 1 revision

Team-Managed Dependencies

This is a quick guide on the internal dependencies developed and/or managed by the team. A full list is:

Note that the ubuntu repo is now deprecated. We now use the FetchContent mechanism in CMake to download and install team dependencies.

How to update dependency versions

Go to the FetchContent_Declare() line in src/CMakeLists.txt and upate the GIT_TAG to point to the correct commit hash in the dependency repo. This will usually be the latest one.

⚠️ WARNING
The commit hash pointed to by GIT_TAG must be on the master/main branch. If it points to a feature branch, then things may break in the future when that branch is deleted.

Example

Suppose the latest commit in the HindsightCAN repository is 7c22def7f5f7f05ffb33b9088d766ad2e83dd7b0.

Then the FetchContent_Declare line in src/CMakeLists.txt would look like this:

FetchContent_Declare(
    HindsightCAN
    GIT_REPOSITORY https://github.com/huskyroboticsteam/HindsightCAN.git
    GIT_TAG 7c22def7f5f7f05ffb33b9088d766ad2e83dd7b0
)

Then a new PR is merged in HindsightCAN, and the latest commit is now 7397787fbb04687bf03c8fbac9a1db56f245fc9a.

Then src/CMakeLists.txt should be updated:

FetchContent_Declare(
    HindsightCAN
    GIT_REPOSITORY https://github.com/huskyroboticsteam/HindsightCAN.git
    GIT_TAG 7397787fbb04687bf03c8fbac9a1db56f245fc9a
)

Using a development version of a dependency

It's easy to use versions of dependencies that are still being developed, which is useful when new functionality needs to be tested in a dependent project. For example, if we're working on some new functionality in HindsightCAN on a feature branch, then src/CMakeLists.txt can be updated to point to a commit in that feature branch to install and test that functionality. This should be just for development, and when being merged, src/CMakeLists.txt should always point to the master branch of its dependencies.

Clone this wiki locally