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é
[1]
https://github.com/blobbsen/repo-handson