Hi,
I like the idea. I think repo is going to work better for this kind of stuff and also given the amount of git repositories we are handling.
Imho repo is the better choice compared to git submodule, which I so far only used in quite basic no-dependency projects to "bind"one common-ci repo.
I would also use branches/tags inside the repo repository. For instance, branch "master" is mapped to all master branches from all git repositories, then branch "version1" points to specific versions or revisions. This way it can be used both for building/testing development + releases.
I made a spike/hands-on [1] last night to get a better understanding of repo, because I so far only consumed/used it. The created "repo" clones all necessary repositories for the accelerate3g5 CN stack, but the default.xml manifest already holds all Osmocom-CellNet repositories mentioned in this thread. So one can already switch between "default" and "accelerate3g5" project as well as add new projects.
My understanding is that we need branches/tags to use repo for several Osmocom-CellNet projects (not optional). That's why I created "accelerate3g5" branch where release (candidate) tags of actual git repositories can be tested and tagged as release (candidate) within the "accelerate3g5" repo branch. The tested/verified state within the accelerate3g5 branch will be then merged to the master and tagged as a release to detach its state from HEAD.
...and then everybody can easily test it by switching the repo repo to "3g" branch, then calling repo sync + build_all.sh
Inspired by your post I added a script to build the accelerate3g5 CN stack to the repo repository, so one can build the entire stack with 3 lines:
$ repo init -u https://github.com/blobbsen/repo-handson -m accelerate3g5.xml $ repo sync $ .repo/manifests/build_accelerate3g5.sh
Note: should work on FreeBSD too (gmake/make topic)
Probably worth discussing is the topic whether mentioned build script should live in the repo repository or in osmo-ci (if we agree to add osmo-ci)?
Although, osmo-ci sounds like a good place I like the fact one can put those build scripts also in the repo repository itself. Perhaps an osmo-repo helper script, which holds some handy shortcuts à la switchToProject, switchToBranch, because to switch branches or project one basically uses the three above mentioned lines again (cumbersome).
What about using a Makefile instead of a build_all.sh script? We can ten perhaps paralelize some autoconf building between repositories which have no depndencies to speedup build/test time.
Interesting idea! :)
What do you think about [1] in general?
Cheers, André