fusesoc icon indicating copy to clipboard operation
fusesoc copied to clipboard

Synchronizing core and git repository version

Open ttsmit opened this issue 10 months ago • 1 comments

Thanks to FuseSoC, we have developed a setup with all our IPs being described in different core files. The IPs are distributed over different git repositories, some with just one IP and thus one core file, some are a collection of multiple IPs and multiple core files.

We develop and update these IPs with multiple developers. To help prevent breaking changes in different dependencies, we enforce some versioning. For this, we ideally use the existing commit, label, and release capabilities of git. The issue with this, however, is that updating a version in a core file and committing these changes, hides the old core file with its previous core version from FuseSoc. Resulting in versioned dependencies to become unresolvable.

A feature that would resolve this, is making FuseSoC capable of doing checkouts in local repositories to a commit or git version tag in the local repositories.

Or, am I missing another way to achieve this behavior? I have tried to play with the local provider and hooks, but no success yet. Or is the suggested method to manually checkout repositories to the required version before initiating FuseSoC?

Thanks!

ttsmit avatar Feb 25 '25 14:02 ttsmit

Yes, this behavior already exists in fusesoc.

Example of check-outing same library with fusesoc, but with different versions:

fusesoc library add open-logic-3.0.0 https://github.com/open-logic/open-logic --sync-version 3.0.0
fusesoc library add open-logic-3.1.0 https://github.com/open-logic/open-logic --sync-version 3.1.0

In this example I used tags defined in open-logic repository, but I could also used branches or commit-sha

rbrglez avatar Mar 04 '25 08:03 rbrglez